mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer 0 und 2 als 16 Bit Timer Verwenden


Autor: R--- S--- (rene66)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe das hier versucht:

        clr   templ
loop1:          sbic  PinB,1                               ; warte bis 
Hsync low
                rjmp  loop1

loop2:          sbis  PinB,1               ;warte bis Hsync high

                rjmp  loop2
                out   TCNT0,templ         ; Timer zurücksetzten
                ;out   TCNT2,templ

         ldi tempH, (1<<CS02)|(0<<CS01)|(0<<CS00) ; Systemtakt Timer0 
interner Takt vorteiler 256
                out TCCR0, tempH
        ldi tempH, (0<<CS22)|(0<<CS21)|(1<<CS20) ; Systemtakt Timer2 
interner Takt vorteiler 1
                out TCCR2, tempH
loop3:          sbic  PinB,1               ; warte bis Hsync wieder Low
                rjmp  loop3

                ldi tempH, (0<<CS02)|(0<<CS01)|(0<<CS00) ; Systemtakt 
Timer0 interner Takt vorteiler 1
                out TCCR0, tempH
        ldi tempH, (0<<CS22)|(0<<CS21)|(0<<CS20) ; Systemtakt Timer2 
interner Takt vorteiler 1
                out TCCR2, tempH

                in   templ, TCNT0
                in   temph, TCNT2

                sts  VTimeL,templ
        sts  VTimeH,temph


Meine Idee war Timer0 und Timer 2 eines Mega16 als 16 Bit Timer zu 
missbrauchen. Ich habe Timer0 mit Vorteiler 256 und Timer 2 mit dem 
Systemtakt getaktet. Dann müsste ja theoretisch bei bei Timer0 = 256 bei 
Timer 2 eine 1 zu sehen sein. Das passiert aber schon ca bei E8 und 
nicht bei FF.
Der Timer mit dem Vorteiler scheint also schon ehr loszulaufen und nicht 
erst wenn ich den Timer starte. komisch

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wenn du den Timer startest ist der Stand des Vorteilers unbestimmt. D.h. 
er kann gerade Null sein ,oder kurz vor der Generierung eines Taktes für 
den Timer stehen. Abhilfe kann ein Prescalerreset (Datenblatt) sein.
Andere Möglichkeiten wären: Ein Timer und im Overflowinterrupt eine 
Variable hochzählen.
Timer koppeln Atmel Appnote AVR133.

MfG Spess

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.