Forum: Mikrocontroller und Digitale Elektronik Timer1 auslesen wärend Timer1 läuft!!!


von Benjamin H. (bsoch)


Lesenswert?

Hallo!

Ich will eine Zeit mit dem 8 und 16 bit Timer messen (Atmega8l).
Während der Timer läuft sollen durch Digitalsignale an Eingängen den 
dann in dem Momend gezählen Wert ausgelesen.
Habs eigentlich soweit zum laufen gebracht und habe das ganze mit einer 
Stoppuhr überprüft.
Die Gesamtzeit stimmt doch die abgegriffene Zeit wenn das Digitalsiganl 
kommt nicht!

Kann mir da jemand weiterhelfen?
Kann man überhaupt einen Wert auslesen während der Timer läuft?
Gibt es eine andere Möglichkeit die Werte zu bekommen?

Danke!

MfG

Haberbosch

von Falk (Gast)


Lesenswert?

@Benjamin Haberbosch

>Während der Timer läuft sollen durch Digitalsignale an Eingängen den
>dann in dem Momend gezählen Wert ausgelesen.

Das Zauberwort heisst "Input Capture" (ICP).

MfG
Falk



von Mark (Gast)


Lesenswert?

Was ist ICP.

Im Datenblatt zum 18Fxx8 steht zum Beispiel nix darüber.


Greetz M&M

von Rolf Magnus (Gast)


Lesenswert?

> Im Datenblatt zum 18Fxx8 steht zum Beispiel nix darüber.

Warum sollte dieses die Features eines komplett anderen Controllers 
beschreiben?

von Dieter Werner (Gast)


Lesenswert?

> Im Datenblatt zum 18Fxx8 ...

heisst das CCP oder ECCP.

von Peter D. (peda)


Lesenswert?

Benjamin Haberbosch wrote:

> Die Gesamtzeit stimmt doch die abgegriffene Zeit wenn das Digitalsiganl
> kommt nicht!


Du mußt beide Bytes in der richtigen Reihenfolge auslesen.
Schau mal ins Datenblatt, da ist das erklärt.


Peter

von Benjamin H. (bsoch)


Lesenswert?

Hab das mit dem ICP irgendwie nicht richtig verstanden!

Ich will mit einem 16 Bit Timer Zählern (CPU-Takt/64) und den dabei 
entstehenden overflow mit einem 8 Bit Counter Zählen.
Das funktioniert richtig gut.
Doch nun wollte ich das Programm erweitern, ein Signal am PINB1 anliegt 
den in dem Moment gezählten Wert auslesen.
Der Timer und Counter sollen jedoch weiterlaufen.
Kann mir dabei der ICP helfen, das ist doch ein eigenener PIN (PINB0) 
den ich gar nicht beschaltet habe.
Gibt es eine andere Möglichkeit mit der Einstellung und Belegung die 
Werte auszulesen mit laufendem Timer?

Danke!

MfG

Haberbosch

von Peter D. (peda)


Lesenswert?

Der ICP hilft nur dann, wenn Du exakt auf den Zyklus genau sein mußt 
oder lange Zeiten mit Interruptsperre hast.

Ansonsten geht natürlich auch ein externer Interrupt oder Polling und 
dann den Timer auslesen.

Wird der Timer in Software erweitert, mußt Du beim Auslesen darauf 
achten, daß der Übertrag auch ausgewertet wird.


Peter

von Erik (Gast)


Lesenswert?

Wie wäre es denn, wenn du statt dem zweiten 8 Bit Counter einfach ein 
unsigned char nimmst und den bei einem Overflow vom 16 Bit Timer erhöhst 
(Overflow Interrupt). Für den Portpin aktivierst du ebenfalls den 
Interrupt und wenn der ansteht kannst du ja innerhalb der 
Interruptroutine den Wert der Variablen auslesen.

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.