Fragen zu Timer bei Mega8

Gast #951555
Für einen Versuchsaufbau im LK Physik suchen wir eine möglichkeit mit 
einem Mikrocontroller die Zeit zwischen positiven oder negativen Flanken 
zu messen.

Da wir in der schule ein Mega8 Board haben, war unser gedanke einen 
Timer per  INT0 bei Positiver Flanke zu starten.
Bei der nächsten positiven flanke, soll dann in der ISR der Timer 
gestoppt werden.

Damit ist für uns bereits möglich zeiten zu messen.
Das Signal bekommen wir praktischerweise von unserem versuchsaufbau 
direkt in 5V level geliefert.

Gibt es da vielleicht noch eine Sonderfunktion des Chips, die 
automatisch bei einer Flanke einen timer startet und bei der nächsten 
gleichen flanke (also 2x positive) wieder stoppt?
Das Datenblatt ist recht komplex und unser technisches Englisch leider 
nicht ganz ausreichend...

Wir lesen hier von ICP etc.

Ein wenig Hilfe dazu währe seeehr nett.

Vielen Dank!
#951569
@ Physik AG (Gast)

>Wir lesen hier von ICP etc.

Ja, damit kann man das sehr genau machen.

>Ein wenig Hilfe dazu währe seeehr nett.

Im Prinzip ganz einfach. Der 16 Bit Timer läuft immer. Wenn jetzt 
eine Flanke am ICP reinkommt, wird der aktuelle Timerwert gespeichert 
und ein Interrupt ausgelöst. Den springt die CPU an und kopiert den 
Wert aus dem Spezialregister in eine Variable (16 Bit). Danach wird der 
ICP umgestellt, dass er jetzt auf die fallende Flanke reagieren soll. 
Wenn die dann eintrifft wird wieder durch den ICP der Timerwert 
gespeichert und ein Interrupt ausgelöst. Aus der Differenz der beiden 
Timerwerte kann man sehr genau die Zeit berechnen.

MFG
Falk
Gast #951596
Hallo Falk,

das ist ja echt mehr als wir gedacht hätten, was dieser kleien Chip 
alles kann.
Ist es denn auch möglich jeweils auf steigende Flanken zu reagieren oder 
funktioniert nur die Kombination Steigend/fallen, Fallend/Steigend?
Gast #951600
Du kannst so ziemlich alle Kombinationen auswerten:

- steigend - steigend (Periodendauer)

- fallend - fallend (Periodendauer)

- steigend - fallend (Impulsdauer)

- fallend - steigend (Impulspause)

Du musst nur in der ICP-ISR die Flankenart des nächsten Interrupts 
einstellen.

KH

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.