Igge3004
03.04.2014, 21:45
Hallo,
ich habe ein Problem mit meinem C-Code und komme irgend wie nicht dahinter warum :(
Unten ein Ausschnitt aus meinem Programm. Ich habe diverse Test LEDs zwischen geschaltet um zu testen wo ich im Ablaufprogramm hängen bleibe. Ich komme in die Stop Routine rein bis unten zu den letzten Zeilen durchläuft er das Programm ohne Fehler. Auch die TestLED4 wird gesetzt. Mein Problem ist jetzt das er mir die Variable Stop (zum verlassen der Stop Routine) nicht auf 0 setzt. Wenn er das machen würde müsste die TestLED0 wieder aus gehen und das tut sie nicht und mein "normales" Ablaufprogramm bleibt gesperrt. Also warum setzt er die TestLED4 aber Stop nicht auf 0 obwohl beide in der gleichen if-Schleife sind? Ich hoffe mir kann hier einer weiter helfen bin grad am Verzweifeln :(
Programmiert ist alles mit dem Atmel AVR Studio 6 Version 6.1.2730 mit dem STK600 Experimentierboard.
Ich sag schon mal Danke für alle Tips ;)
// Auswertung Stop Variable ob 0 oder 1
if (Stop==0) {
PORTB &= ~(1 << TestLED0);}
if (Stop==1) {
PORTB |= (1 << TestLED0);}
// -------------- Programmabschnitt Stop --------------------------
// Auswertung Stop Routine
if (Stop==1){
if ((Stop_aktiv==0) && (Schluessel_auf==0) && (Schluessel_zu==0)) {
Stop_aktiv=1;
PORTB |= (1<<TestLED1);} // Ansteuerung von Test LEDs
PORTB |= (1<<TestLED2);
if ((Pointer_oeffnen>=1) && (Stop_aktiv==1)){ // Auswertung Programm öffnen aktiv
cli();// Globale Interuptfreigabe löschen
if (Schluessel_auf==1) { // Auswertung das "Schlüssel auf" betätigt wurde
Stop=0; // Stop Routine verlassen
PORTB |= (1<<TestLED4);
Stop_aktiv=0;}
sei(); }
ich habe ein Problem mit meinem C-Code und komme irgend wie nicht dahinter warum :(
Unten ein Ausschnitt aus meinem Programm. Ich habe diverse Test LEDs zwischen geschaltet um zu testen wo ich im Ablaufprogramm hängen bleibe. Ich komme in die Stop Routine rein bis unten zu den letzten Zeilen durchläuft er das Programm ohne Fehler. Auch die TestLED4 wird gesetzt. Mein Problem ist jetzt das er mir die Variable Stop (zum verlassen der Stop Routine) nicht auf 0 setzt. Wenn er das machen würde müsste die TestLED0 wieder aus gehen und das tut sie nicht und mein "normales" Ablaufprogramm bleibt gesperrt. Also warum setzt er die TestLED4 aber Stop nicht auf 0 obwohl beide in der gleichen if-Schleife sind? Ich hoffe mir kann hier einer weiter helfen bin grad am Verzweifeln :(
Programmiert ist alles mit dem Atmel AVR Studio 6 Version 6.1.2730 mit dem STK600 Experimentierboard.
Ich sag schon mal Danke für alle Tips ;)
// Auswertung Stop Variable ob 0 oder 1
if (Stop==0) {
PORTB &= ~(1 << TestLED0);}
if (Stop==1) {
PORTB |= (1 << TestLED0);}
// -------------- Programmabschnitt Stop --------------------------
// Auswertung Stop Routine
if (Stop==1){
if ((Stop_aktiv==0) && (Schluessel_auf==0) && (Schluessel_zu==0)) {
Stop_aktiv=1;
PORTB |= (1<<TestLED1);} // Ansteuerung von Test LEDs
PORTB |= (1<<TestLED2);
if ((Pointer_oeffnen>=1) && (Stop_aktiv==1)){ // Auswertung Programm öffnen aktiv
cli();// Globale Interuptfreigabe löschen
if (Schluessel_auf==1) { // Auswertung das "Schlüssel auf" betätigt wurde
Stop=0; // Stop Routine verlassen
PORTB |= (1<<TestLED4);
Stop_aktiv=0;}
sei(); }