Timer1 auslesen wärend Timer1 läuft!!!

OP #514957
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
Gast #514960
@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


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

Warum sollte dieses die Features eines komplett anderen Controllers 
beschreiben?
#515202
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
OP #515360
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
#515436
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
Gast #515451
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.

Antwort schreiben

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