Guarda, ho compilato e caricato ora uno sketch di test.
byte stato=1;
void setup() {
cli();//fermo gli interrupt
TCCR0A &= ~((1<<COM0A0) | (1<<COM0A1)); //disattivi gli interrupt del timer
//modalità contatore fino all'overflow
TCCR0A &= ~((1<<WGM01) | (1<<WGM00));
TCCR0B &= ~(1<<WGM02);
//prescaler a /8
TCCR0B &= ~((1<<CS02) | (1<<CS00));
TCCR0B |= (1<<CS01);
TCNT0 = 178; //valore iniziale
TIMSK |= (1<<TOIE0); //attivo un interrutp all'overflow
sei(); //riattivo gli interrupt}
pinMode(0, OUTPUT);
}
ISR (TIMER0_OVF_vect) { //funziona anche con TIM0_OVF_vect ovviamente
TCNT0 = 178;
digitalWrite(0, stato);
stato ^=1;
}
void loop(){}
Ho messo un led sul pin D0 per verificare che funzionasse correttamente. A me va sia con TIM0 che con TIMER0. Ed ora sono su Linux e con la toolchain ufficiale Atmel.
C'è qualcosa sul tuo PC che non va e che non capisco cosa sia... ![]()
Ci vorrebbero altri riscontri.