Hallo, da ich von µC programmierung nicht viel ahnung habe, brauche ich eure hilfe. Ich möchte bei ATMEGA32 den Timer zur Zeit Messung programmieren. Wenn der µController ein Signal bekommt soll er den Timer starten und es soll den timer stoppen wenn er wieder signal bekommt. Der Startsignal und Stopsignal müssen nicht über der gleichen PIN kommen. Danach soll der Programm rechen wie lange der Timer gelaufen ist. Am ende Brauche ich die Zeit in Sekunde bzw in ms oder µs. Kurz gesagt soll der ATMEGA32 als Stoppuhr dienen mit einer genauigkeit von mindestens 1µsekunde. Um den ATMEGA32 zu programmieren habe ich mir den ATMEL STK500 Starter-Kit besorgt. Könnt ihr mir bitte info geben, wie ich das realisieren soll. Ich danke für eure hilfe im voraus
@ Ömer Özcan (oemer3k) >Wenn der µController ein Signal bekommt soll er den Timer starten und es >soll den timer stoppen wenn er wieder signal bekommt. Der Startsignal Das kann ein Timer. Die Frage ist, wie er gestartet wird. Dazu gibt es verschiedene Möglichkeiten. Externer Interrupt Pin Change Interrupt Pollen eines IO-Pins >und Stopsignal müssen nicht über der gleichen PIN kommen. Uhhh, Vorsicht! >Kurz gesagt soll der ATMEGA32 als Stoppuhr dienen mit einer genauigkeit >von mindestens 1µsekunde. Das geht eigentlich nur über die Input Capture Funktion. Dann aber muss das Start/Stop Signal über ein Pin angelegt werden. da muss ggf. über etwas exteren Logik passieren (RS-FlipFlop z.B.). >Um den ATMEGA32 zu programmieren habe ich mir den ATMEL STK500 >Starter-Kit besorgt. Schön, aber KnowHow ist wesentlich wichtiger als Hardware. MfG Falk
der Timer wird über externer Interrupt gestartet z.B.: PD2(INT0). wenn dieser pin auf masse gezogen wird soll der Timer starten bzw. stoppen
Die passendste Funktion ist der Input capture auf dem ICP pin.
können sie mir bitte den Input Capture Funktion näher erläutern. warum muss da ggf. über etwas exteren Logik passieren (RS-FlipFlop z.B.)??
@ Ömer Özcan (oemer3k) >können sie mir bitte den Input Capture Funktion näher erläutern. Im Schnelldurchlauf. Ein Timer (meist 16 Bit) läuft mit vollem Prozessortakt (1..20 MHz). trifft eine Flanke (einstellbar) am Input Capture Pin 8ICP) ein, wird der aktuelle Zählerstand automatisch in einem Register gespeichert, parallel dazu ein Interrupt ausgelöst trifft nach einiger Zeit wieder eine Flanke ein, passiert das Gleiche aus der Differenz der jeweils gespeicherten Zählerstände kann man die Zeit berechnen. Das alles läuf parallel zur normalen Programmverarbeitung, darum ist es sehr genau. Ausführlicher steht es im Datenblatt. >warum muss da ggf. über etwas exteren Logik passieren (RS-FlipFlop >z.B.)?? Weil die Funktion nur über EIN Pin gesteuert werden kann, nicht über zwei verschiedene. MfG Falk
Man sagt diesem Pin auf welche Flanke die Capture ausgeloest werden soll. Moechte man die Zeit zwischen steigender und fallender Flanke messen, so muss man dazwischen die Flanke umschalten. Das heisst man macht eine Capture auf steigende Flanke, im interrupt umschalten auf Capture auf fallende Flanke.
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.