Forum: Mikrocontroller und Digitale Elektronik Timer Programmierung bei ATMEGA32


von Ömer Ö. (oemer3k)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ Ö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

von Ömer Ö. (oemer3k)


Lesenswert?

der Timer wird über externer Interrupt gestartet z.B.: PD2(INT0).
wenn dieser pin auf masse gezogen wird soll der Timer starten bzw. 
stoppen

von 3456 (Gast)


Lesenswert?

Die passendste Funktion ist der Input capture auf dem ICP pin.

von Ömer Ö. (oemer3k)


Lesenswert?

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.)??

von Falk B. (falk)


Lesenswert?

@ Ö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

von 3456 (Gast)


Lesenswert?

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