[an error occurred while processing this directive]
Надеюсь, это поможет...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
aaa
Надеюсь этот кусок поможет
.......
/*Если прерывание TC0 было до прерывания sleep то в первом
ASSR-задержка не отрабатывалась. Отработаем ее здесь до засыпания и
пока прерывания запрещены, если SaveSleepData их разрешит и
произойдет прерывание, то оно уже будет отработано с задержкой из-за
того, что тип прерывания уже установлен "по уровню" */
// Write dummy value to Control register
IN R16,OCR0
OUT OCR0,R16
?0005:
//Wait until TC0 is updated
IN R16,ASSR
ANDI R16,LOW(7)
BRNE ?0005/* в данном регистре оставим
только прерывание часов, если оно разрешено */
LDI R16,(1<<TOIE0) ;1
AND R16,R25
OUT TIMSK,R16
// Запретим WatchDog Timer
ldi R16,((1<<WDTOE)|.... /*
*/ (WDE_V<<WDE)| /*
*/ (WDP2_V<<WDP2)| /*
*/ (WDP1_V<<WDP1)| /*
*/ (WDP0_V<<WDP0)) ;LOW(24)
// Сбросим бит WDTOE
OUT WDTCR,R16
// Теперь сбросим и WDE
ANDI R16,~(1<<WDE)
OUT WDTCR,R16
?0009:
..............
SEI
SLEEP
NOP /* !!! Обязательно, а то флаги не взодятся */
NOP
NOP
.......
Составить ответ
|||
Конференция
|||
Архив
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru