интересное дело..
открываю даташит на атмегу64а, страница 88, про регистр EICRB который определяет условия по которым происходит генерация прерываний для INT7...INT4
и вижу таблицу вконце страницы для битов ISCn1 и ISCn0 при их значениях 01 в таблице значится Reserved, тоесть вроде как по смыслу зарезервировано, не используется, хотя в тексте выше есть некий намек что есть условие для генерации прерывния по любому изменению уровня, это я так предполагаю что там написано, потому как использовал корявый перевод гугла. но если не знаешь толком английского или не заострять внимание, а просто взглянуть на таблицу то такого режима там нет, написано- зарезервировано. остальные по спаду, фронту, и низкому уровню.
но на самом деле если биты регистра EICRB ISCn1 ISCn0 выставить в 01 то прерывания будут генеририроваться и по спаду и по фронту. непонятно, почему они явно не указали это в таблице?
кстати в официальном даташите на атмегу 128 тоже ни фига не указано что если выставить значения битов 01 то прерывания будут генерироваться при любом изменении уровня
однако в сети гуляет русский перевод на атмегу 128, вот в нем в таблице и написано что при значении битов 01 прерывание генерируется при любом изменении уровня на INT7-INT4
после того как я наткнулся на это, решил проверить в авр студии на атмеге 64а, и действительно прерывание в симуляторе происходят при любом изменении уровня на INT7-INT4
собственно, незнаю, возможно один я только об этом незнал, но меня удивляют эти составители даташитов. зачем нужно было писать что это положение зарезервировано, хотя на самом деле оно работает
Прерывание происходят при любом изменении уровня.
- КРАМ
- Друг Кота
- Сообщения: 25149
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Интересное дело..
Недокументированые фичи в МК - достаточно распространенное явление.
Если в даташите не гарантируется фича, то она может в принципе в очередной ревизии кристалла исчезнуть, либо работать некорректно в одном из режимов использования.
Если в даташите не гарантируется фича, то она может в принципе в очередной ревизии кристалла исчезнуть, либо работать некорректно в одном из режимов использования.
Re: Интересное дело..
надо в железе проверить.
в любом случае в авр студии это работает, если работает значит программисты знали об этой возможности и целенаправленно внесли ее в программу... я так думаю
вот из даташита на атмегу 64а, может если кто хорошо знает английский скажет, есть ли тут явное упоминание о режиме при котором генерируется прерывание по любому изменению уровня на INT
The External Interrupts 7 - 4 are activated by the external pins INT7:4 if the SREG I-flag and the
corresponding interrupt mask in the EIMSK is set. The level and edges on the external pins that activate
the interrupts are defined in table Interrupt Sense Control below. The value on the INT7:4 pins are
sampled before detecting edges. If edge or toggle interrupt is selected, pulses that last longer than one
clock period will generate an interrupt. Shorter pulses are not guaranteed to generate an interrupt.
Observe that CPU clock frequency can be lower than the XTAL frequency if the XTAL divider is enabled.
If low level interrupt is selected, the low level must be held until the completion of the currently executing
instruction to generate an interrupt. If enabled, a level triggered interrupt will generate an interrupt request
as long as the pin is held low.
в любом случае в авр студии это работает, если работает значит программисты знали об этой возможности и целенаправленно внесли ее в программу... я так думаю
вот из даташита на атмегу 64а, может если кто хорошо знает английский скажет, есть ли тут явное упоминание о режиме при котором генерируется прерывание по любому изменению уровня на INT
The External Interrupts 7 - 4 are activated by the external pins INT7:4 if the SREG I-flag and the
corresponding interrupt mask in the EIMSK is set. The level and edges on the external pins that activate
the interrupts are defined in table Interrupt Sense Control below. The value on the INT7:4 pins are
sampled before detecting edges. If edge or toggle interrupt is selected, pulses that last longer than one
clock period will generate an interrupt. Shorter pulses are not guaranteed to generate an interrupt.
Observe that CPU clock frequency can be lower than the XTAL frequency if the XTAL divider is enabled.
If low level interrupt is selected, the low level must be held until the completion of the currently executing
instruction to generate an interrupt. If enabled, a level triggered interrupt will generate an interrupt request
as long as the pin is held low.
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: Интересное дело..
У меня документация не очень свежая(mega64/L, mega64A) и там из табличек видно, что EICRA не может генерировать прерывания по любому изменению, а EICRB может.
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: Прерывание происходят при любом изменении уровня.
Страница из PDF которым я пользуюсь.
- Вложения
-
- ATMEGA64A_Страница_066.png
- (70.46 КБ) 321 скачивание