Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
28.11.2011, 16:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от kison
|
Ни то, ни другое. Учитесь сразу делать правильно
|
Ув. Kison, и какой обработчик, по Вашему мнению, нужен для прерывания (запрос на которое сбрасывается при переходе на вектор этого самого прерывания), например, для EXT_INT0, при условии, что это прерывание не используется (не разрешено) и переход может быть только случайным.
Чтобы не быть голословным приведите пример.
|
|
|
|
28.11.2011, 16:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от alvadep
|
Чтобы не быть голословным приведите пример.
|
while(1){}; // ждем сброса от WDT
Это конечно тоже не панацея, но любой другой вариант еще хуже. Где гарантия, что заодно не взвелось еще пара флагов запроса на прерывание? Или - не сбросились необходимые? В смысле - взвелись/сбросились от помехи. Если просто выйдем то дальше может стать еще хуже. Если есть возможность - такие события хорошо еще и как то сохранять для истории. Выделив например место в еепром и увеличивая там содержимое. Этакий счетчик глюков. Потому как такой несанкционированный запрос может быть не только от помех - это может и ошибка в самой программе быть. Лог поможет в ее локализации. А ошибки, как считается, есть в любой программе Минималистские варианты типа мигалки светодиодом не в счет.
|
|
|
|
28.11.2011, 17:08
|
|
Заблокирован
Регистрация: 14.04.2008
Адрес: Украина, совсем рядом от террористов!
Сообщений: 388
Сказал спасибо: 32
Сказали Спасибо 85 раз(а) в 62 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от DAVE_ELEKTRIK
|
И самое главное для себя, из ранее прочитанных постов, я выбираю способ вот такой:
cseg ; Начало кодового сегмента
.org 0x0000
rjmp RESET ; Обработка сброса
.org 0x0001
rjmp EXT_INT0 ; внешнее прерывание IRQ0
reti
.org 0x0002 ; rjmp EXT_INT1 ; внешнее прерывание IRQ1
reti
|
Я так делаю, конкретно для 8515:
.cseg
.org 0
rjmp RESET ; Прерывание по питанию
reti ;rjmp EXT_INT0 ; Внешние прерывание IRQ0
reti ;rjmp EXT_INT1 ; Внешние прерывание IRQ1
reti ;rjmp TIM1_CAPT ; Таймер 1 захват
reti ;rjmp TIM1_COMPA ; Совпадение таймер 1 A
reti ;rjmp TIM1_COMPB ; Совпадение таймер 1 B
reti ;rjmp TIM1_OVF ; Переполнение таймер 1
reti ;rjmp TIM0_OVF ; Переполнение таймер 0
reti ;rjmp SPI_STC ; Передача по SPI окончена
reti ;rjmp USART0_RXC ; Чтение окончено
reti ;rjmp USART0_DRE ; Регистр данных пуст
reti ;rjmp USART0_TXC ; Передача окончена
reti ;rjmp ANA_COMP ; Прерывание аналогового компаратора
reti ;rjmp EXT_INT2 ; Внешние прерывание по IRQ3
reti ;rjmp TIM0_COMP ; Совпадение таймер 0
reti ;rjmp EE_RDY ; EEPROM готова
reti ;rjmp SPM_RDY ;
RESET:
Удобно тем что удалил "reti ;" не нужно каждый раз писать.
Я бы посоветовал всегда делать шаблон для конкретного камня, таблицу векторов, инициализацию стека периферию, даже если что-то не используете, потом пригодится.
Насчет nop и reti, kison 100% прав, обработчик это правильно, по уму, но это как зарядка по утрам все знают, что она полезна, и те, кто делают и те, кто нет, при этом живут одинаково, болеют, умирают!!! По собственному опыту nop конечно это зло, всегда ставил reti, проблем небыло. Думаю для начинающего можно обойтись и без обработчиков, тратя время, но то с чем можете и не столкнутся, особенно если это радиолюбительские конструкции.
|
|
|
|
28.11.2011, 17:10
|
|
Заблокирован
Регистрация: 14.04.2008
Адрес: Украина, совсем рядом от террористов!
Сообщений: 388
Сказал спасибо: 32
Сказали Спасибо 85 раз(а) в 62 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
|
|
|
|
28.11.2011, 17:15
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от kison
|
while(1){}; // ждем сброса от WDT
Это конечно тоже не панацея, но любой другой вариант еще хуже.
|
Хуже "вЭчный цЫкл" уже ничего быть не может...
Сообщение от kison
|
Где гарантия, что заодно не взвелось еще пара флагов запроса на прерывание? Или - не сбросились необходимые? В смысле - взвелись/сбросились от помехи.
|
Вот-вот... Вачдог управляется программно, произошло его отключение... и "вЭчный цЫкл... Жесть!!!
2 ALL
Все эти вопросы, увы, не для начинающих... Они их только пугают... Годик назад уже терзали эту тему... Не всё там так просто... как кажется...
|
|
|
|
28.11.2011, 17:20
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от ALEKSEY188
|
Не сильно ли круто!!!
|
Нормально...
Если вачдог хардварно, а инициализация периферии полная... то... как один из простых вариантов...
А выходить неизвестно куда, пришёв неизвестно откуда - ВИЛЫ!!!
|
|
|
|
28.11.2011, 17:30
|
|
Заблокирован
Регистрация: 14.04.2008
Адрес: Украина, совсем рядом от террористов!
Сообщений: 388
Сказал спасибо: 32
Сказали Спасибо 85 раз(а) в 62 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от st_1
|
А выходить неизвестно куда, пришёв неизвестно откуда - ВИЛЫ!!
|
В этом случае обработчик, мертвому припарка, особенно если изделие уже у заказчика, за километров этак 500!
|
|
|
|
28.11.2011, 17:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
28.11.2011, 17:46
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от ALEKSEY188
|
В этом случае обработчик, мертвому припарка, особенно если изделие уже у заказчика, за километров этак 500!
|
Угу... аж сто пять раз...
Думать о устойчивости работы девайса нужно пока он на столе...
И если предъявлены повышенные требования к устойчивости, то и простыми методами не обойтись... т.е. и обработчик должен быть "умный", и на железе не экономить...
|
|
|
|
28.11.2011, 18:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Вообще, раз уж речь идет в контексте АВР, то в компиляторах существуют методы обработки отсутствующих обработчиков. К примеру в avr-gcc (WinAVR) есть "еще один" вектор - EMPTY_INTERRUPT. Можно написать к нему обработчик. Этот обработчик будет подставлен для всех прерываний, которым не определили обработчик явно.
Сообщение от st_1
|
Все эти вопросы, увы, не для начинающих... Они их только пугают...
|
Возможно. Но можно начать сразу делать правильно, пусть и не понимая причин. Понимание придет. А переучиваться не придется
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:18.
|
|