Форум РадиоКот https://radiokot.ru/forum/ |
|
вопрос! AVR studio>микроконтоллер? https://radiokot.ru/forum/viewtopic.php?f=2&t=482 |
Страница 1 из 1 |
Автор: | sergio [ Вт янв 24, 2006 22:28:04 ] |
Заголовок сообщения: | вопрос! AVR studio>микроконтоллер? |
Господа вопрос такой: Написал прогу ,в AVR studio под 2313,прогнал ее в симуляторе вроде все работает ,прошил контроллер. А в схеме она работает мягко говоря некоректно. т.е не соблюдаются условия переходов при сравнении (BREQ,BRNE...).В РОН забиваеш 0 как запрет на исполнение,а в реальности кнопку жмеш и он отрабатывает,хотя должен сначала увидеть 1 как разрешение в регистре??? команды и переходы неоднократно проверял,глоб. запреты ставил подскажите хоть что-то!!!!!!!!!!!!!!!! |
Автор: | Serega [ Вт янв 24, 2006 23:29:34 ] |
Заголовок сообщения: | |
Ну ты хоть код дай и схему, чтоб предметно разговаривать. А вообще, я подозреваю, что ты попросту забыл про дребезг ![]() |
Автор: | sergio [ Чт янв 26, 2006 21:01:26 ] |
Заголовок сообщения: | продолжение |
схема проста ![]() (одна)для предвыбора исп. устр.(их несколько) которым разрешено работать.Так вот изначально для всех устр. стоит запрет(использую рег.r19,r20,r21)т.е. забиты 0. дальше происходит сравнение(CPI R19,0 BREQ POWER N)если равно перейти на управление следующим устр. Т.е.устр.не вкл. пока будут 0 в регистрах.В avr симуляторе так и происходит. Шью в МК. Включаются устр.как-будто им заданы 1 либо игнорируются ф-ции BREQ ,BRNE и т.д. Может надо отказаться от всех прерываний (rjmp reset,rjmp int_0 и т.д.) глобальный запрет не помог(CLI). и еще ф-ции ,операторы имеют циклы ,как их организовать или убедиться что цикл какой-то ф-ции выполнен или это не нужно вообще? С ДРЕБЕЗГОМ боролся обкладывая опрос кн. и реле приличной паузой. |
Автор: | Serega [ Чт янв 26, 2006 21:36:10 ] |
Заголовок сообщения: | |
Короч, скорее всего не сохраняется содержимое каких-то регистров при входе в обработчик прерывания. Также, нужно сохранять флаговый регистр. Допустим, в обработчике используются 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 - вытаскиваем из стека ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |