Hallo! Ich muss eine niederfrequente Schwingung (0-100 Hz), die in der Frequenz und Amplitude variable ist mit einem ATmega32 erfassen und Frequenz und Amplitude auf einem LCD anzeigen. Die Spitzenspannung beträgt max. 2,5 V, dazu addiere ich eine Gleichspannung von 2,5 V und lege es an einen AD-Wandlereingang. Das Programm liest dann ständig die Werte des AD-Wandlers ein und stellt dann fest, wann ein Maximum erreicht ist (funktioniert schon). Dann soll der 16-Bit Timer gestartet werden. Beim nächsten Maximum ist eine Schwingung vorrüber, der Timer soll dann ausgelesen werden und neu gestartet werden bzw. wieder bei 0 anfangen zu zählen. Und hier liegt mein Problem. Wie kann ich den Zähler starten und stoppen? Läuft der Timer beim Initialisieren gleich los? Wenn ich das Register TCNT1 auslesen, bekomme ich einen Wert. Beschreibe ich das Register vorher mit "0", bekomme ich einen Wert "0" ausgegeben. Fängt der Zähler dann wieder an zu zählen, wenn ich ihn mit "0" beschrieben habe? Danke, Matthias
der timer läuft los, wenn du einen takt einstellst. also bitte vorher löschen und dann gezielt starten (durch einstellen des taktes)
Hallo Matthias, so funzt der Timer1 bei mir clr temp out TCCR1A,temp ldi temp,0b00000001 ; Vorteiler auf 80000000/1 out TCCR1B, temp ldi temp,0xff-0x00 ; High Byte Timer Counter out TCNT1H,temp ldi temp,0xff-0x0c ; Low Byte Timer Counter out TCNT1L,temp ldi temp,(1<<TOIE1) ; Timer 1 aktivieren overflow out TIMSK, temp loop: in temp, tcnt1l jmp loop Gruß Bernhard
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.