Timer1 mit CTC läuft nicht

Gast #3253824
Lesenswert?

Ich versuche zur Zeit Timer1 mit 1Sek laufen zu lassen.
1
OCR1A = 0x3D08;
2
  TCCR1B = (1<<WGM12);
3
  TIMSK1 = 1<<OCIE1A;
4
  TCCR1B |= (1<<CS12) | (1<<CS10);
5
sei();
6

7
ISR(TIMER1_COMPA_vect)
8
{
9
  Program::_instance->updateTimer();
10
}

Taktfrequens ist 16 MHz, aber ich komm kein einziges mal in die ISR..
Gast #3253912
Lesenswert?

wie kommst du auf 16 sek?

16 Hz frequenz / 1024 prescale -> ~1.6hz mit ocr auf ~16.000 sollte das 
doch eine sekunde sein?

Initialisiert wird das ganze vor der mainloop (zeig zuerst für 5 sek ein 
bild an, und dann initialisiere ich den timer im konstruktor von meiner 
klasse.

Ich weiß dass sie nicht ausgeführt wird, weil ich eine variable auf 1 
setze, die ich in der mainloop abfrage und eine ausgabe damit mache 
(z.B. blinklicht..)
Gast #3253914
Lesenswert?

> wie kommst du auf 16 sek?

Wegen des gefühlt häufigsten Fehlers: Falscher Takt. Standard beim 328p 
ist 1MHz -> 16 Sekunden statt nur einer.

> Ich weiß dass sie nicht ausgeführt wird, weil ich eine variable auf 1
> setze, die ich in der mainloop abfrage und eine ausgabe damit mache
> (z.B. blinklicht..)

Wie ist selbige deklariert? (oder ums kurz zu machen: zeig mal das 
zugehörige volatile her)

HTH

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren