Mega8 Timer Torzeitmessung

Gast #115560
Hallo,

ich möchte gerne mit einem Mega8 eine Torzeitmessung vornehmen.
Dabei möchte ich Ferquenz von 1KHz oder ca. 2Khz messen.

Dazu sollte man ja mit einem Timer ein Torzeit generieren,
und dann mit dem zweiten die Impulse "zählen". Ich habe dabei
an eine Torzeit von 10ms gedacht, dann kann ich in einer Sekunde
ca. 100 Auswertungen vornehmen. Bei 1ms fällt bei 1KHz ja nur noch ein
Impuls an, das ist dann schon ein wenig ungenau.. ;-)

Kann mir jemand Tipps dazu geben? Bin mit den AVR's noch nicht so
vertraut. Habe aber inzwischen rausgefunden, dass ich auf alle Fälle
die  sc0,sc1,sc2  register setzen muss, für Externen Interrupt.

Wie definiere ich dann die Torzeit und die Interrupt einsprung
marken?

Das ganze soll wenn es fertig ist zur Datenübertragung mit
Handelsüblichen CB-Funk Geräten mit o.Ä. dienen. Generiere mit einem
Mega8 schon die Töne und setze Sie auf der Empfangsseite am Seaker
Ausgang des Funkgerätes mit einem OpAmp als Schmitt-Trigger wieder
in "saubere" Rechteck Signale um.

Wäre super, wenn mir jemand weiter helfen könnte

baeri3
Gast
Hi!
kanst du das nicht einfach so machen?

Timer 0 mit prescaler 1/64 = Timer zählt alle 8µs um eins hoch.

Timer bei steigender flanke starten und bei der nächsten steigenden
flanke anhalten. Impulse auswerten usw..

die minimale freqenz wäre hier ca 500Hz. Ist halt die frage ob dir eine
genauigkeit von 8µs ausreicht..

Gruß Matthias
Gast
Hallo!

Weiss nicht ob ich dein Problem ganz verstanden hab. Aber ich denke,
dass es auf diese Art am besten geht:
Signale mit dem ICP1 interrupt zählen. Bei Auftritt des Interrupts wird
der aktuelle Stand von Timer1 Counter ins ICR kopiert (das macht der
atmega selbständig - somit ist das schrecklich genau weil keine
Verzögerungen durch den Aufruf der INTERRUPT SERVICE ROUTINE
auftreten). der ICR Wird abgelegt und beim nächsten auftritt des ICP1
Interrupts mit dem zuvor abgelegten Wert verglichen. Wird kein Teiler
für Timer1 verwendet, so bekommst Du den Zeitunterschied zwischen den
zwei Signalen ganz genau in den dazwischen erfolgten CPU-cycles.
Genauer gehts nicht. Hoffe das hilft.
Gast
hmmm.. nen Code Schnipsel dazu hat niemand zufälliger weise rum
fahren? .. 8µs auflosung würden mir schon reichen, und auch der zweite
vorschlag, mit ca. 500Hz als min. Frequenz. wäre akzeptabel!
Gast
Hallo nochmal,

habe nun endlich mal wieder ein wenig Zeit zum Basteln.. ;-)
Leider komme ich mit den ganzen Bit's die ich da setzen sollte
nicht ganz zurecht... Habt ihr evt. doch noch ein Code
Schnipsel rumliegen?

big thx

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.