Es extraño y raro. Estoy tratando de parpadear un LED en PD0 a 2hz, pero no funciona. Me parece que mientras loop no funciona en absoluto. He revisado el código triple. ¿Cuál es el problema aquí?
uint8_t c=0;
int main(void){
DDRD= 1<<0 ;
TCCR0 = (1 << CS02) | (1 << CS00); // (clk_i/o )/1024 ( Prescaler)
TIMSK |= 1<< TOIE0;
sei();
while (1){
if ( c >=30 ) { PORTD ^= 1<<0; c=0; } //61.035/30= 2.034 hz
}
}
ISR (TIMER0_OVF_vect){
c++; //16000000/1024/256=61.035 hz
}
Por supuesto, yo sé la solución. Es mediante la adición de una línea aleatoria de código al bucle while, y funciona de nuevo. ¡¡Extraño!! ¿Cuál sería el problema? error del compilador ??
uint8_t c=0;
int main(void){
DDRD= 1<<0 ;
TCCR0 = (1 << CS02) | (1 << CS00); // (clk_i/o )/1024 ( Prescaler)
TIMSK |= 1<< TOIE0;
sei();
while (1){
if ( c >=30 ) { PORTD ^= 1<<0; c=0; } //61.035/30= 2.034 hz
_NOP();
}
}
ISR (TIMER0_OVF_vect){
c++; //16000000/1024/256=61.035 hz
}