Forum: Mikrocontroller und Digitale Elektronik STM32, prescaler verhalten


von Martin (Gast)


Lesenswert?

Hi,

ich möchte an einem STM32F103RB einen incremental encoder anschließen.
Laut Datenblatt verhält sich der Timer dann exakt so, wie mit einer 
internen Taktquelle. Das heißt, der Prescaler funktioniert auch (steht 
auch so im Datenblatt).

Jetzt habe  ich allerdings noch eine Frage dazu:
Sagen wir der Prescaler ist auf 8 eingestellt. Dreht der Encoder jetzt 
rechts rum, wird ja nur jeder 8. Impuls der Zähler um 1 inkrementiert. 
Was passiert mit dem Prescaler, wenn ich den Encoder jetzt anders herum 
drehe?
Beispiel:
Zählerwert = 122.
Prescalerwert = 5.
Meinem Verständnis nach wird jetzt erst der Prescaler herunter gezählt: 
5..4..3..

Ist diese Annahme korrekt?

von W.S. (Gast)


Lesenswert?

Martin schrieb:
> Ist diese Annahme korrekt?

Nö.

EIn Drehgeber hat normalerweise 2 Kontaktsysteme, die zu 
unterschiedlichen Drehwinkeln schalten. Das braucht man zwingend, um die 
Drehrichtung herauszubekommen.

W.S.

von Martin (Gast)


Lesenswert?

Ich hätte vielleicht erwähnen sollen dass der Timer natürlich mit CH1 
und CH2 im Encoder interface mode läuft.
Seite 376 im RM0008:
"Encoder interface mode acts simply as an external clock with direction 
selection"

von aSma>> (Gast)


Lesenswert?

Servus,
der timer ist 16 bit groß, d.h. du kannst TIM_Period nur 16 bit groß 
machen. Der Prescaler bewirkt eine Verzögerung des Counter um diesen 
Wert.

Mit anderen Worten, man braucht keinen Prescaler beim Encoder!

von Martin (Gast)


Lesenswert?

aSma>> schrieb:
> Mit anderen Worten, man braucht keinen Prescaler beim Encoder!

Ich kann dir nicht ganz folgen.
Mir ist klar dass ich eigentlich keinen brauche. Jedoch möchte ich eine 
Absolute Position erfassen. Mein Encoder macht 600P/U. Das ist auf die 
Strecke die ich messen will aber zu viel als dass das noch in eine 16bit 
Variable passen würde, außerdem brauche ich es nicht so exakt beim 
auslesen.

Daher möchte ich einen Prescaler verwenden, damit ich nicht zusätzlich 
mit einer Hilfsvariable arbeiten muss.

Meine ursprüngliche Frage zielt auf den Gedanken das sich eventuelle 
Abweichungen durch das Zählen im Prescaler aufaddieren. Im Datenblatt 
ist leider nicht genau beschrieben wie der prescaler in diesem Szenario 
arbeitet (oder ich habe es nicht gefunden).

Also, noch mal meine Frage:
Wie verhält sich der prescaler wenn mitten im Zählen die Zählrichtung 
geändert wird?

von aSma>> (Gast)


Lesenswert?

Martin schrieb:
> Also, noch mal meine Frage:
> Wie verhält sich der prescaler wenn mitten im Zählen die Zählrichtung
> geändert wird?

Nochmals. Mit einen Prescaler wird die Genauigkeit drunter leiden.

Bei deinen Beispiel:
> Zählerwert = 122.
> Prescalerwert = 5.

Nehmen wir mal an eine Umdrehung braucht 122 Pulse, dann wirst du mit 
einen Prescaler von von 5, 5 Umdrehungen machen und erhählst dann 122.
Die Genauigkeit sinkt.

Sowas ist so schnell ausprobiert, wenn man sich schon weigert das 
Datenblatt zu lesen.

Eine weitere Möglichkeit besteht aus den 16 bit Timer mithilfe einer 32 
bit Hilfvariable auf 32bit aufzustocken.

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.