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
@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
Was ist ICP. Im Datenblatt zum 18Fxx8 steht zum Beispiel nix darüber. Greetz M&M
> Im Datenblatt zum 18Fxx8 steht zum Beispiel nix darüber.
Warum sollte dieses die Features eines komplett anderen Controllers
beschreiben?
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.