Hallo,
Ich möchte einen Drehencoder auslesen, um klein anzufangen möchte ich ersteinmal alle die High/low zustände zählen.
ich hab ein Programm geschrieben, mit dem das auch theoretisch möglich ist. Aber leider nur wenn man der Encoder sehr langsam dreht... wenn man zu schnell dreht ändert sich der wert nicht mehr.
ich denke mein Programm ist villeicht etwas komisch aufgebaut, aber mir ist keine andere Lösung eingefallen (bin absoluter anfänger)
kann es daran leigen das der AVR mit dem zählen nicht mehr hinterher kommt?
Oder kann es auch am Schalttransistor liegen? BC337-40
Mfg Hübi
Code:
'Encoder test
'--------------------------------------------------------------
$regfile = "attiny2313.dat" 'ATTINY 2313
$crystal = 8000000 'TACKT 8Mhz
'******** Deklarationen ********
Dim Zaehlwert As Word
'******** Initialisierung ******** '
Ddrd = &B11100000
Portd = &B00000000
Zaehlwert = 1
'******** Hauptprogramm ********
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.0 , Rs = Portb.2 'LCD configurieren (datenleitung)
Dim A As Byte
Config Lcd = 16 * 2 ' 16*2 Zeilen
Main: 'hauptprogramm
Cls 'display löschen
Do
Locate 1 , 1 'cursor in Zeile 1, Reihe 1
Lcd Zaehlwert 'schreibe "Zählwert"
Cursor Off 'cursor off
If Pind.2 = 1 Then 'wenn taster gedrückt, dann
Zaehlwert = Zaehlwert + 1 'addiere 1 zu Zähltwert
Goto Unterprogramm 'gehe zu Unterprogramm
End If 'end if
Loop
'---------------------------------------------------------------------------------
Unterprogramm: 'Unterprogramm
Do
If Pind.2 = 0 Then 'wenn Taster losgelasse wird
Goto Main 'springe zurück ins Hauptprogramm
End If 'end if
Loop
Lesezeichen