Hi,
Habe einen ATMega32(@12MHz) mit V-USB als HID-Gerät (Joystick) laufen.
Bei der Verwendung von den Drehimpulsgebern habe ich jedoch noch
Probleme.
Sie funktionieren einwandfrei wenn ich sie als Analogachsen definiere,
die einen 8bit-Wert senden. Ich möchte es jetzt allerdings so haben,
dass links- und rechtslauf jeweils als Button-Signal gemeldet wird. Das
Problem dabei ist, dass der Zustand des gedrückten Buttons so kurz ist,
dass es vom PC nicht erfasst wird.
Das ganze basiert auf dem Code vom RedKontroll-Projekt.
Hier der entscheidende Code:
1 | encTemp= encoderIn(PINB&0b11111111, lastPINB, 0, 1);
|
2 | if(encTemp==1)
|
3 | {
|
4 | //enc0--;
|
5 | but1=0b00000001;
|
6 | changed= 2;
|
7 | lastPINB= PINB&0b11111111;
|
8 | }
|
9 | else if(encTemp==2)
|
10 | {
|
11 | //enc0++;
|
12 | but1=0b00000010;
|
13 | changed= 2;
|
14 | lastPINB= PINB&0b11111111;
|
15 | }
|
16 | else
|
17 | {
|
18 | but1 = 0;
|
19 | }
|
but1 enthält die entsprechenden Buttons, entsprechend der
links/rechts-Rotation wird entweder Button 0 oder 1 gesetzt bzw bei
keiner Rotation alle auf 0. Die Theorie sollte passen, aber selbst mit
Vergrößerung des Abfrageintervalls habe ich keine Änderung im Verhalten.
Hat jemand eine Idee was ich machen könnte?
Grüße, ElGreco