Возможно ли выйти иэ режима Idle без перехода на вектор прерывания? Т.е. продолжить выполнение программы командой следующей после sleep. не переходя в прерывание (например по переполнению таймера). Тип контроллера: ATxmega256A3.
demiurg_spb
Oct 14 2010, 16:41
Как Вы себе это представляете? ИМХО для выхода из слипа нужно событие. Какие Вы можете предложить события кроме прерываний?
Сделайте пустое прерывание с reti и ваша инструкция выполнится через несколько тактов, которые на фоне длительности слипа капля в море.
_Артём_
Oct 14 2010, 17:02
Цитата(demiurg_spb @ Oct 14 2010, 19:41)
Как Вы себе это представляете? ИМХО для выхода из слипа нужно событие. Какие Вы можете предложить события кроме прерываний?
Сделайте пустое прерывание с reti и ваша инструкция выполнится через несколько тактов, которые на фоне длительности слипа капля в море.
Не хочется в bootloader-е прерывания задействовать.
demiurg_spb
Oct 14 2010, 17:32
А зачем спать в буте?! Каждый сам себе Буратино:-)
_Артём_
Oct 14 2010, 17:37
Цитата(demiurg_spb @ Oct 14 2010, 20:32)
А зачем спать в буте?! Каждый сам себе Буратино:-)
Из-за errata:
Цитата
Writing EEPROM or Flash while reading any of them will not work The EEPROM and Flash cannot be written while reading EEPROM or Flash, or while exe- cuting code in Active mode. Problem fix/Workaround Enter IDLE sleep mode within 2.5 uS (Five 2 MHz clock cycles and 80 32 MHz clock cycles) after starting an EEPROM or flash write operation. Wake-up source must either be EEPROM ready or NVM ready interrupt. Alternatively set up a Timer/Counter to give an overflow interrupt 7 mS after the erase or write operation has started, or 13 mS after atomic erase-and-write operation has started, and then enter IDLE sleep mode.
demiurg_spb
Oct 14 2010, 17:39
Мммм как неприятно... На какой контроллер errata?
_Артём_
Oct 14 2010, 17:46
Цитата(demiurg_spb @ Oct 14 2010, 20:39)
Мммм как неприятно... На какой контроллер errata?
ATxmega64/128/192/256A3 rev. B
demiurg_spb
Oct 14 2010, 17:49
Понятно. Слава Богу XMega не использую.
Цитата(_Артём_ @ Oct 14 2010, 21:02)
Не хочется в bootloader-е прерывания задействовать.
Видимо придётся. Я иных вариантов не вижу к сожалению.
_Артём_
Oct 14 2010, 17:57
Цитата(demiurg_spb @ Oct 14 2010, 20:49)
Понятно. Слава Богу XMega не использую. Видимо придётся. Я иных вариантов не вижу к сожалению.
да, наверное, придётся разбираться как прерывания размещать в boot-секторе.
rx3apf
Oct 14 2010, 18:23
Цитата(_Артём_ @ Oct 14 2010, 21:57)
да, наверное, придётся разбираться как прерывания размещать в boot-секторе.
А (по крайней мере в обычных mega) тривиально - один битик в управляющем регистре и готово дело, таблица векторов в буте. Только потом, перед переходом в основную программу, не забыть переставить обратно.
GDI
Oct 15 2010, 08:28
Там же написано Wake-up source must either be EEPROM ready or NVM ready interrupt. Да и альтернативные методы предлагаются с прерываниями. Так что без прерываний никак.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.