Forum: Mikrocontroller und Digitale Elektronik Timer Atmega328p startet nicht!


von Joschka T. (p1ngp0ng)


Lesenswert?

Wie im Titel schon erwähnt startet der Timer1 nicht.

TCCR1A &= ~((1<<COM1A1) | (1<<COM1A0) | (1<<COM1B1) | (1<<COM1B0));
        TCCR1A &= ((1<<WGM11) | (1<<WGM10));
        TCCR1B |= ((1<<WGM12) | (1<<CS12));
        TCCR1B &= ((1<<WGM13) | (1<<CS11) |(1<<CS10));
        TIMSK1 |= (1<<OCIE1A);
        OCR1A = 15625;

Prescaler 256 somit ergibt sich eine frequenz von 2Hz.

Ich lasse mir den Timerwert in TCNT1 per seriel ausgeben. Dieser beträgt 
immer 0 also schließe ich daraus das der Timer nicht startet.

Hat jemand eine Idee wodran das liegen kann?

Der Timer0 ist genau so konfiguriert und läuft ohne Probleme.

von Rainer B. (katastrophenheinz)


Lesenswert?

Joschka T. schrieb:
> TCCR1B |= ((1<<WGM12) | (1<<CS12));
> TCCR1B &= ((1<<WGM13) | (1<<CS11) |(1<<CS10));

Sicher? Oder ~ bei &= vergessen?

Wenn du das so machst wie oben angegeben und TCCR1x vorher nicht 
initialisiert waren, dann steht in beiden hinterher immer noch 0x00 
drin...

> Der Timer0 ist genau so konfiguriert und läuft ohne Probleme.
Das wage ich zu bezweifeln...

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Joschka T. schrieb:
> TCCR1A &= ~((1<<COM1A1) | (1<<COM1A0) | (1<<COM1B1) | (1<<COM1B0));
> TCCR1A &= ((1<<WGM11) | (1<<WGM10));

Hier stimmt auch etwas nicht. Wenn du alle Bits löschen willst, 
schreibst du am besten
1
TCCR1A = 0;

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Warum überhaupt dieser Aufwand? Ich hätte gedacht:
1
  TCCR1A = 0;
2
  TCCR1B = ((1<<WGM12) | (1<<CS12));
3
  TIMSK1 = (1<<OCIE1A);
4
  OCR1A  = 15625;

von S. Landolt (Gast)


Lesenswert?

(15625-1), um genau zu sein.

von Joschka T. (p1ngp0ng)


Lesenswert?

OK danke jetzt sehe ich es. Wenn man stundenlang davor sitzt, sieht man 
was man will und nicht wie es tatsächlich ist

Matthias S. schrieb:
> Hier stimmt auch etwas nicht. Wenn du alle Bits löschen willst,
> schreibst du am besten TCCR1A = 0;

Da hast du auch rest. Sind wohl noch überreste vom umkonfigurieren.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.