Forum: Mikrocontroller und Digitale Elektronik [STM8S] Drehgeber direkt anschließen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von STM8-C-Anfänger (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich versuche, einen auf einer Miniplatine befindlichen Drehgeber (Rotary 
encoder) aus Chinaproduktion direkt an den Timer 1 des STM8S105 gemäß 
Reference Manual 17.5.10 anzuschließen. Pullup-Widerstände sind auf der 
Platine. Hardwareanschluss ist korrekt. Grundsätzlich funktioniert das 
Ding auch, es prellt aber heftig. Kondensatoren 22pf zur Masse brachten 
nichts.

Das Autoloadregister wurde auf 1000 gestellt, CC1S und CC2S auf 01, CC1P 
und CC2P auf 1 passend eingestellt, SMS in TIM1_SMCR auf 011 gestellt 
und der timer gestartet, also so wie im RefMan beispielhaft dargestellt. 
Angeblich soll das Prellen kompensiert werden, klappt aber nicht, der 
Zähler springt bzw. hängt. Die Software ist noch sehr provisorisch, mir 
ging es um die grundsätzliche Funktion.

Auszug aus der Main:
1
    int dreh1, dreh2, dreh;
2
3
...
4
5
    dreh1 = (TIM1_CNTRH << 8);
6
    dreh2 = TIM1_CNTRL;
7
    dreh = dreh1 + dreh2;
8
    ItoA(dreh, Temp_Text);
9
    oled_gotoxy(0,5);
10
    oled_puts(Temp_Text);

Gibt es noch einen Tipp für mich?

(Wenn noch Infos fehlen, bitte fragen)

von STM8-C-Anfänger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ok, habs gesehen, die Bitoperationen beim Setzen der Register stimmen 
nicht, ich melde mich morgen noch mal wieder, nachdem ich diese richtig 
gesetzt und getestet habe.

von STM8-C-Anfänger (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich weiß nicht, was ich da gestern abend so verbrochen hatte, (Der 
Enkel war da ;) jetzt sind alle Bits so gesetzt, wie die Doku es will. 
Es funktioniert aber noch immer nicht perfekt. Es gibt immer wieder 
Sprünge bzw. zählt der Counter ein, zwei Schritte in die falsche 
Richtung, wenn man langsam dreht. Einzelschritte sind nur mit Pausen von 
ca. 2 Sekunden möglich. Schnelle Drehungen funktionieren gut. Die beiden 
Drehgeberausgänge liegen versuchsweise mit 22 pF auf Masse, das ändert 
aber gar nichts am Verhalten. Es scheint nicht am Prellen zu liegen.

Kann jemand, der das schon gemacht hat, was dazu schreiben?

Es geht mir ausdrücklich um den Encodermode des STM8S-Timers, wie man 
das nach Peter Dannegger löst, weiß ich.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
STM8-C-Anfänger schrieb:
> ich versuche, einen auf einer Miniplatine befindlichen Drehgeber (Rotary
> encoder)

Gibt der Signale im kHz- oder im MHz-Bereich von sich?

von STM8-C-Anfänger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ah, sorry, es handelt sich um sowas:

https://www.psi-online.de/getpic.php?id=5504

Also kHz-Bereich ...

von STM8-C-Anfänger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> STM8-C-Anfänger schrieb:
>> ich versuche, einen auf einer Miniplatine befindlichen Drehgeber (Rotary
>> encoder)
>
> Gibt der Signale im kHz- oder im MHz-Bereich von sich?

Kapiert, die Kondensatoren 22pF sind zu klein ... das muss eher im 
nF-Bereich liegen. Ich denke drüber nach und teste es.

von Drehgeberverwender (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Aus dem Datenblatt eines Drehgebers ....

von STM8-C-Anfänger (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin weitergekommen, wenn auch nur insofern, dass der counter jetzt 
absolut zuverlässig bei Einzelschritten clockwise immer eins vor und 
beim nächsten Drehschritt in dieselbe Richtung eins zurück zählt, 
counterclockwise dann genau umgekehrt. Schnellere Drehungen clockwise 
über mehrere Rastpunkte funktionieren, counterclockwise nicht. Oszi und 
Logikanalysator zeigen nichts auffälliges, alles so, wie es sein soll. 
Das Problem liegt im µC, also der Konfiguration bzw. Software, der 
Fehler also beim user.

Tja, ich weiß nicht, was ich jetzt noch probieren soll ...

von STM8-C-Anfänger (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Falls mal jemand hierüber stolpert, noch die Assemblerliste dazu ...

Ich gebe an diesem Punkt auf und löse es klassisch, siehe Tutorial hier:
https://www.mikrocontroller.net/articles/Drehgeber

von m.n. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
STM8-C-Anfänger schrieb:
> Schnellere Drehungen clockwise
> über mehrere Rastpunkte funktionieren, counterclockwise nicht.

Hast Du den Drehgeber auch richtig angeschlossen?

> Oszi und
> Logikanalysator zeigen nichts auffälliges, alles so, wie es sein soll.

Foto?

von STM8-C-Anfänger (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
m.n. schrieb:
> Hast Du den Drehgeber auch richtig angeschlossen?

m.n. schrieb:
> Foto?

beides siehe Anhang (leider bin ich mit dem DSO-Bedienung-erlernen noch 
nicht so weit, um screenshots machen zu können)

von m.n. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
STM8-C-Anfänger schrieb:
> also so wie im RefMan beispielhaft dargestellt.

Mach doch mal nur das, was im RM steht und nicht mehr: Eingänge 
zuordnen, Polarität anwählen (ist zunächst egal), Modus wählen SMS = 0x3 
und Timer starten; keine Bitschieberei, sondern direkt das entsprechende 
Byte schreiben.
Die Signale des Drehgebers sind knapp und mangels Zeitbasisangabe nicht 
zu bewerten, aber die Hardware des STM8 kommt damit sicher klar.

von STM8-C-Anfänger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kaum macht man es richtig, schon funktioniert es. ;)

Auf dem Foto "Anschluss Prozessor" sieht man den Fehler. (Kabel sind um 
ein Pin versetzt angeschlossen.) Also doch die Hardware und das von 
Anfang an. Warum es zwischenzeitlich irgendwie ging, kann ich nicht 
nachvollziehen, aber egal.

Moral von der Geschicht: Leute, prüft Eure Schaltungen gründlichst.

von m.n. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
STM8-C-Anfänger schrieb:
> Auf dem Foto "Anschluss Prozessor" sieht man den Fehler.

'Man' kann es nicht sehen, sondern nur Du, wenn Du weißt, was Du gemacht 
hast.

von STM8-C-Anfänger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für Deine Hilfe.

m.n. schrieb:
> STM8-C-Anfänger schrieb:
>> Auf dem Foto "Anschluss Prozessor" sieht man den Fehler.
>
> 'Man' kann es nicht sehen, sondern nur Du, wenn Du weißt, was Du gemacht
> hast

Und doch, wenn man die Pinbelegung des verwendeten STM8S105 kennt, dann 
sieht auch "man" es.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.