Probleme mit Timer 1 im CTC-Modus

Gast #1737297
Lesenswert?
• ▲
▼
In einem größeren Projekt soll der Timer 1 des ATmega644(P) jede Sekunde 
einen Interrupt auslösen. Dieser wird auch ausgelöst, nur ungefähr 100x 
in der Sekunde. Der AVR läuft mit 18,432 MHz. Das ganze Projekt ist in 
Assembler verfasst.

1
    ldi     XL,(1<<WGM12)|\
2
               (1<<CS12)|(1<<CS10)      ; Taktvorteiler 1024, CTC-Modus
3
    sts     TCCR1B,XL                   ; Und Taktvorteiler setzen
4
    ldi     XL,(1<<OCIE1A)              ; Interrupt bei Compare
5
    sts     TIMSK1,XL                   ; Und setzen
6
    ldi     XL,LOW(18000)               ; Comparewert für COMP1A mit 18000
7
    sts     OCR1AL,XL
8
    ldi     XH,HIGH(18000)
9
    sts     OCR1AH,XL

Ich suche nun schon das halbe Wochenende :(
Gast #1737323
Lesenswert?
• ▲
▼
1. Registerverwechslung, wie Peter schrieb.
2. In den Datenblättern steht außerdem, daß bei 16-Bit-Registern
z.B. das OCR1AH,L das High-Register zuerst zu laden ist, dann das
Low-Register. Hat mit der internen Registerstruktur zu tun.
Achtung beim Auslesen ist das genau umgekehrt! Also erst Low-Teil,
dann High-Teil, (siehe ADC)

Schönen Sonntag noch, sogar mit Sonne.......
Gast #1737328
Lesenswert?
• ▲
▼
Hallo,

wenn die Zeit wirklich genau 1s sein soll, muss diese Zahl etwas anders 
lauten. Statt

> ldi     XL,LOW(18000)               ; Comparewert für COMP1A mit 18000

muss es sein:

>> ldi     XL,LOW(17999)               ; Comparewert für COMP1A mit 18000

(entsprechend für den anderen Wert).

Bei einem CTC-Zählwert der Grösse X muss in die Register der Wert X-1 
geschrieben werden (da der Zähler bei Null beginnt).

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.