Hallo, ich hab mal folgende Frage und zwar habe ich am UC ein Eingangssignal, und möchte von diesem die Zeit zwischen High und Low Pegel messen, und wollte mal fragen wie ich dies am besten machen kann. Den Wert würde ich gerne in einer Variablen abspeichern und soll mit der nächsten Messung überschrieben werden. Also Signal geht auf High-> Starte Timer Signal geht auf Low-> Timer ende wert speichern. das ganze in C.
:
Verschoben durch User
Du bist zwar im falschen Forum gelandet, aber hier steht auch die Lösung: Beitrag "Stoppuhr – Geschwindigkeit – Pulsweite mit Atmega88" Ich hoffe, es ist Dir nicht zu kompliziert.
ups, das wusste ich nicht... doch schon etwas kompliziert, wie müsste ich das den machen, wenn ich den Timer0 benutze, dort wird es ja mit nen 16bit Timer erklärt.
Also mein Ergebnis müsste irgendwo zwischen 0,1 und 10 ms liegen. Also dachte ich an nen Prescaller von 64 bei 1MHZ. Also TCCR0 |= (1<<CS00)|(1<<CS01); sind 1562,5 Hz ein Interrupt ISR (TIMER0_OVF_vect) { ++zeit;} float zeit; nur wie kann ich es jetzt machen das der timer bei PC2 high startet und bei PC2 low stoppt.
Shaggy schrieb: > wie müsste ich das den machen, wenn ich > den Timer0 benutze, dort wird es ja mit nen 16bit Timer erklär Im Prinzip genauso, es kommen nur öfter Überläufe vor. Den µC mit nur 1 MHz laufen zu lassen und/oder mit Vorteiler zu arbeiten, schadet der erreichbaren Auflösung enorm: mache es nicht!
ok was muss ich den schreiben um den Timer bei Pegeländerung zu starten und wieder zu stoppen? Das ist jetzt noch das einzige wo ich hänge.
Hab jetzt mal so probiert, hab den uc im Moment ohne Quarz am laufen wird ich später noch ändern. TCCR0A = (1<<WGM01); // CTC Modus TIMSK |= (1<<OCIE0A); OCR0A = 10-1; // wird alle 10 us ausgeführt sei(); ISR (TIMER0_COMPA_vect) {zeit++;} jetzt nur noch die frage wie starte und stopp ich den Timmer Signal abhänig.
Shaggy schrieb: > ok was muss ich den schreiben um den Timer bei Pegeländerung zu > starten > und wieder zu stoppen? Das ist jetzt noch das einzige wo ich hänge. Benutze hierfür den Pin-Change-Interrupt ;) PS: Pack deinen Code mal in die entsprechend Code-Flags, also so: [c] dein C-Code ["/c"] (ohne die " natürlich). Macht den Spass lesbarer ;)
:
Bearbeitet durch User
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.