Hallo, ich habe ein Problem. ich will eine Zeit zwischen zwei positiven Flanken stoppen. Dazu nutze ich den Timer1, merke mir die Overflows in r18 und die Zyklenanzahl aus HIGH(TCNT1) in r17 und LOW(TCNT1) in r16. Ich nutze einen 4 MHz Oszillator und einen ATMEGA8. Um jetzt auf die Zeit zu kommen, würde ich jetzt so rechnen: t = 0,25us * ( r18 * 65.536 + r17 * ... + r16 * ... ) ...wie kann ich mit den in TCNT1 stehenden Anzahl der Zyklen rechnen ? ...für die Rechnung r18 * 65536 bräuchte ich ein 24-Bit Register ? Ich hoffe, ihr könnt mir weiterhelfen!
@Daniel (Gast) >ich will eine Zeit zwischen zwei positiven Flanken stoppen. In welchem Bereich liegen die Zeiten? > Dazu nutze >ich den Timer1, merke mir die Overflows in r18 und die Zyklenanzahl aus >HIGH(TCNT1) in r17 und LOW(TCNT1) in r16. Macht man so nicht, dafür gibt es die ICP Funktion. Und bei Überläufen muss man aufpassen, dass man da keine Race Condtions reinbekommt. >t = 0,25us * ( r18 * 65.536 + r17 * ... + r16 * ... ) >...wie kann ich mit den in TCNT1 stehenden Anzahl der Zyklen rechnen ? >...für die Rechnung r18 * 65536 bräuchte ich ein 24-Bit Register ? sieht so aus. http://www.mikrocontroller.net/articles/AVR_Arithmetik MFG Falk
Hey Falk, danke für deine Antwort. Der ICP Pin vereinfacht den Start aber kann man den Timer darüber auch wieder stoppen? (Mit der "2" positiven Flanke) Ich muss zugeben dass mir die Arithmetik-Beispiele von deinem Link nicht all zu sehr helfen. Gibt es Bücher oder andere Seiten die mir da weiter helfen könnten?
Daniel schrieb: > danke für deine Antwort. Der ICP Pin vereinfacht den Start aber kann man > den Timer darüber auch wieder stoppen? (Mit der "2" positiven Flanke) Der Timer läuft durch, aber ICP merkt sich den Stand in einem Register und die IST lies dies aus. Die Differenz zweiter solcher Werte ist die Zeit dazwischen.
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.