PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Encoder abfrage ???



Mr-400-Volt
11.02.2007, 15:46
Hallo, ich habe ein kleines Programm mit Bascom geschrieben, mit dem ein Drehencoder (Panasonic von Pollin) abgefragt wird. Es läuft auch soweit, nur muß ich immer 2-Klicks drehen, damit eine Variable um 1 verändert wird. Könnte ich das auch anders machen, um bei 1-Klick die Variable zu ändern ?

Danke


$regfile = "m8def.dat"
$crystal = 8000000

Config Portd = Input

Config Int0 = Rising
On Int0 _encoder
Enable Int0
Enable Interrupts

Dim Enc As Byte
Enc_b Alias Pind.3

Cls

Do

Upperline
Lcd Enc

Loop



_encoder:
If Enc_b = 0 Then
Incr Enc
Else
Decr Enc
End If

If Enc = 21 Then Enc = 20
If Enc > 21 Then Enc = 0
Return

Schokohoernl
11.02.2007, 16:24
Tach!

Der Interrupt wird ja nur ausgelöst, wenn INT0 nen Rising-Signal bekommt. Also jedes mal wenn es fällt, wirds ignoriert.
Musst halt den INT0 aus change stellen und dann halt beide (also Enc_a und Enc_b) Ausgänge überprüfen, welchen Wert die gerade haben.

MfG

Schoko

Mr-400-Volt
11.02.2007, 16:27
Wie stelle ich das denn um ? Hab noch nicht viel mit den Int´s gemacht.

Mr-400-Volt
11.02.2007, 16:35
Ahh, ok. Habe din Int0 auf Change gestellt. Der wert wechselt jetzt aber nur zwischen 0 und 1 ?????

Yossarian
11.02.2007, 17:27
Hallo
der Ausgang B (und A) wechselt ja auch nur zwischen 0 und 1.
Googel mal nach Encoder und schau Dir an wie er funktioniert.

Mit freundlichen Grüßen
Benno

Mr-400-Volt
11.02.2007, 17:31
Ich habe das Datenblatt gerade vor mir liegen. Mir ist nur nicht klar, wie ich die abfrage der Signale a und b getallten soll. Da würde ich gern um hilfe bitten......

Yossarian
11.02.2007, 18:57
Hallo
da gibt es einiges an Möglichkeiten.Sieh mal bei Sprut nach,da war glaube ich mal eine Anwendung.
Mit freundlichen Grüßen
Benno