Timer0 ???

Gast #105634
Mahlzeit.

Ich habe folgendes Programm geschrieben um mir selbst die
Funktionsweise des Timer0 näherzubringen.
Nun funktioniert dieses Programm anscheinend nicht.
Wo habe ich den Fehler gemacht? Ich wäre echt für ein wenig Hilfe
dankbar.

.include "m8def.inc"

.def temp=r16
.def T0IFLAG=r20
.equ TimerStart=256-244 ;244*1024 ca 250000 Taktzyklen (@10MHz)

.org  0x0000    ;Einsprung für das Programm
  rjmp main  ;Reset Handler
.org  OVF0addr
  rjmp tim0ovf


main:
  ldi temp, LOW(RAMEND)      ; LOW-Byte der obersten RAM-Adresse
        out SPL, temp
        ldi temp, HIGH(RAMEND)     ; HIGH-Byte der obersten
RAM-Adresse
        out SPH, temp
  rcall init

ausgabe:    ;Endlosschleife Blinker
  cpi T0IFLAG,1  ;I-Flag gesetzt???
  brne weiter  ;Nein. Ist nicht gesetzt
  ldi T0IFLAG,0  ;I-Flag quittieren
  inc r18    ;r18 hochzählen
  cpi r18,0x27  ;Sekunde erreicht?
  brne weiter  ;nein
  ldi r18,0
  inc r19    ;Sekundenzähler incrementieren
  mov r21,r19
  com r21
  out PORTC,r21
weiter:
  rjmp ausgabe


tim0ovf:
  ldi r17,TimerStart  ;Zeitzähler für 25ms vorladen
  out TCNT0,r17
  ldi T0IFLAG,1  ;Timer0 I-Flag setzen
  reti    ;Rücksprung aus der Interruptroutine


init:
  ldi r17,0xff  ;
  out DDRC,r17  ;Port C auf Ausgabe schalten

  ldi r17,0x00  ;Alle Lampen aus
  out PORTC,r17

  ldi r17,TimerStart  ;Zeitzähler für 25ms
  out TCNT0,r17

  in r17,TIMSK
  ori r17,0x02
  out TIMSK,r17

  ldi r18,0
  ldi r19,0  ;Sekundenzähler
  ldi T0IFLAG,0

  ldi r17,0x05  ;Vorteiler für Timer0 Clock/1024
  out TCCR0,r17

  sei    ;Interrupts freigeben
  ret    ;Rücksprung ins Hauptprogramm
Gast #105637
Oh. Sorry.

Die Einstellung der Interruptmaske des Timers funktioniert (bei mir) so
nicht.

  in r17,TIMSK
  ori r17,0x02
  out TIMSK,r17

Mit folgender Änderung funzt es.

  ldi r17,1<<TOIE0
  out TIMSK,r17

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.