hochfrequentes signal mit niedrigem chiptakt messen

Gast #2743964
Hallo zusammen.
Der Threadtitel klingt erstmal komisch, aber ich kann mein Problem grad 
nicht anders zusammenfassen. Mein Problem ist, ich hab einen uC 
(STM8L151) mit dem internen RC-Oszi auf 38 kHz laufen. An einem Pin zum 
Timer1 liegt einmal pro Sekunde für 10 ms ein Taktsignal mit 135 kHz an.
Jetzt dachte ich mir ich geh einfach hin und nutze dieses externe Signal 
als Clock für den Timer1 und lese den Timerwert dann einmal pro Sekunde 
aus.

Soweit funktioniert das auch im Prinzip. Jedoch kommt der Timer nicht 
wie vorgesehen auf 1350 (soviele positive Flanken kommen in den 10 ms 
an; das ist auch mit einem Oszi überprüft) sondern nur 144. Meine erste 
Vermutung war, dass ich irgendwo einen Prescaler eingestellt habe. Das 
ist aber nicht der Fall. Prescaler und alles andere ist auf 0.

Jemand eine Idee wo da das Problem sein könnte?

Aktuelles vorgehen ist:
-> ich lege das externe Signal als Clock an
-> ich starte den Timer
-> Ist eine Sekunde rum stoppe ich den Timer wieder
-> lese den Wert aus
-> geb ihn seriell aus
-> setze den Timer wieder auf 0
-> wenn die nächste Sekunde abgelaufen ist wird der Timer wieder neu 
gestartet.
-> zurück zum anfang

Und ich bekomme eben immer die 144. Mal auch eine 143 oder 145. Eine 
schwankung in dem Wert ist aber gewollt und gewünscht.

Ich hab eine Vermutung, die aber eigentlich nicht sein sollte.
Ich bin mir nicht ganz sicher, ob der selbst dennoch auf den internen 
Chiptakt angewiesen ist oder nicht. Sollte er ja aber eigentlich nicht.

Jedenfalls bin ich für jeden Hinweis dankbar.
Gast #2744001
>Ich bin mir nicht ganz sicher, ob der selbst dennoch auf den internen
>Chiptakt angewiesen ist oder nicht. Sollte er ja aber eigentlich nicht.

Der Timer sollte auf asynchroner Zähler eingestellt werden.
Keine Ahnung ob das bei deinem Teil geht.
Prescaler muss 1 sein.
Gast #2744169
Das mit dem internen Takt hab ich noch gar nich probiert. Hmpf so ne 
simple Idee.

Bei dem Prescaler meinte ich auch 1.
Intern wird der eingestellte Wert noch um 1 incrementiert.
Gast #2744196
vogel schrieb:
> Ich hab eine Vermutung, die aber eigentlich nicht sein sollte.
> Ich bin mir nicht ganz sicher, ob der selbst dennoch auf den internen
> Chiptakt angewiesen ist oder nicht. Sollte er ja aber eigentlich nicht.

Ist aber bestimmt so. Clock-Synchrone Zähler (und auch Interrupts) 
findet man oft bei Mikrocontrollern. Siehe holgers Antwort. Schau im 
Datenblatt nach, ob es einen asynchronen Zählmodus gibt. Wenn es den 
nicht gibt, haste keine Chance.

Antwort schreiben

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