Hi, wie der Titel schon aussagt möchte ich gerne wissen was genau denn vom Input Capture Pin eines Atmegas zurückgeliefert wird? Mal angenommen das man den auf "steigende Flanke" konfiguriert. Würde er bei Pin High nur eine 1 zurückliefern oder auch sowas wie einen Timestamp? Gruß µC
µC schrieb: > Hi, > > wie der Titel schon aussagt möchte ich gerne wissen was genau denn vom > Input Capture Pin eines Atmegas zurückgeliefert wird? Vom Input Capture Pin wird überhaupt nichts 'geliefert'. Das ist ein Eingangspin so wie jeder andere auch, d.h. du kannst den Zustand des Pins ganz normal über das PINx Register auslesen und kriegst eine 1 oder eine 0, je nachdem, wie der Pegel am Pin ist. Aber das ist ja nicht seine eigentliche Funktion. Seine eigentliche Funktion ist ja, dass er den Vorgang des Kopierens des aktuellen Zählerwerts des Timers in des ICRx Register auslöst. Und den kann man sich dann natürlich aus diesem Register holen.
:
Bearbeitet durch User
Karl Heinz Buchegger schrieb: > Aber das ist ja nicht seine eigentliche Funktion. Seine eigentliche > Funktion ist ja, dass er den Vorgang des Kopierens des aktuellen > Zählerwerts des Timers in des ICRx Register auslöst. Und den kann man > sich dann natürlich aus diesem Register holen. Hallo KHB, ok super! Dann kann man sich ja praktisch einen "Timestamp" daraus bauen. Andererseits kann man das natürlich auch mit jedem anderen Pin machen auf dem ein Interrupt liegt. Sobald der ausgelöst wird lasse ich den Wert von meinem Timer kopieren / ausgeben. Was ich per Software mache würde er dann per Hardware machen. Gruß µC
Wenn du es per Software machst, hast du einen Fehler drin. Läuft nur die eine ISR, ist es gut, da der Fehler immer gleich ist (und damit korrigiert werden kann oder auch gar keine Rolle spielt, weil du evtl. nur Differenzen messen willst. Läuft aber im Moment des externen Signals eine andere ISR, gibts unvorhersagbare Fehler. Oft spielen die keine Rolle, wenn halbwegs gut programmiert (kurze Interruptlaufzeiten). Manchmal muss es aber doch so genau wie möglich sein und dafür ist der ICP da. Es spielt keine Rolle, wann du das Ergebnis abholst, du bekommst den richtigen Wert.
Im Unterschied zu einem Interrupt gibt es bei der ICP keine (insbesondere keine variable) Verzögerung zwischen Flanke und auslesen des Timers. Wenn der Timer also mit dem Systemtakt läuft ist das Ergebnis mit ICP bis aus 1 Takt genau - mit der Softwarelösung hat man eine Unsicherheit bis etwa 5 Takten plus ggf. noch Zeiten in denen Interrupts abgeschaltet sind.
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.