was ist indiesen timer falsch uund warum zähl er nicht gena

Gast #537132
Lesenswert?

Hallo leute könnt mir sagen warum er nicht genau bis eine sekunde zählt 
und ein interrupt gibt wenn diese sekunde fertig ist????Was ist falsch 
und wie soll ich es dann machen oder ändern???

;Interrupt vom Timercounter 1 overflow der alle sekunden einschalten 
soll
;-------------------------------------------------------------------
.org 0x008
      rjmp lop
;Initialisieren des Timers und deklarieren wenn interrupt soll starten
;-----------------------------------------------------------------------
INIT:    ldi TEMP,0b00000000
      out TCCR1A,TEMP
                                      ldi TEMP,0b00000100
      out TCCR1B,TEMP


      ldi  TEMP,0b00000100
      out TIMSK,TEMP






Gast #537175
Lesenswert?

Also
1. hast du einen Mega16 eingebunden,
2. musst du den Output-Compare-Interrupt von Timer 1 (16 bit) benutzen,
3. den CTC-Modus für den Timer 1 einschalten.

Lies dir das Datenblatt hierzu nochmal durch, dort ist alles gut 
beschrieben.
Gast #537183
Lesenswert?

ja bin ich einverstanden aber verstehe nicht wie man den 
Output-Compare-Interrupt von Timer 1 (16 bit) benutzen,und wie man den 
CTC-Modus für den Timer 1 einschaltet.
könnte jemanden mir das zeigen,wie ich das mache!!!
Gast #537193
Lesenswert?

Datenblatt Mega8 Seite 99:
CTC-Modus ist das Bit 3 im TCCR1B (WGM12).
Mit TIMSK bit 4 ist der Output-Compare-INT eingeschaltet.
In TCCR1B CS10 und CS12 einschalten (Teiler /1024) um den Timer zu 
starten,
OCR1AH mit 0x3d und OCR1AL mit 0x08 beschreiben (15624).
Den Globalen INT einschalten (SREG Bit I) und es läuft!

Ich hab's in einem vorigen Thread von dir in C schon beschrieben.

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