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 Sanna - 7.04.2009 13:30)
Als Antwort auf Re: Programm bricht immer ab von PeterS - 6.04.2009 18:07
Ich nutze:
C-Control Pro Mega32
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?

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:

Re: Programm bricht immer ab (von PeterS - 8.04.2009 19:14)