Hallo,
aus dem Datenblatt werde ich nicht so richtig schlau.... Meine Frage:
Ich habe einen Atmega 644 mit 16Mhz am laufen, nu will ich einen
Timerinterrupt alle 1ms auslösen.
Ich muss den Timer 1 nehmen da Timer 0 schon belegt ist.
Meine Konfig sieht so aus:
1 | TCCR1B |= (1<<CS10) | (1<<CS11) | (1<<WGM12); // Prescaler 64
|
2 | TCNT1 = 0;
|
3 | OCR1AH = 256; // Load register Ist das richtig so
|
4 | OCR1AL = 256; // Load register
|
5 | TIMSK1 |= (1<<OCIE1A); // Interrupt nach Overflow
|
Ich weiss garnicht wie ich den OCR1AH lade Im Datenblatt steht halt
OCR1AH / OCR1AL , high und low.
Aber wie muss ich das Handhaben, das ist bestimmt falsch.
Nach meiner Berechnung müsste ca. 1 ms rauskommen.
Prescaler 64 also:
16.000.000Hz/64/256 = 976 = 0,001s = 1ms ca.
Wenn ich aber einen counter in der ISR erhöhe und ich den counter bei
1000 in der main Abfrage sind das nie und nimmer 1 Sekunde. Diese 1000
werden viel heufiger erreicht. Bei ca. 100000 habe ich eine Sekunde.
Kann mir einer helfen ?