Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Programm bricht immer ab Kategorie: Programmierung C (von PeterS - 6.04.2009 18:07)
Als Antwort auf Programm bricht immer ab von Sanna - 6.04.2009 16:38


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:

Re: Programm bricht immer ab (von Sanna - 7.04.2009 13:30)
    Re: Programm bricht immer ab (von PeterS - 8.04.2009 19:14)