mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mal wieder Encoder


Autor: Ronny Krause (controller-ronny)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle,

und vorerst ein Lob an dieses Forum. Hat mir schon viel geholfen. Nun 
wirds aber mal spezieller. (Newbie-spezieller). Ich möchte mit einem 
Decoder einen Schrittmotor ansteuern. Also Encoder-rechts = Motor 
rechts. Um überhaupt erstmal mit dem Encoder klarzukommen folgende 
einfache Schaltung.
Eine LED an PortB, eine LED an PortD, Encoder an C 0 und 1. Wenn ich 
meinen Code von Hand durchgehe, sollte beim rechts drehen die eine LED 
an und ausgehen und beim links drehen halt die andere. Tun sie aber 
nicht. Meine Ausgaberegister werden immer abwechselnd angesprochen auch 
wenn ich nur in eine Richtung drehe. Mein seltsamer Programmaufbau ist 
an die Schaltung im Bild angelehnt.Meine Vermutung ist, das beim 
exkl.Oder schon etwas schief läuft. Aber ich weiß es halt nicht. 
Schonmal ein Danke und Gruß
Ronny
     in    r25, PinC      ;Encoder an PortC 0 und 1 einlesen 
;---------------------------------------------------------------------------
mainloop:  in    r24, PinC    ;Änderung?
           cp    r24, r25     ;wenn nicht weiter abfragen
           breq  mainloop     ;wenn ja...
           eor   r25, r24     ;exkl. oder 
           cpi   r24, 0x00    ;auf 00 Position testen  
           breq  links        ;wenn ja nach links
zwei:      cpi   r24, 0x03    ;wenn nein auf 11 Position testen
           breq  links        ;wenn nein weiter zu rechts
rechts:    sbrs  r25, 0       ;Auswertung...
           rjmp  vorwarts     ;...in welche
           rjmp  ruckwarts    ;...Richtung...
links:     sbrs  r25, 1       ;...gedreht...
           rjmp  vorwarts     ;...wurde.
           rjmp  ruckwarts
vorwarts:  com   r16          ;entweder wird r16 "gedreht" oder r17
           out   PortB, r16
           rjmp  schluss
ruckwarts: com   r17
           out   PortD, r17
Schluss:   mov   r25, r24     ;r25 auf aktuellen Stand bringen
           rjmp  mainloop


Autor: Erik D. (dareal)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frage ist: Wie hast du das Ganze aufgebaut?

ch habe bei mir einen Encoder am STK500 und dieser Encoder zieht die 
Pins jeweils auf GND. Von daher solltest du erstmal schauen ob du 
"richtig rum denkst" ... ich habe mich auch einige Zeit mit 
rumgeschlagen, bis ich gemerkt habe, dass ich genau falsch rum denke ... 
meine UND/ODER haben nämlich auch nie das geliefert was ich wollte.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was passiert wenn der Encoder auf 0x01 oder 0x02 steht?

Autor: Ronny Krause (controller-ronny)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
das ging ja flott. Aufgebaut hab ich das als ob der Encoder ein Taster 
wäre, der die entsprechenden Eingänge auf low zieht. Elektronisch 
scheint es ja zu funktionieren, da sich bei jeder Raste der Zustand 
ändert. Nur nicht so wie er soll. Ich habe die Schaltung auch am Oszi 
gehabt und da stimmt alles. Der Gray-Code sieht aus wie im Datenblatt. 
Oder denke ich jetzt noch verkehrter?

Autor: Ronny Krause (controller-ronny)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach meinem Verständnis sollte er bei 0x01 und 0x02 bei Punkt rechts: 
landen?!
Rechts und links ist in diesem Fall noch nicht die Drehrichtung sondern 
die Seite im Bild, nachdem ich auf 0x00 oder 0x11 getestet habe.

Autor: Ronny Krause (controller-ronny)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, nur noch schnell des Rätsels Lösung! (Der Vollständigkeit halber ;))
Wenn man die Einleseregister (r24, r25) maskiert, so das wirklich nur 
Bit 0 und 1 geändert werden, funktionierts prächtig.Trotzdem Dank!
Schönen Abend noch an alle Fleißigen!
Ronny

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.