Страница 1 из 1
Внешнее прерывание INT0
Добавлено: Вс окт 10, 2021 21:14:28
afz
Коллеги, напомните, плз, какие особенности у внешних прерываний AVR. Конкретно - ATmega328P. Я настроил INT0 на срабатывание по фронту (биты ISC01 и ISC00 регистра EICRA ставил и 10, и 11 - и по заднему и по переднему фронту), взвел бит 0 (INT0) регистра EIMSK и подал на вход INT0 (PORTD бит 2) меандр 1 Гц. По идее, все, прерывание должно срабатывать раз в секунду. Однако, изба фигвам, срабатывает один раз, и тишина. Как будто надо куда-то послать сигнал подтверждения. Но ведь ничего такого не требуется? Ставил контрольную выдачу прямо в ISR(INT0_vect) - по фиг, после сброса 1 раз сработает, и тишина.
Вопрос стандартный - что я делаю не так? Блин, с этими СТМ32 совсем забыл АВР-ки...
Re: Внешнее прерывание INT0
Добавлено: Вс окт 10, 2021 23:09:54
Карбофос
Да никаких особенностей.
Может, контрольная выдача - запись в PORT настроенного на вход канала?
The I-bit is cleared by hardware after an interrupt has occurred, and is set by the RETI instruction to enable subsequent interrupts.
Может, через RET, а не через RETI выходите из обработчика?
Re: Внешнее прерывание INT0
Добавлено: Пн окт 11, 2021 01:57:30
Самсусамыч
[uquote="afz",url="/forum/viewtopic.php?p=4103941#p4103941"]Конкретно - ATmega328P.[/uquote]
Для проверить МК… светик подключить к выводу РВ5. Если шильд ардуины, то светик уже есть на борту.
ATmega328.hex
Re: Внешнее прерывание INT0
Добавлено: Пн окт 11, 2021 03:14:49
akl
Вопрос снят. Удалил.
Re: Внешнее прерывание INT0
Добавлено: Пн окт 11, 2021 08:51:14
afz
Разобрался. Все оказалось гораздо проще. Поганая Ардуино Нано. Мелкая, земляных ноги всего две, да я еще и гребёнку к ней припаял ногами в сторону деталей, видимость никакая... В общем, земляной провод к индикатору я нечаянно, вместо ноги GND, напялил на ногу D2 (PD2, она же INT0), а провод с 1 Гц на ногу D3 (PD3, INT1). Земля у них все равно осталась общей, через USB, а вход INT0 оказался заземленным. Исправил, и все пошло.
Извините за беспокойство...
