www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik was ist indiesen timer falsch uund warum zähl er nicht gena


Autor: patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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







Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste doch mal das ganze Programm und gib die Quarzfrequenz und den uC 
an.

Zählt der gar nicht, viel zu schnell/langsam, oder weicht er geringfügig 
von einer Sekunde ab?

Autor: patrick (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
es ist ein ATmeg8 und die quarzfrequenz beträgt 16Mhz!!
der programm ist jetzt ganz dabei!!
Danke!!
Warte auf antwort vielen dank noch

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!!

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.