Hallo,
ich will nicht unbedingt wegen jeder Sache einen neues Thema eröffnen, deshalb schreibe ich nochmal hier rein. Ich will den MPU aller x Minuten etwas machen lassen, also:
unsigned int flag = 0;
int main {
TCCR0B |= (1<<CS02) | (1<<CS00); //setzt vorteiler auf 1024
TIMSK0 |= (1<<TOIE0); //setzt Interrupt bit
sei(); //aktiviert interrupt
while (1)
{do something if flag 3662}
}
ISR(TIMER0_OVF_vect)
{
flag++;
}
Nun funktioniert alles soweit gut, aber die Zeit stimmt nicht. Ausgegangen davon, dass der 2560er 16 MHz hat habe ich folgendes gerechnet:
16000000 (MPU)/1024 (für vorteiler)/256 (Überlaufbit) = 61, ... pro Sekunde
Das heißt mal 60 (für 1 Minute) müsste es 3662 mal durchlaufen um eine Minute zu erreichen. Nur sind es in Realität 50 Sekunden (etwa). Ich habe es schon mit 20MHz probiert aber da kommt zuviel bei raus (4578 = 1 Minute 8 Sekunen).
Welchen Fehler habe ich in meiner Rechnung?
Danke für die Hilfe
Robert
Lesezeichen