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

В поисках истины
  
Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923

|
Снова здарова! Научился таки усыплять проц, КРУТО!  А вот будить не научился. Основная задача просыпаться периодически и и опрашивать разную периферию, после чего снова спать. На AVR8 было всё просто, после усыпления проца он мог просыпать по прерыванию таймера2 и продолжать с момента усыпления. Тут же я немного в замешательстве. Вроде как можно будить проц по Событиям и Прерываниям, а пот по факту не получается  Подскажите как чего сделать то? Помогите. ПЛЗ. ЗЫ Видать основная проблема в том, что я не до конца разобрался в чём разница между прерываниями и событиями...
|
|
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 25)
|
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
|
|
|