Ситуация следующая:
Устройство все время спит(загоняю его в повер-доун).
По прерыванию вотчдога(8с и только режим прерывания без ррежима системного сброса) просыпается и делает дело.
Но только вот в протеусе что-то не работает. Среда: CodeVisionAVR
Кусок кода:
CODE
void main (void)
{
...
#pragma optsize-
#asm("wdr")
WDTCSR=0b01111001; // 1024 - prescaler (WDE&WDCE - for setting prescaler)
WDTCSR=0b11100001; // interrupt mode
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
SMCR|= 0b00000101; // enable sleep mode (power-down mode)
#asm("nop")
#asm("nop")
#asm("nop")
PRR |= 0b10001100; // disable SPI TWI TIM1
#asm("nop")
#asm("nop")
#asm("nop")
#asm("sei")
while (1)
{
// Place your code here
send_BYTE(0x49);
#asm("sleep")
#asm("nop")
}
}
// Watchdog timeout interrupt service routine
interrupt [WDT] void wdt_timeout_isr(void)
{
WDTCSR|=(1<<WDIE);
WDTCSR|=(1<<WDIF);
// Place your code here
Send_Packet(0x69,0x45);
}
Правильно ли я его инциализирую или это глюки протеуса? Даташит перечитал несколько раз вроде все правильно, а глючит (пишет,что временная последовательность истекла и вотчдог впадает в аут!!!)
(((