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







Zitieren

Lesezeichen