Forum: Mikrocontroller und Digitale Elektronik hochfrequentes signal mit niedrigem chiptakt messen


von vogel (Gast)


Lesenswert?

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.

von TSE (Gast)


Lesenswert?

Könntest du zum Testen nicht einfach mal den internen Takt hochfahren 
auf ein paar Mhz?

von holger (Gast)


Lesenswert?

>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.

von vogel (Gast)


Lesenswert?

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.

von Sam P. (Gast)


Lesenswert?

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.

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.