Господа вопрос такой:
Написал прогу ,в AVR studio под 2313,прогнал ее в симуляторе
вроде все работает ,прошил контроллер.
А в схеме она работает мягко говоря некоректно.
т.е не соблюдаются условия переходов при сравнении
(BREQ,BRNE...).В РОН забиваеш 0 как запрет на исполнение,а в реальности кнопку жмеш и он отрабатывает,хотя должен сначала
увидеть 1 как разрешение в регистре???
команды и переходы неоднократно проверял,глоб. запреты ставил
подскажите хоть что-то!!!!!!!!!!!!!!!!
вопрос! AVR studio>микроконтоллер?
- Реклама
-
sergio
продолжение
схема проста
опишу кратко) .термодатчик(биметал),контроль нагрузки(токовое реле),исполнительное устр.(оптосимистор),кнопка
(одна)для предвыбора исп. устр.(их несколько) которым разрешено работать.Так вот изначально для всех устр. стоит запрет(использую рег.r19,r20,r21)т.е. забиты 0. дальше происходит сравнение(CPI R19,0
BREQ POWER N)если равно перейти на управление следующим устр.
Т.е.устр.не вкл. пока будут 0 в регистрах.В avr симуляторе так и
происходит. Шью в МК. Включаются устр.как-будто им заданы 1
либо игнорируются ф-ции BREQ ,BRNE и т.д.
Может надо отказаться от всех прерываний (rjmp reset,rjmp int_0 и т.д.) глобальный запрет не помог(CLI).
и еще ф-ции ,операторы имеют циклы ,как их организовать или убедиться что цикл какой-то ф-ции выполнен или это не нужно
вообще?
С ДРЕБЕЗГОМ боролся обкладывая опрос кн. и реле приличной паузой.
(одна)для предвыбора исп. устр.(их несколько) которым разрешено работать.Так вот изначально для всех устр. стоит запрет(использую рег.r19,r20,r21)т.е. забиты 0. дальше происходит сравнение(CPI R19,0
BREQ POWER N)если равно перейти на управление следующим устр.
Т.е.устр.не вкл. пока будут 0 в регистрах.В avr симуляторе так и
происходит. Шью в МК. Включаются устр.как-будто им заданы 1
либо игнорируются ф-ции BREQ ,BRNE и т.д.
Может надо отказаться от всех прерываний (rjmp reset,rjmp int_0 и т.д.) глобальный запрет не помог(CLI).
и еще ф-ции ,операторы имеют циклы ,как их организовать или убедиться что цикл какой-то ф-ции выполнен или это не нужно
вообще?
С ДРЕБЕЗГОМ боролся обкладывая опрос кн. и реле приличной паузой.
- Serega
- Говорящий с текстолитом
- Сообщения: 1529
- Зарегистрирован: Пн авг 22, 2005 21:02:22
- Откуда: Питер
Короч, скорее всего не сохраняется содержимое каких-то регистров при входе в обработчик прерывания. Также, нужно сохранять флаговый регистр.
Допустим, в обработчике используются R16 и R17. Пишем обработчик
InterruptProcessor:
push R16
in R16,SREG
push R16
push R17
cli
;код обработчика
sei
pop R17
pop R16
out SREG,R16
pop R16
push - помещаем в стек
pop - вытаскиваем из стека
Допустим, в обработчике используются R16 и R17. Пишем обработчик
InterruptProcessor:
push R16
in R16,SREG
push R16
push R17
cli
;код обработчика
sei
pop R17
pop R16
out SREG,R16
pop R16
push - помещаем в стек
pop - вытаскиваем из стека
Лучше быть первым в деревне, чем вторым в Риме

