Mal wieder Encoder

OP #827953
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
1
     in    r25, PinC      ;Encoder an PortC 0 und 1 einlesen 
2
;---------------------------------------------------------------------------
3
mainloop:  in    r24, PinC    ;Änderung?
4
           cp    r24, r25     ;wenn nicht weiter abfragen
5
           breq  mainloop     ;wenn ja...
6
           eor   r25, r24     ;exkl. oder 
7
           cpi   r24, 0x00    ;auf 00 Position testen  
8
           breq  links        ;wenn ja nach links
9
zwei:      cpi   r24, 0x03    ;wenn nein auf 11 Position testen
10
           breq  links        ;wenn nein weiter zu rechts
11
rechts:    sbrs  r25, 0       ;Auswertung...
12
           rjmp  vorwarts     ;...in welche
13
           rjmp  ruckwarts    ;...Richtung...
14
links:     sbrs  r25, 1       ;...gedreht...
15
           rjmp  vorwarts     ;...wurde.
16
           rjmp  ruckwarts
17
vorwarts:  com   r16          ;entweder wird r16 "gedreht" oder r17
18
           out   PortB, r16
19
           rjmp  schluss
20
ruckwarts: com   r17
21
           out   PortD, r17
22
Schluss:   mov   r25, r24     ;r25 auf aktuellen Stand bringen
23
           rjmp  mainloop
Angehängte Dateien:
#827958
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.
OP #827971
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren