Hallo,
ich kenne mich zwar mit Programmierung aus, aber sowas ist mir echt noch
nie passiert! Das verhalten vom µC ergibt einfach null sinn!
Ich poste euch mal den Source:
1 | if(joystick_rightleft > JOYSTICK_IS_RIGHT) // Wurde nach rechts geklickt?
|
2 | {
|
3 | if(level_zero >= DISPLAY_LEVEL_ZERO_MAX) // Ist man am rechten Rand?
|
4 | {
|
5 | level_zero = 0; // Setze wieder auf linken Rand zurück
|
6 | }
|
7 | else
|
8 | {
|
9 | level_zero++; // Gehe eins nach rechts
|
10 | }
|
11 | display_test(joystick_rightleft,JOYSTICK_IS_RIGHT);
|
12 | }
|
13 | else if(joystick_rightleft < JOYSTICK_IS_LEFT) // Wurde nach links geklickt?
|
14 | {
|
15 | if(level_zero <= 0) // Ist man am linken Rand?
|
16 | {
|
17 | level_zero = DISPLAY_LEVEL_ZERO_MAX; // Setze wieder auf rechten Rand zurück
|
18 | }
|
19 | else
|
20 | {
|
21 | level_zero--; // Gehe eins nach links
|
22 | }
|
23 | }
|
Zur erklärung:
joystick_rightleft ist ein Wert zwischen 0 und 255 und wird über den ADC
eingelesen. (von einem Joystick). Standart ist 63, wenn Joystick ganz
links ist 02 und wenn ganz rechts fe.
JOYSTICK_IS_RIGHT ist über define definiert und ist F0. Wenn
joystick_irghtleft größer ist, soll eine Variable hochgezählt werden.
Zu Testzwecken gebe ich das ganze aber auf einem Display aus (mit der
Funktion display_test).
JETZT KOMMT DAS LUSTIGE AN DER SACHE:
Egal wie groß joystick_rightleft ist, es wird immer am Display was
ausgegeben (und somit auch meine Variable andauernt erhöht!!!). Ich habe
absolut keine Ahnung, warum! Ich lasse mir beide Variablen ja ausgeben
auf dem Display und was soll ich sagen? rightleft ist definitiv kleiner
als IS_RIGHT und er zählt trotzdem rauf! (und zeigt auf dem Display an!)
Ich habe jetzt schon wirklich extrem viel ausprobiert, aber es geht
einfach trotzdem nicht! Ich sitze an so einem blöden Fehler jetzt schon
3 Stunden und habe jetzt wirklich KEINE AHNUNG mehr!
Bitte helft mir! (tut mir leid wegen Großschreibung bei Topic, aber ich
bin wirklich absolut am Ende von meinem Latein!)