Hallo zusammen,
Ich experimentiere gerade mit einem Drehgeber von Alps.
Dazu verwende ich einen ATmega32 und die C-Lib hier aus der
Code-Sammlung: http://www.mikrocontroller.net/articles/Drehgeber
Ich verwende die Lib mit wackeligem Rastpunkt.
Allerdings habe ich noch ein paar Verständnisfragen, auf die ich keine
Antworten im Internet gefunden habe.
1.
Beim Timer-Interrupt wird diese Abfrage ausgeführt:
1 | last = (last << 2) & 0x0F;
|
2 | if (PHASE_A) last |=2;
|
3 | if (PHASE_B) last |=1;
|
Was geschieht hier genau mit der Variable "last" ?
2.
Was hat es mit dieser Tabelle auf sich?
1 | const int8_t table[16] PROGMEM = {0,0,-1,0,0,0,0,1,1,0,0,0,0,-1,0,0};
|
Und wie ist der zusammenhang zu diesem aufruf?
1 | enc_delta += pgm_read_byte(&table[last]);
|
Hoffe Ihr könnt mir helfen.
Gruß und guten Rutsch!
Marvin