Forum: Mikrocontroller und Digitale Elektronik At Mega8 Timer 1


von Oliver D. (smasher)


Lesenswert?

Hallo,

ich wollte fragen, ob es möglich ist, den Timer 1 eines AT Mega8 bei 
erkennen einer negativen Flanke zu starten und bei einer darauffolgenden 
positiven Flanke anzuhalten.

Den erhaltenen Wert möchte ich dann weiter verarbeiten.


Kann mir vielleicht jemand sagen, wie man diesen Betriebsmodus nennt, 
und wa sich mir im Datenblatt dazu durchlesen muss?

Bisher hatte ich nur 8051er und da ist es bei weitem nicht so "komplex" 
wie beim AVR und seinen vielen einstellmöglichkeiten.
Desweiteren gab es glaube ich beim 8051er sowas garnicht.

Bin mir nicht so sicher.


Für Tipps oder vielleicht ein Tutorial bei dem genau auf solche 
Sachverhalte, wie z.B. Zeitmessung eines Signals eingegangen wird, währe 
ich sehr dankbar.
Ich versuche nämlich den Zeitabstand zwischen negativer und positiver 
flanke zu messen.



Danke.

von Johannes M. (johnny-m)


Lesenswert?

Starten und Anhalten geht nicht (außer in Software). Mit Input Capture 
kann man bei Auftreten eines Ereignisses den aktuellen Zählerstand 
sichern. Wenn man das zweimal macht, kann man die Differenz bilden und 
den Abstand der Ereignisse ermitteln. Der Timer läuft dabei aber durch.

von Johannes M. (johnny-m)


Lesenswert?

Oliver D. wrote:
> Bisher hatte ich nur 8051er und da ist es bei weitem nicht so "komplex"
> wie beim AVR und seinen vielen einstellmöglichkeiten.
> Desweiteren gab es glaube ich beim 8051er sowas garnicht.
Erstmal gibt es den 8051er gar nicht, und zweitens kenne ich einige 
8051-Derivate, die durchaus komplexer sind (mehr Peripherie haben) als 
ein ATMega8, der sicher zum "unteren Ende" der AVR-Skala zählt... Der 
80C517/537 hat z.B. afair auch Input Capture...

von Oliver D. (smasher)


Lesenswert?

Hmm und was ist für einen Anfänger eine geeignete Methode?

von Oliver D. (smasher)


Lesenswert?

Eigentlich geht es um die Auswertung von DCF. Bevor ich irgendwo 
nachlese, will ich es selbst versuchen.

Eigentlich gibt es ja nur 2 zeiten zu messen.
Wenn ich also den Timer bei fallender Flanke starte und 105ms lang 
laufen lassen und dann durch compare wert stoppe und direkt danach 
schaue ob noch eine logische 0 oder 1 anliegt, hätte ich meine Zeit ja 
quasi "gemessen"
Wenn nach 105ms noch eine 0 anliegt, ist es für mein programm eine 1 und 
wenn nach 105ms wieder eine 1 anliegt, ist es für mein programm eine 0.

von Johannes M. (johnny-m)


Lesenswert?

OK, bei den Zeiten kann man es fast besser in Software machen. Da kommt 
es auch nicht so auf absolute Genauigkeit an, dass man es unbedingt 
mit Input Capture machen müsste. Ein paar 10 Taktzyklen Overhead durch 
einen Interrupt Handler (externer Interrupt) sollten da kein Problem 
darstellen.

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.