|
Как будить проц CxM3 переодически из Sleep? |
|
|
|
Oct 19 2012, 15:48
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата код не заработал - пришлось добавить пару NOP-ов после __enable_irq Я наблюдал похожие грабли: Код void TIMER0_IRQHandler (void) __irq { // что-то полезное T0IR = 0x01; // Clear match 0 interrupt } Влетал в прерывание два раза - до контроллера прерывания не доходило, что флаг прерывания сброшен. Нашёл рекомендации использовать инструкции для синхронизации (ISB, кажется), но сделал проще - перенёс сброс флага в начало. Конкретное место, в котором есть проблема, раскапывать поленился.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Oct 19 2012, 18:18
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(esaulenka @ Oct 19 2012, 18:48)  Я наблюдал похожие грабли: Да, ситуация похожая. Цитата(esaulenka @ Oct 19 2012, 18:48)  Влетал в прерывание два раза - до контроллера прерывания не доходило, что флаг прерывания сброшен. Нашёл рекомендации использовать инструкции для синхронизации (ISB, кажется), но сделал проще - перенёс сброс флага в начало. Конкретное место, в котором есть проблема, раскапывать поленился. Хотелось бы знать какой барьер правильней ставить... Помогает в общем-то любой, и даже NOP. Мне кажется более правильным использовать DSB, но так ли это...
|
|
|
|
|
Nov 23 2012, 09:03
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 28-06-10
Пользователь №: 58 174

|
Можно процессор переводить в STOP режим, Просыпаться по будильнику RTC ALARM. Из STOP можно выйти только по по внешнему прерыванию или по прерыванию будильника ALARM RTC, в этом режиме отключается вся периферия кроме внешних прерываний и часов реального времени. Потребление уменьшится и другие прерывания не надо будет отключать.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|