Re: Programm bricht immer ab Kategorie: Programmierung C (von PeterS - 8.04.2009 19:14) | |
Als Antwort auf Re: Programm bricht immer ab von Sanna - 7.04.2009 13:30
| |
> Hallo Peter, > das habe ich auch schon gemacht und sehe einfach nur, dass das Programm beim Absdelay abbricht. > Komischerweise manchmal auch einfach an ganz unterschiedlichen Stellen. Da sehe ich überhaupt keine > Logik hinter. Könnte das vielleicht auch an einem Hardewareproblem liegen� Also das irgendwas mit der > C-Control nicht stimmt? Hallo Sanna, schick mir doch mal das Projekt mit allen Dateien an ccpro@gmx.de. Falls möglich, verkleiner das Programm so, das unnötiger Ballast weg ist, aber der Fehler noch zu erkennen ist. Ich schau dann mal rein. Gruss Peter > > Gru� > Sanna > > > > Hallo Sanna, > > > > leider sehe ich in Deinem gekürzten Listing nicht warum die LED nur kurz aufblinkt. Aber dafür gibt es > > ja Debugger, setze einfach Breakpoints an turbine1 und turbin2 und SingleStep bis Du siehst, warum > > die LEDs nicht dauerhaft blinken. > > > > Gruss Peter > > > > > Hallo ihr Lieben! > > > Ich hab ein problem mit meiner C-Control Pro. Ich will, dass sie bei verschiedenen tasteneingaben am Display > > > etwas ausgibt. Das funktionierte auch super. Nur soll jetzt zusätzlich eine LED blinken. Das ging zuerst > > > auch, nur auf einmal bricht das programm einfach ab und lässt die LED nur einmal kurz aufzucken. > > > Vielleicht kann mmir ja jemand helfen. Wäre toll! > > > Hier mein Code von der Eingaberoutine: (ist vielleicht etwas lang und kompliziert geschrieben) > > > In den Funktionen turbine1() und turbine2() steht (bei trubine2 ist das Absdelay dann 1000): > > > void turbine1(void) > > > { > > > Port_WriteBit(PORT_LED1,PORT_ON); //LED1 blinkt mit 0,5 Hz > > > AbsDelay(2000); > > > Port_WriteBit(PORT_LED1,PORT_OFF); > > > AbsDelay(2000); > > > } > > > > > > //Tasteneingabe > > > > > > void Eingabe(void) > > > { > > > key=Key_Scan(); //liest das keyboard > > > key_ch=Key_TranslateKey(key); //Wandelt Eingabe in ASCII code um > > > > > > Msg_WriteHex(key); //schreibt gedrückt taste als Hex_wert in Ausgabe-Fenster > > > Msg_WriteText(crlf); // Absatz im Ausgabe-Fenster > > > > > > if (key_ch==49) //Bediener schaltet ein. Taste1 > > > { > > > LCD_CursorOff(); > > > LCD_ClearLCD(); > > > LCD_CursorPos(0x00); > > > LCD_WriteText(status0); // Gerät zeigt, dass es angeschlaten wurde "on" > > > do > > > { > > > key=Key_Scan(); //liest das keyboard erneut und zwar solange bis Taste2 gedrückt > > > key_ch=Key_TranslateKey(key); //wurde, so wird verhindert, dass aus Schleife gesprungen wird > > > Msg_WriteHex(key); //schreibt gedrückt taste als Hex_wert in Ausgabe-Fenster > > > Msg_WriteText(crlf); // Absatz im Ausgabe-Fenster > > > }while(key_ch!=50); // falls keine tasteoder eine andere gedrückt wird > > > > > > > > > if (key_ch==50) // Wenn Taste 2 gedrückt wurde (Sensoreingänge liefern ok),dann zeigt das Gerät > > > { // "Ready" an > > > LCD_CursorOff(); > > > LCD_ClearLCD(); > > > LCD_CursorPos(0x00); > > > LCD_WriteText(status1); > > > do > > > { > > > key=Key_Scan(); //liest das keyboard wieder bis Taste3 gedrückt wurde. Erklärung siehe Oben > > > key_ch=Key_TranslateKey(key); > > > Msg_WriteHex(key); //schreibt gedrückt taste als Hex_wert in Ausgabe-Fenster > > > Msg_WriteText(crlf); // Absatz im Ausgabe-Fenster > > > }while(key_ch!=51); > > > > > > if (key_ch==51) // Wenn taste3 gedrückt wurde, zeigt das Gerät dies an > > > { > > > LCD_CursorOff(); > > > LCD_ClearLCD(); > > > LCD_CursorPos(0x00); > > > LCD_WriteText(status3); > > > > > > do > > > { > > > turbine1(); > > > key=Key_Scan(); //liest das keyboard wieder bis Taste3 gedrückt wurde. Erklärung siehe Oben > > > key_ch=Key_TranslateKey(key); > > > Msg_WriteHex(key); //schreibt gedrückt taste als Hex_wert in Ausgabe-Fenster > > > Msg_WriteText(crlf); > > > }while(key_ch!=52); > > > > > > if (key_ch==52) // Wenn taste 4 gedrückt wurde > > > { > > > > > > LCD_CursorOff(); > > > LCD_ClearLCD(); > > > LCD_CursorPos(0x00); > > > LCD_WriteText(status4); > > > do > > > { > > > turbine2(); > > > Msg_WriteHex(key); //schreibt gedrückt taste als Hex_wert in Ausgabe-Fenster > > > Msg_WriteText(crlf); > > > }while(true); > > > } > > > } > > > } > > > } > > > } > > > > > > Vielen vielen Dank | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum