200ms, Timer1 Problem, Prescaler 256

Gast #2529892
Lesenswert?
• ▲
▼
Hallo, ich schreib gerade mein erstes Programm für meinen ATmega1284p. 
Ich wollte mit einem Timer ein Zeitsignal von 200ms erzeugen. Ich hab 
mir ausgerechnet, dass beim CTC Modus des Timers 1, dieser Wert auf 
15624 gestellt werden müsste, mit einem Tool bin ich dann auf den Wert 
0x3D08 gekommen, was ja doch relativ nahe dran liegt :-)

Leider stimmt die Zeit aber kein bisschen, daher hab ich wohl irgendwas 
falsch gemacht. Hier sind meine bescheidenen Anfänge :-(

1
TCCR1A = (1<<WGM01); // CTC Modus
2
TCCR1B |= (1<<CS12); // Prescaler 256
3
TCCR1B &= ~ (1<<CS10) | (1<<CS10);
4
OCR1A = 0x3D08;
5

6
TIMSK1 |= (1<<OCIE1A);


1
ISR (TIMER1_COMPA_vect)            //5)Führe diese ISR aus wenn TCNT2==OCR2
2
{
3
    wdt_reset();
4
    sekunde++;
5
    uart_puti(sekunde);
6
}


Grüße Toni
Gast #2529894
Lesenswert?
• ▲
▼
> Leider stimmt die Zeit aber kein bisschen, daher hab ich wohl irgendwas
> falsch gemacht. Hier sind meine bescheidenen Anfänge :-(

Was bekommst du denn für eine Zeit heraus? Wie groß ist denn die 
Abweichung vom gewünschten?
Gast #2539967
Lesenswert?
• ▲
▼
ich steh jetzt vor nem ähnlichen Problem.
1
TCCR1B |=  (1<<CS12) | (1<<WGM12) ;
2
TCCR1B &= ~  (1<<CS11  ) | (1<<CS10);
3
OCR1A = 15624-1;
4

5
TIMSK1 |= (1<<OCIE1A);


Ich brauch einen 200ms Takt, laut Datenblatt meines mega644p befindet 
sich WGM12 im TCCR1B register.

CS12 muss gesetzt sein, CS11 und CS10 sind auf 0 zu setzen


Ich bekomme einen Takt von etwa 800ms, anstatt 200ms.


Habt ihr eine Idee was falsch ist?
Gast #2540016
Lesenswert?
• ▲
▼
> TCCR1B |=  (1<<CS12) | (1<<WGM12) ;
> OCR1A = 15624-1;
> 200ms erwartet

Mode 4, CTC + Prescaler 256 + 15625 steps

=> Ist deine F_CPU und deine externe Taktquelle 20 MHz?
=> Stehen die Fuses auf Ext. Taktquelle?
=> Ist CKDIV8 unprogrammiert (entgegen Werkseinstellung)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.