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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.