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


von R--- S. (rene66)


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

von Spess53 (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.