Hi, ich habe untenstehende funktion geschrieben und wollte diese nun mit dem Simulator von AVR studio simulieren, doch irgendwie überspringt er einfach die if(bit_is_set(PIND,button1)) if schleifen!! hat jemand ne idee woran das liegt ??? void get_keys(void) { static unsigned char keypress = 0; unsigned char key; if (keypress) { if(bit_is_set(PIND,button1)) { if (keytime < 8 && keytime > 0) { aufgabe = play; keypress = 0; } } else { if (keytime > 8) { aufgabe = stop; keypress = 0; } } } else { if (bit_is_clear(PIND,button1)) { key = 1; if (keypress && keytime > 0) { keypress = key; } if (key == 0) { keytime = 0; } } }
Hallo Jörn! >doch irgendwie überspringt er einfach die if(bit_is_set(PIND,button1)) >if schleifen! Was heist denn "überspringt"? Gruß, Patrick...
Wann wird den die Variable "keypress" auf 1 gesetzt. Wenn Du die am Anfang der Funktion neu initialisierst wird der erste Teil nie ausgeführt. Werner
Hi, mit überspringt meine ich, das er das was in der if schleife steht nicht ausführt auch wenn z.b keypress auf 1 ist und portd, button1 auf 1 ist Ich dachte wenn ich schreibe static char keypress schreibe wird die variable nur einmal initialisiert oder ist das falsch? MFG Jörn
Hallo Jörn! Mach die Variable "keypress" global, dann wird's warscheinlich Funktionieren. Gruß, Patrick...
Nö, eine statische Variable in der Funktion hat die gleiche Wirkung. Funktioniert's denn nur im Simulator nicht, oder auch in der realen Welt? Allerdings erscheint mir die Logik im obersten `else' suspekt: Du setzt key auf 1 und hast weiter unten ein `if (key == 0)', das folglich nie erreicht werden kann.
Hi, @Jörg Wunsch Also in der realen Welt läufts auch nicht!!! Stimmt das macht wirklich keinen sinn, das if(key == 0) muss in die untere else schleife. MFG Jörn
Hi, erstmal Danke für eure Hilfe!!!! Mein Prog läuft nun einwandfrei!!! Im Simulator sowie in der Realen Welt!! Wo genau das Prob war weiß ich nicht so genau, könnte es denn daran gelegen haben das ich mitten in einer endlosschleife eine variable initialisiert habe?? Nun kann ich endlich Tasten per interrupt abfragen!!! MFG Jörn
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.