Estoy tratando de poner mi controlador en modo de suspensión y despertarlo en una cierta cantidad de desbordamiento del temporizador. El código es el siguiente:
//*******TIMER 2 INITILIZATION will be used
TCCR2=0X07; //clock source select, prescaler
TIMSK=0X40; //timer 2 interrupt selected
TCNT2=0X00; // timer resistor
sei();
// controller sleep mode
set_sleep_mode(SLEEP_MODE_PWR_SAVE); // sleep mode selected
sleep_enable(); // set SE bit
sleep_cpu(); // sleep mode activated
do
{
if(count>=1000) // min delay
{
sleep_disable(); // SE bit reset
_delay_ms(1000);
print("waking up.....");
_delay_ms(2000);
cmd(0xc0);
print("AT+CFUN=1");
_delay_ms(1000);
transmit("AT+CFUN=1\r\n");
_delay_ms(1000);
_delay_ms(2000);count=0;
break;
}
else
{
print("sleep");
sleep_enable();
sleep_cpu();
}
} while (1);
el ISR correspondiente es el siguiente
ISR(TIMER2_OVF_vect)
{
count++;
}
El problema es que no sale del modo de suspensión.
Estoy usando un reloj interno de 8MHz y timer2. editar: encontré esta descripción en la hoja de datos, lo que significa que tengo que usar un reloj asíncrono para el temporizador 2 (es decir, proporcionado por un osc de cristal externo). ¿Hay alguna forma de que pueda hacer esto con la ayuda de un reloj interno?
Como dijiste, el temporizador 2 solo se puede usar con Xtal externo en modo de ahorro de energía.
mike chispa
pranjal khanduri
mike chispa
mike chispa
pranjal khanduri
mike chispa
Asmyldof
pranjal khanduri
julián
pranjal khanduri