mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer Programmierung bei ATMEGA32


Autor: Ömer Özcan (oemer3k)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ömer Özcan (oemer3k)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: 3456 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die passendste Funktion ist der Input capture auf dem ICP pin.

Autor: Ömer Özcan (oemer3k)
Datum:

Bewertung
0 lesenswert
nicht 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.)??

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: 3456 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.