Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Какие команды вставить?

Непрочитано 08.11.2013, 18:28  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Какие команды вставить?

Прошлая задача имхо была интереснее. Еще интереснее было бы решить задачу с помощью вачдога - не надо вообще векторов (в меге можно определить откуда произошел сброс) но там в четыре команды не уложиться перед циклом aaa.
Реклама:
oleg110592 вне форума  
Непрочитано 08.11.2013, 18:45  
zelvans
Частый гость
 
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
zelvans на пути к лучшему
По умолчанию Re: Какие команды вставить?

До ответа осталось немного, начало-то правильное.
zelvans вне форума  
Непрочитано 08.11.2013, 19:00  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Какие команды вставить?

Код:
  rjmp init ; Reset Handler
  rjmp EXT_INT0 ; IRQ0 Handler
  rjmp EXT_INT1 ; IRQ1 Handler
  rjmp TIM2_COMP ; Timer2 Compare Handler
  rjmp TIM2_OVF ; Timer2 Overflow Handler
  rjmp TIM1_CAPT ; Timer1 Capture Handler
  rjmp TIM1_COMPA ; Timer1 CompareA Handler
  rjmp TIM1_COMPB ; Timer1 CompareB Handler
  rjmp TIM1_OVF ; Timer1 Overflow Handler
  rjmp TIM0_OVF ; Timer0 Overflow Handler
  rjmp SPI_STC ; SPI Transfer Complete Handler
  rjmp USART_RXC ; USART RX Complete Handler
  rjmp USART_UDRE ; UDR Empty Handler
  rjmp USART_TXC ; USART TX Complete Handler
  rjmp ADC ; ADC Conversion Complete Handler
  rjmp EE_RDY ; EEPROM Ready Handler
  rjmp ANA_COMP ; Analog Comparator Handler
  rjmp TWSI ; Two-wire Serial Interface Handler
  rjmp SPM_RDY ; Store Program Memory Ready Handler

init:
xxx ;нужно вставить 4 команды
xxx ;мы их уже знаем 
xxx
xxx
aaa:
nop
rjmp aaa
TIM0_OVF: ; осталось только это добавить и вуаля
....

bbb:
nop
rjmp bbb
oleg110592 вне форума  
Непрочитано 08.11.2013, 19:39  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Какие команды вставить?

Сообщение от zelvans Посмотреть сообщение
Задача - шутка.
Сообщение от zelvans
продумал этюд
Надо же, то чем вы тут оба занимаетесь ничего общего с вышеозвученным не имеет, и называется проще - аппаратно_привязанные к AVR извращения...
Это так , мысли вслух. Продолжайте.
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 08.11.2013 в 20:16.
dosikus вне форума  
Непрочитано 08.11.2013, 19:49  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Какие команды вставить?

спалил
oleg110592 вне форума  
Непрочитано 09.11.2013, 04:41  
zelvans
Частый гость
 
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
zelvans на пути к лучшему
По умолчанию Re: Какие команды вставить?

А кот похоже действительно злой, но разрешил продолжать.

цикл bbb прикрыт другим циклом.
dddd:
nop
rjmp dddd
bbb:
nop
rjmp bbb
zelvans вне форума  
Непрочитано 09.11.2013, 11:21  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Какие команды вставить?

nop
rjmp aaa
TIM0_OVF:
dec r16 ;ну так например
breq bbb ; breq/brne то разрешены... пока
dddd:
nop
rjmp dddd
bbb:
nop
rjmp bbb

изначально задача имела более практичное значение - можно сэкономить на векторах прерываний, при условии что есть только одно прерывание:
Код:
.CSEG
.ORG 0
start:
 ldi r16,HIGH(RAMEND) ; define stack
 out SPH,r16
 ldi r16,LOW(RAMEND)
 out SPL,r16
 call init 
main:
 call task1 
 call task2 
 call task3 
 rjmp main
 rjmp timer0_ovf
init:
 ldi r16, 1  
 out TCCR0, r16 
 out TIMSK, r16
 .....
 sei
 ret
task1:
 .....
 ret
task1:
 .....
 ret
task2:
 .....
 ret
task3:
 .....
 ret
timer0_ovf:
 .....
 reti

Последний раз редактировалось oleg110592; 09.11.2013 в 11:29.
oleg110592 вне форума  
Непрочитано 09.11.2013, 12:16  
zelvans
Частый гость
 
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
zelvans на пути к лучшему
По умолчанию Re: Какие команды вставить?

Главная моя мысль была - как из произвольного места кода попасть в другое произвольное без применения команд условных переходов br*, *jmp, *call. Усложнение с выходом из первого цикла привело к неразберихе. 4-мя командами по прерыванию выходим из первого цикла и вот находясь в призвольном месте прыгаем в bbb, ограничения на использование команд продолжают присутствовать.

init:
ldi r16, 1
sts TIMSK,r16
sts TCCR0,r16
sei
aaa:
nop
rjmp aaa
zelvans вне форума  
Непрочитано 09.11.2013, 13:03  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Какие команды вставить?

"Огласите весь список, пожалуйста"(c) - какие команды можно и какие нельзя,
ret и reti - можно? Если можно - в стек забиваем адрес возврата bbb, команда reti и мы уже в цикле bbb.
oleg110592 вне форума  
Непрочитано 09.11.2013, 13:28  
zelvans
Частый гость
 
Регистрация: 11.07.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 1 сообщении
zelvans на пути к лучшему
По умолчанию Re: Какие команды вставить?

reti , ret разрешены. Код можно не приводить. Все верно!
zelvans вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование AVR, FUSE и все что с этим связано dosikus AVR 1244 21.09.2022 12:14
Нелинейное компандирование - какие элементы можно использовать shock1 Микроконтроллеры, АЦП, память и т.д 5 29.12.2011 12:27
Какие существуют протоколы обмена rfid 125 khz ? Hron.OS Автоматика и аппаратура связи 2 03.03.2011 01:27
Помогите записать и передать команды с ПДУ 975 Электроника - это просто 15 14.12.2010 11:00
Какие команды идут к контроллеру ЧПУ? graham Производственное оборудование 15 28.04.2005 19:49


Часовой пояс GMT +4, время: 09:44.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.