mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MEGA32, Speicher schon voll?


Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

kann es sein dass dieser Programm-Code schon meinen C-Control MEGA32 zum 
erliegen bringt? Müssten dann schon 32kb überschritten sein
//Florian Krämer
//PROTRAC-KLEMP3


 void Fehler_Out (void)
 {
 switch (F)
        {
            case 1:
                LCD_CLR();                          //LCD löschen
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1
                Text = "Fehler";                    //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben
                LCD_Locate_Ext(2,1);                //Zeile 1, Pos 1
                Text = "Pruefschritt 1";            //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben

                AbsDelay(2000);                     //Verzögerung in ms

                switch (F1)
                {
                    case 1:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Unterbrechung";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - KL2-4";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                    case 2:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - KL2-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 3:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - KL2-3";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 4:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - KL2-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 5:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - KL1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 6:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - KL1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                }
                break;

            case 2:
                LCD_CLR();                          //LCD löschen
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1
                Text = "Fehler";                    //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben
                LCD_Locate_Ext(2,1);                //Zeile 1, Pos 1
                Text = "Pruefschritt 2";            //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben

                AbsDelay(2000);                     //Verzögerung in ms

                switch (F1)
                {
                    case 1:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Unterbrechung";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - BU1-4";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                    case 2:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - BU1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 3:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - BU1-3";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 4:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - BU1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 5:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - KL1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 6:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-5 - KL1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                }
                break;

            case 3:
                LCD_CLR();                          //LCD löschen
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1
                Text = "Fehler";                    //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben
                LCD_Locate_Ext(2,1);                //Zeile 1, Pos 1
                Text = "Pruefschritt 3";            //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben

                AbsDelay(2000);                     //Verzögerung in ms

                switch (F1)
                {
                    case 1:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - KL2-4";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                    case 2:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Unterbrechung";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - KL2-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 3:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - KL2-3";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 4:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - KL2-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 5:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - KL1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 6:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - KL1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                }
                break;

            case 4:
                LCD_CLR();                          //LCD löschen
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1
                Text = "Fehler";                    //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben
                LCD_Locate_Ext(2,1);                //Zeile 1, Pos 1
                Text = "Pruefschritt 4";            //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben

                AbsDelay(2000);                     //Verzögerung in ms

                switch (F1)
                {
                    case 1:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - BU1-4";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                    case 2:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Unterbrechung";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - BU1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 3:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - BU1-3";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 4:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - BU1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 5:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - KL1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 6:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-6 - KL1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                }
                break;

            case 5:
                LCD_CLR();                          //LCD löschen
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1
                Text = "Fehler";                    //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben
                LCD_Locate_Ext(2,1);                //Zeile 1, Pos 1
                Text = "Pruefschritt 5";            //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben

                AbsDelay(2000);                     //Verzögerung in ms

                switch (F1)
                {
                    case 1:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-4";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                    case 2:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 3:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Unterbrechung";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-3";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 4:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 5:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 6:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                }
                break;

            case 6:
                LCD_CLR();                          //LCD löschen
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1
                Text = "Fehler";                    //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben
                LCD_Locate_Ext(2,1);                //Zeile 1, Pos 1
                Text = "Pruefschritt 6";            //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben

                AbsDelay(2000);                     //Verzögerung in ms

                switch (F1)
                {
                    case 1:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - BU1-4";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                    case 2:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - BU1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 3:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Unterbrechung";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - BU1-3";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 4:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - BU1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 5:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 6:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                }
                break;

            case 7:
                LCD_CLR();                          //LCD löschen
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1
                Text = "Fehler";                    //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben
                LCD_Locate_Ext(2,1);                //Zeile 1, Pos 1
                Text = "Pruefschritt 7";            //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben

                AbsDelay(2000);                     //Verzögerung in ms

                switch (F1)
                {
                    case 1:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - KL2-4";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                    case 2:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - KL2-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 3:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - KL2-3";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 4:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Unterbrechung";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - KL2-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 5:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - KL1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 6:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - KL1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                }
                break;

            case 8:
                LCD_CLR();                          //LCD löschen
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1
                Text = "Fehler";                    //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben
                LCD_Locate_Ext(2,1);                //Zeile 1, Pos 1
                Text = "Pruefschritt 8";            //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben

                AbsDelay(2000);                     //Verzögerung in ms

                switch (F1)
                {
                    case 1:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - BU1-4";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                    case 2:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - BU1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 3:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - BU1-3";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 4:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Unterbrechung";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - BU1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 5:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - KL1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 6:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-8 - KL1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                }
                break;
            }
 }

Und wenn ja, gibt es eine Möglichkeit diese Fehlerausgabe Ressourcen 
schonender zu schreiben?

Autor: Stefan B. (blueberlin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
selbst wenn der speicher voll sein sollte, das programm kann man noch 
sehr stark optimieren und bestimmt noch mehrere kb einsparen.

Wie genau das sollte dir vielleicht selbst bei den case sprüngen 
sichtbar sein, warum schreibst du jedes mal die ganzen zeilen wie 
display löschen usw... das reicht doch einmal und nur die beiden zeilen 
text sind jedes mal anders das reicht doch wenn du das in den case 
bereich schreibst.

Autor: Nick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da du nicht den gesamten Quellcode zeigst (mir fehlen da sämtliche 
Includes usw.) ist das schwer zu sagen. So oder so ist der Quellcode 
aber extrem ineffizient.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was auf jeden Fall zu Optimieren ist:

Sachen wie
Text = "Fehler"; 
brauchen doppelt Platz. Einmal für den String "Fehler" im Flash, einmal 
für eine komplett unnötige Kopie desselben Strings im eh schon knappen 
RAM!
=> PSTR, pgmspace.h, ...

und, wie ist "AbsDelay" definiert?

hoffentlich als Variante von
void AbsDelay(uint16_t x) {
  while (x--) _delay_ms(1.0);
}
und nicht als
void AbsDelay(uint16_t x) {
  _delay_ms(x);
}

Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem ist, dass das mein erstes größeres Projekt ist. Ich habe bis 
jetzt nur Lauflichter, Uhren, kleinere Steuerungen, etc... programmiert. 
Und dies habe ich immer zum Laufen gebracht.(Wahrscheinlich halt auch 
mit jede Menge zu vielem Code)

Das mit dem LCD löschen ist klar, habe ich jetzt ganz nach oben gesetzt.

Text "Fehler" kann ich ja in ein Unterprogramm packen und dann aufrufen. 
Oder gibt es da eine bessere Lösung?
 void fehler (void)
 {
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1
                Text = "Fehler";                    //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben
 }

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kraemer90 schrieb:
> Oder gibt es da eine bessere Lösung?

Ja, indem du den Text im Programmspeicher ablegst; siehe dazu die 
entsprechenden Abschnitte im AVR-GCC-Tutorial

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leg dir deine Fehlermeldungen als konstanten String im Flash ab, am 
besten sogar als Array.
Dann greifst du mit dem Fehlerindex auf diese Array zu und holst dir den 
auszugebenden Text.
Damit sparst du dir die ganze switch-Konstruktion.
:-)

Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein weiteres Problem ist auch dass ich C Control von Conrad habe, da 
gehen die speziellen Befehle nicht.

"Deklarationen von Variablen im Flash-Speicher werden durch das 
"Attribut" PROGMEM ergänzt."

PROGMEM funktioniert bei mir aber nicht, der Compiler bringt folgende 
Fehlermeldung:

Syntax Fehler - unerwartetes Symbol: 'PROGMEM'
ein Fehler - Kompilation abgebrochen.

char fehler PROGMEM = "Fehler";

Autor: !Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kraemer90 schrieb:
>
char fehler PROGMEM = "Fehler";

Das ist in der Tat ein Fehler...
 char fehler[] = "Fehler"; 

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kraemer90 schrieb:
> PROGMEM funktioniert bei mir aber nicht, der Compiler bringt folgende
> Fehlermeldung:
>
> Syntax Fehler - unerwartetes Symbol: 'PROGMEM'
> ein Fehler - Kompilation abgebrochen.

Ja was für einen Compiler, der Deutsche Fehlermeldungen ausgibt, hast du 
denn?

Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C-Control-Pro IDE, bei anderen läuft ja der C-Control-Controller nicht

Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
!Gast schrieb:
> kraemer90 schrieb:
>>char fehler PROGMEM = "Fehler";
> Das ist in der Tat ein Fehler... char fehler[] = "Fehler";

char fehler[] = "Fehler";

Syntax Fehler - unerwartetes Symbol: '[]'
ein Fehler - Kompilation abgebrochen.

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kraemer90 schrieb:
> C-Control-Pro IDE, bei anderen läuft ja der C-Control-Controller nicht
Achso, (fast) alles hier verwendet GCC, keine Ahnung wie man das der 
komischen C-Control-IDE beibringt. Afaik basieren die neueren C-Controls 
auf AVRs, also sollte einer Verwendung von anderen / besseren :> 
Compilern nichts im Wege stehen.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kraemer90 schrieb:
> char fehler[] = "Fehler";
> Syntax Fehler - unerwartetes Symbol: '[]'
> ein Fehler - Kompilation abgebrochen.

dann ist der c-compiler schrott

Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, habe ich auch schon gemerkt, aber laut Recherchen hier im Forum 
bekommt man das Programm nur mit dem C Control PRO IDE auf den 
Controller übertragen. Und einfach ein Hex-File einlesen geht auch 
nicht.

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was Für ein Board hast du denn? Vielleicht ist da ja eine 
ISP-Schnittstelle drauf. (Ich geh' mal davon aus, dass C-Control einen 
Bootloader verwendet)

Autor: !Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kraemer90 schrieb:
> !Gast schrieb:
>> kraemer90 schrieb:
>>>char fehler PROGMEM = "Fehler";
>> Das ist in der Tat ein Fehler... char fehler[] = "Fehler";
>
>
>
char fehler[] = "Fehler";
>
> Syntax Fehler - unerwartetes Symbol: '[]'
> ein Fehler - Kompilation abgebrochen.

Dann ist die benutzte Sprache nicht C.

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zur ursprünglichen Frage zurück: Vielleicht ist der C-Control Compiler 
so minderbemittelt und produziert furchtbar großen Code?

Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.c-control.de/c-control-pro/c-control-pr...

Ja das stimmt, nennt sich CompactC

Ich habe auch das Application Board von Conrad

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kraemer90 schrieb:
> Ich habe auch das Application Board von Conrad

Das ist egal. Welches Mikroprozessorboard hast du?

Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Darüber gibt es keine Informationen. Welcher Controller unter der 
"Metallhaube" steckt weiß nur Conrad.

http://www.conrad.de/ce/de/product/198206/;jsessio...

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kraemer90 schrieb:
> Darüber gibt es keine Informationen. Welcher Controller unter der
Hmm.. das Ding heißt Mega32, da könnte doch ein .... ATmega32 
drunterstecken...
Mein Rat: Wenn du's ernst meinst, Vergiss' C-Control

Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das muss ich dann erstmal mit meinem Beauftragten abklären, ist nämlich 
ein Projekt für den Betrieb (Ich bin auch noch Azubi). Für kleinere 
Sachen ist es ja auch recht einfach, man hat in kürzester Zeit etwas am 
laufen. Für komplexere Dinge ist aber gleich Schluss...

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kraemer90 schrieb:
> Darüber gibt es keine Informationen. Welcher Controller unter der
> "Metallhaube" steckt weiß nur Conrad.

das ist ein atmel mega32.
Im Datenblatt/Handbuch gibts Schaltpläne, Pinzuordnung...
http://www.produktinfo.conrad.com/datenblaetter/17...
:-)

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im C-Control Mega32 ist ein ATmega32 drin, im Mega128 ein ATmega128.

Das Entwicklungssystem ist kein Compiler im herkömmlichen Sinn.
Auf dem ATmega läuft ein Tokeninterpreter, der CompactC-Quellcode wird 
in Tokens übersetzt (so ähnlich wie Java) und auf einer virtuellen 
Maschine am ATmega ausgeführt.

Text = "Verbindung";        //auszugebender Text

"Verbindung" liegt automatisch nur im Flash, das PROGMEM Attribut wird 
hier nicht benötigt.

Und Text ist ja nur einmal definiert, es wird also auch nicht besonders 
viel RAM verschwendet.

Allerdings sollte man sich schon überlegen, ähnliche Textausgaben so 
aufzuteilen, dass gleich lautende Texte in Funktionen gruppiert werden.

Eben genau so, aber mit allem, das öfter vorkommt:
 void fehler (void)
 {
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1
                Text = "Fehler";                    //auszugebender Text
                LCD_Write_Text_Ext();               //Text schreiben
 }

Dann dürfte das Speicherproblem schon gelöst sein.

Grüße,

Peter

Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Allerdings sollte man sich schon überlegen, ähnliche Textausgaben so
> aufzuteilen, dass gleich lautende Texte in Funktionen gruppiert werden.
>
> Dann dürfte das Speicherproblem schon gelöst sein.
>
> Grüße,
>
> Peter

Ich werde jetzt erstmal alles was mehrmals vorkommt in Unterprogramme 
gruppieren und dann mal weiter programmieren.

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann gibt es in deinem Programm noch jede Menge Konstrukte, die man 
vereinfachen kann:

z.B.:
 switch (F1)
                {
                    case 1:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-4";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                    case 2:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 3:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Unterbrechung";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-3";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 4:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 5:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL1-1";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;

                    case 6:
                        LCD_CLR();                  //LCD löschen
                        LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL1-2";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                    break;
                }


lässt sich problemlos vereinfachen in:
void Write_Verbindung()
{
                        Text = "Verbindung";        //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
}


//in void Fehler_Out (void)

 LCD_CLR();                  //LCD hier löschen, denn das machen wir in jedem case
 LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1, machen wir auch immer
 switch (F1)
                {
                    case 1:
                        Write_Verbindung();
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-4";     //auszugebender Text
                    break;

                    case 2:
                        Write_Verbindung();
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-1";     //auszugebender Text
                    break;

                    case 3:
                        Text = "Unterbrechung";     //auszugebender Text
                        LCD_Write_Text_Ext();       //Text schreiben
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-3";     //auszugebender Text
                    break;

                    case 4:
                        Write_Verbindung();
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL2-2";     //auszugebender Text
                    break;

                    case 5:
                        Write_Verbindung();
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL1-1";     //auszugebender Text
                    break;

                    case 6:
                        Write_Verbindung();
                        LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
                        Text = "BU2-7 - KL1-2";     //auszugebender Text
                    break;
                }
LCD_Write_Text_Ext();       //Text schreiben, hier ein Mal für alle Fälle


Und das ist bei weitem noch nicht alles, was man da machen kann.

Grüße,

Peter

Autor: kraemer90 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So kann man das jetzt noch weiter zusammenfassen und den code 
verkleinern?
//Florian Krämer
//PROTRAC-KLEMP3


 void Fehler_Out (void)
 {
 clr_pos1();                                        //LCD-Löschen und Cursor an Position 1 setzen
 fehler();                                          //"Fehler" ausgeben
 LCD_Locate_Ext(2,1);                               //Zeile 2, Pos 1

 switch (F)
        {


            case 1:

                Text = "Pruefschritt 1";            //auszugebender Text
                write_w8_clr();                     //Text schreiben, Warten, LCD Löschen

                switch (F1)
                {
                    case 1:
                        unterbrechung();            //Unterbrechung wurd ausgegeben
                        Text = "BU2-5 - KL2-4";     //auszugebender Text
                    break;
                    case 2:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-5 - KL2-1";     //auszugebender Text
                    break;

                    case 3:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-5 - KL2-3";     //auszugebender Text
                    break;

                    case 4:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-5 - KL2-2";     //auszugebender Text
                    break;

                    case 5:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-5 - KL1-1";     //auszugebender Text
                    break;

                    case 6:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-5 - KL1-2";     //auszugebender Text

                    break;
                }
                break;

            case 2:
                Text = "Pruefschritt 2";            //auszugebender Text
                write_w8_clr();                     //Text schreiben, Warten, LCD Löschen

                switch (F1)
                {
                    case 1:
                        unterbrechung();            //Unterbrechung wurd ausgegeben
                        Text = "BU2-5 - BU1-4";     //auszugebender Text
                    break;
                    case 2:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-5 - BU1-1";     //auszugebender Text
                    break;

                    case 3:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-5 - BU1-3";     //auszugebender Text
                    break;

                    case 4:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-5 - BU1-2";     //auszugebender Text
                    break;

                    case 5:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-5 - KL1-1";     //auszugebender Text
                    break;

                    case 6:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-5 - KL1-2";     //auszugebender Text
                    break;
                }
                break;

            case 3:
                Text = "Pruefschritt 3";            //auszugebender Text
                write_w8_clr();                     //Text schreiben, Warten, LCD Löschen

                switch (F1)
                {
                    case 1:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-6 - KL2-4";     //auszugebender Text
                    break;
                    case 2:
                        unterbrechung();            //Unterbrechung wurd ausgegeben
                        Text = "BU2-6 - KL2-1";     //auszugebender Text
                    break;

                    case 3:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-6 - KL2-3";     //auszugebender Text
                    break;

                    case 4:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-6 - KL2-2";     //auszugebender Text
                    break;

                    case 5:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-6 - KL1-1";     //auszugebender Text
                    break;

                    case 6:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-6 - KL1-2";     //auszugebender Text
                    break;
                }
                break;

            case 4:
                Text = "Pruefschritt 4";            //auszugebender Text
                write_w8_clr();                     //Text schreiben, Warten, LCD Löschen
                switch (F1)
                {
                    case 1:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-6 - BU1-4";     //auszugebender Text
                    break;
                    case 2:
                        unterbrechung();            //Unterbrechung wurd ausgegeben
                        Text = "BU2-6 - BU1-1";     //auszugebender Text
                    break;

                    case 3:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-6 - BU1-3";     //auszugebender Text
                    break;

                    case 4:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-6 - BU1-2";     //auszugebender Text
                    break;

                    case 5:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-6 - KL1-1";     //auszugebender Text
                    break;

                    case 6:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-6 - KL1-2";     //auszugebender Textn
                    break;
                }
                break;

            case 5:
                Text = "Pruefschritt 5";            //auszugebender Text
                write_w8_clr();                     //Text schreiben, Warten, LCD Löschen

                switch (F1)
                {
                    case 1:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-7 - KL2-4";     //auszugebender Text
                    break;
                    case 2:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-7 - KL2-1";     //auszugebender Text
                    break;

                    case 3:
                        unterbrechung();            //Unterbrechung wurd ausgegeben
                        Text = "BU2-7 - KL2-3";     //auszugebender Text
                    break;

                    case 4:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-7 - KL2-2";     //auszugebender Text
                    break;

                    case 5:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-7 - KL1-1";     //auszugebender Text
                    break;

                    case 6:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-7 - KL1-2";     //auszugebender Text
                    break;
                }
                break;

            case 6:
                Text = "Pruefschritt 6";            //auszugebender Text
                write_w8_clr();                     //Text schreiben, Warten, LCD Löschen

                switch (F1)
                {
                    case 1:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-7 - BU1-4";     //auszugebender Text
                    break;
                    case 2:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-7 - BU1-1";     //auszugebender Text
                    break;

                    case 3:
                        unterbrechung();            //Unterbrechung wurd ausgegeben
                        Text = "BU2-7 - BU1-3";     //auszugebender Text
                    break;

                    case 4:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-7 - BU1-2";     //auszugebender Text
                    break;

                    case 5:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-7 - KL1-1";     //auszugebender Text
                    break;

                    case 6:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-7 - KL1-2";     //auszugebender Text
                    break;
                }
                break;

            case 7:
                Text = "Pruefschritt 7";            //auszugebender Text
                write_w8_clr();                     //Text schreiben, Warten, LCD Löschen

                switch (F1)
                {
                    case 1:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - KL2-4";     //auszugebender Text
                    break;
                    case 2:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - KL2-1";     //auszugebender Text
                    break;

                    case 3:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - KL2-3";     //auszugebender Text
                    break;

                    case 4:
                        unterbrechung();            //Unterbrechung wurd ausgegeben
                        Text = "BU2-8 - KL2-2";     //auszugebender Text
                    break;

                    case 5:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - KL1-1";     //auszugebender Text
                    break;

                    case 6:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - KL1-2";     //auszugebender Text
                    break;
                }
                break;

            case 8:
                Text = "Pruefschritt 8";            //auszugebender Text
                write_w8_clr();                     //Text schreiben, Warten, LCD Löschen

                switch (F1)
                {
                    case 1:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - BU1-4";     //auszugebender Text
                    break;
                    case 2:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - BU1-1";     //auszugebender Text
                    break;

                    case 3:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - BU1-3";     //auszugebender Text
                    break;

                    case 4:
                        unterbrechung();            //Unterbrechung wurd ausgegeben
                        Text = "BU2-8 - BU1-2";     //auszugebender Text
                    break;

                    case 5:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - KL1-1";     //auszugebender Text
                    break;

                    case 6:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - KL1-2";     //auszugebender Text
                    break;
                }
                break;
            }
    LCD_Write_Text_Ext();       //Text schreiben
 }

 void fehler (void)
 {
    Text = "Fehler";                    //auszugebender Text
    LCD_Write_Text_Ext();               //Text schreiben
 }

 void verbindung (void)
 {
    LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
    Text = "Verbindung";        //auszugebender Text
    LCD_Write_Text_Ext();       //Text schreiben
    LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
 }

 void unterbrechung (void)
 {
    LCD_Locate_Ext(1,1);        //Zeile 1, Pos 1
    Text = "Unterbrechung";     //auszugebender Text
    LCD_Write_Text_Ext();       //Text schreiben
    LCD_Locate_Ext(2,1);        //Zeile 1, Pos 1
 }

void write_w8_clr (void)        //Text schreiben, Warten, LCD Löschen
{
    LCD_Write_Text_Ext();       //Text schreiben
    AbsDelay(2000);             //Verzögerung in ms
    LCD_CLR();                  //LCD löschen
}

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da geht noch viel mehr:
switch (F1)
                {
                    case 1:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - BU1-4";     //auszugebender Text
                    break;
                    case 2:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - BU1-1";     //auszugebender Text
                    break;

                    case 3:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - BU1-3";     //auszugebender Text
                    break;

                    case 4:
                        unterbrechung();            //Unterbrechung wurd ausgegeben
                        Text = "BU2-8 - BU1-2";     //auszugebender Text
                    break;

                    case 5:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - KL1-1";     //auszugebender Text
                    break;

                    case 6:
                        verbindung();               //Verbindung wird ausgegeben
                        Text = "BU2-8 - KL1-2";     //auszugebender Text
                    break;
                }
                break;

kann man in etwas so verkleinern.
char* Texte[] = {"BU2-8 - BU1-4", "BU2-8 - BU1-1", "BU2-8 - BU1-3", "BU2-8 - BU1-2", "BU2-8 - BU1-3", "BU2-8 - BU1-2", "BU2-8 - KL1-1","BU2-8 - KL1-2"};
verbindung();
Text = Texte[F1]; 

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es einen mathematisch ausdrückbaren Zusammenhang zwischen F/F1 und 
BUn-o - KLp-q ?

Peter schrieb:
> char* Texte[]
Doch an ebendem scheitert die minderbemittelte C-Control IDE :(

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> char* Texte[] = {"BU2-8 - BU1-4", "BU2-8 - BU1-1", "BU2-8 - BU1-3", "BU2-8 - 
BU1-2", "BU2-8 - BU1-3", "BU2-8 - BU1-2", "BU2-8 - KL1-1","BU2-8 - KL1-2"};
> verbindung();
> Text = Texte[F1];

Da wärs noch perfekt, wenn du die Texte im Flash abspeichern könntest.
Aber das musst du im Handbuch für CompactC nachschauen, ob das geht.
:-)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Luk4s K. schrieb:
> Doch an ebendem scheitert die minderbemittelte C-Control IDE :(

nagut aber etwas geht doch bestimmt:
verbindung();
switch (F1) {
    case 1: Text = "BU2-8 - BU1-4"; break; 
    case 2: Text = "BU2-8 - BU1-1"; break;
    case 3: Text = "..."; break;
    case 4: Text = "..."; break;
    case 5: Text = "..."; break;
    case 6: Text = "..."; break;
 }
ist doch schon viel compakter lesbar

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mist vergesst es, es ist ja nicht immer verbinden.

Autor: Florian K. (kraemer90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jop, ich muss jetzt erst mal nachlesen wie man ein "Text-Array" in 
CompactC hinbekommt.

So geht es auf jeden Fall nicht.
 char Texte("BU2-8 - BU1-4", "BU2-8 - BU1-1", "BU2-8 - BU1-3", "BU2-8 - BU1-2", "BU2-8 - BU1-3", "BU2-8 - BU1-2", "BU2-8 - KL1-1","BU2-8 - KL1-2");

Autor: Florian K. (kraemer90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also so würde es gehen, ist das die übliche Schreibweise?
                switch (F1)
                {
                    case 1: write_unterbrechung(); Text = "BU2-5 - KL2-4"; break;   //"Unterbrechung" ausgeben, Text definieren, verlassen
                    case 2: write_verbindung(); Text = "BU2-5 - KL2-1"; break;     //"Verbindung" ausgeben, Text definieren, verlassen

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[c]
char* Texte= {"BU2-8 - BU1-4\0BU2-8 - BU1-1\0BU2-8 - BU1-3\0BU2-8 - 
BU1-2\0BU2-8 - BU1-3\0BU2-8 - BU1-2\0BU2-8 - KL1-1\0BU2-8 - KL1-2"};
Text = Texte[F1*13];

so sollte auch auch gehen, ist aber nicht sehr sauber.

Autor: Florian K. (kraemer90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na toll, man kann gar keine Text-Arrays anlegen

"Semantik Fehler - String Initialisierungseinträge werden momentan nicht 
unterstützt"

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da geht noch viel mehr.

Es besteht ein Zusammenhang zwischen der Zahl hier

                 Text = "BU2-8 - BU1-4"
                             ^
                             |

und dem Parameter F. Diesen Teil des Strings kann man daher per sprintf 
leicht generieren und damit fällt der komplette switch über F raus. Die 
ganze Funktion kann in weniger als 40 Zeilen forumliert werden.

Der ganze Originalcode ist ein Musterbeispiel dafür, wie man durch 
Ausschalten der kleinen grauen Zellen Code unnötig aufblähen kann. Das 
ganze hat Ähnlichkeit mit einer Multiplikation, die der Programmierer so 
gelöst hat, indem er das kleine 1*1 in Form von 10 cases mit jeweils 10 
Subcases implementiert. Mit Einsatz der kleinen grauen Zellen hätte er 
stattdessen ganz einfach eine Multiplikation geschrieben.

void Fehler_Out (void)
{
  char Buffer[20];
  unsigned char Klemme[] = { 2, 2, 2, 2, 1, 1 };
  unsigned char Pin[]    = { 4, 1, 3, 2, 1, 2 };

  LCD_CLR();
  LCD_Locate_Ext(1,1);
  Text = "Fehler";
  LCD_Write_Text_Ext();

  LCD_Locate_Ext(2,1);
  sprintf( Buffer, "Pruefschritt %d", F );
  Text = Buffer;
  LCD_Write_Text_Ext();

  AbsDelay(2000);

  LCD_CLR();
  LCD_Locate_Ext(1,1);
  if( F < 2 && F1 == 1 )
    Text = "Unterbrechung";
  else
    Text = "Verbindung";

  LCD_Write_Text_Ext();
  LCD_Locate_Ext(2,1);

  sprintf( Buffer, "BU2-%d - KL%d-%d", ( F - 1 ) / 2 + 5, Klemme[F1], Pin[F1] );
  Text = Buffer;
  LCD_Write_Text_Ext();
}


Und wenn man sich ein paar besser geeignete LCD Funktionen macht, dann 
könnte man auch diesen Code noch weiter abspecken und übersichtlicher 
machen.

Das könnte dann so aussehen
void Fehler_Out (void)
{
  char Buffer[20];
  unsigned char Klemme[] = { 2, 2, 2, 2, 1, 1 };
  unsigned char Pin[]    = { 4, 1, 3, 2, 1, 2 };

  LCD_CLR();

  sprintf( Buffer, "Pruefschritt %d", F );
  LCD_Write_Text_Pos( 1, 1, "Fehler" );
  LCD_Write_Text_Pos( 2, 1, Buffer );

  AbsDelay(2000);

  LCD_CLR();
  if( F < 2 && F1 == 1 )
    LCD_Write_Text_Pos( 1, 1, "Unterbrechung" );
  else
    LCD_Write_Text_Pos( 1, 1, "Verbindung" );

  sprintf( Buffer, "BU2-%d - KL%d-%d", ( F - 1 ) / 2 + 5, Klemme[F1], Pin[F1] );
  LCD_Write_Text_Pos( 2, 1, Buffer );
}


Und deine Kommentierung.
Spar sie dir. So wie du kommentierst ist das sinnlos.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian K. schrieb:
> Na toll, man kann gar keine Text-Arrays anlegen
>
> "Semantik Fehler - String Initialisierungseinträge werden momentan nicht
> unterstützt"

Besorg dir einen ordentlichen Compiler.
Es gibt nichts schlimmeres als wie wenn man mit untauglichem Werkzeug 
arbeiten muss.

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sprintf ist an dem Quelltext von Karl heinz Buchegger das Einzige, was 
die C-Control nicht kann.

Nachdem hier aber keine großartige Formatierung passiert, kann man das 
leicht durch eine eigene Funktion ersetzen.

Das hier zum Beispiel:
sprintf( Buffer, "Pruefschritt %d", F );

F liegt im Bereich zwischen 1 und 8, wenn ich das richtig sehe. Somit 
ist die Zahl einstellig.
Damit kann man das ASCII-Zeichen, das an letzter Stelle in Text steht, 
ausrechnen und dort einsetzen:
  Text = "Pruefschritt  ";
  Text[13] = F + '0';
  LCD_Write_Text_Ext();

Für das zweite sprintf geht das entsprechend genauso.

>Besorg dir einen ordentlichen Compiler.
Dem kann ich mich nur anschließen. Wenn es in deinem Projekt irgendwie 
möglich ist.

Hier gibt es ein Programm, das Hexfiles von anderen Compilern auf die 
unveränderte C-Control laden kann:
Beitrag "Programmvorstellung "CCPro-Loader" - natives C (ohne Interpreter) auf der C-Control Pro"

Dann ist es möglich, die C-Control als ganz normalen ATmega32 zu 
verwenden.

Man muss zwar alle in CompactC fertig implementierten Funkionen neu 
schreiben (z.B. die für das LCD), aber der Aufwnad lohnt sich 
normalerweise.

Grüße,

Peter

Autor: Florian K. (kraemer90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, also das mit den grauen Zellen anstrengen ist ja gut und super, aber 
als Anfänger kann man halt nunmal nicht alles gleich wissen und können.

>Und deine Kommentierung.
>Spar sie dir. So wie du kommentierst ist das sinnlos.

Danke für die Info, aber hier wäre auch konstruktive Kritik besser, als 
nur herummosern. Was mache ich falsch?

Das mit dem Compiler wechseln werde ich mal abklären ob das möglich ist, 
einen komplett anderen Controller nehmen ist nämlich nicht mehr möglich, 
da die Hardware schon komplett steht.

Autor: Rubelus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Und deine Kommentierung.
> Spar sie dir. So wie du kommentierst ist das sinnlos.

Finde ich nun nicht, wenn es für IHN so hilfreich ist zu verstehen was 
er da eigentlich macht... ist das schon in Ordnung.

Florian K. schrieb:
> Danke für die Info, aber hier wäre auch konstruktive Kritik besser, als
> nur herummosern. Was mache ich falsch?

Lass dich da mal nicht durcheinanderbringen, bei den Comment ist es halt 
wichtig das DU damit zurecht kommst. Als Gedankenstütze ist das sehr 
hilfreich!

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist nicht nur die Qualität des Werkzeuges mit der man arbeitet.

Ein Programm ist zum großen Teil nur so gut wie der Stil seines 
Programmierers.

Deshalb ist es vorallem in der embedded Programmierung wichtig bei den 
Grundlagen zu beginnen und die Beziehung zwischen Hard & Software zu 
kennen und zu verstehen. Das wirkt sich dann auch entsprechend auf den 
Programmcode aus.

Das ist im übrigen nicht nur eine Erfahrung die einem in der 
Softwareentwicklung begleitet sondern im gesamten Lebensablauf.


Hatte erst kürzlich ein typisches Beispiel, bei dem ein MSP430F169 in 
Java
programmiert wurde. Es sollten lediglich 24 LEDs geschaltet werden, 
Kommandogesteuert über UART 19200 Baud.
Der Programmierer meinte, die MCU sein dazu zu schwach.
Ich denke ein Intel ATOM wäre für diese Applikation angebracht.

Leider tummeln sich heute in vielen Bereichen sogenannte Pseudo-Profis
die selbst ohne Bezahlung zu viele Schäden anrichten.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rubelus schrieb:
> Karl heinz Buchegger schrieb:
>> Und deine Kommentierung.
>> Spar sie dir. So wie du kommentierst ist das sinnlos.
>
> Finde ich nun nicht, wenn es für IHN so hilfreich ist zu verstehen was
> er da eigentlich macht... ist das schon in Ordnung.

Solange er im Kommentar nur dsas hinschreibt, was sowieso im Quelltext 
auch schon steht, ist das sinnlos.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian K. schrieb:
> So, also das mit den grauen Zellen anstrengen ist ja gut und super, aber
> als Anfänger kann man halt nunmal nicht alles gleich wissen und können.

Das Problem ist, dass eines der ersten Dinge, praktisch gesehen 2. 
Unterrichtsstunde, in der C Programmierung darin besteht, wie man in 
einen Ausgabestring variable Dinge wie Zahlen oder Variablen einbaut.
Das heißt, das IST Anfängerwissen. Wenn ein Anfänger sonst nicht viel 
von C versteht, aber wie man Zahlen ausgibt und in einen Text einbettet, 
das weiß er.


> Danke für die Info, aber hier wäre auch konstruktive Kritik besser, als
> nur herummosern. Was mache ich falsch?

Deine Kommentare erzählen gegenüber dem eigentlichen Code nichts neues.

               LCD_CLR();                          //LCD löschen
                LCD_Locate_Ext(1,1);                //Zeile 1, Pos 1

Hier steht im Kommentar exakt dasselbe, was auch im Quelltext steht. 
Wenn die Funktion nicht LCD_CLR heißen würde, sondern LCD_Clear dann 
wäre es noch offensichtlicher. Das bedeutet (und ich weiß schon, da 
kannst du nichts dafür) dass unter Umständen die Funktionen mit 
schlechten Namen versehen wurden, wenn du dir da im Kommentar 
dazuschreiben musst, was die Funktion macht.

Kommentare sollen das 'Warum' erzählen und nicht das 'Wie'. Das 'Wie' 
steht im Quellcode und wenn es dort nicht ersichtlich ist, dann ist die 
richtige Vorgehensweise darin zu suchen, den Code so zu schreiben bzw. 
zu ändern, das man das sieht.

Beispiel
                AbsDelay(2000);                     //Verzögerung in ms

Du hast dir hier im Kommentar hingeschrieben, dass die Zeit in 
Millisekunden angegeben wird. Das ist gut. Aber auch schlecht. Denn wenn 
die Funktion nicht AbsDelay sondern AbsDelayMs heißen würde, dann würde 
bereits im Funktionsnamen die Information enthalten sein, für die du 
hier einen Kommentar als notwendig erachtet hast.

Jeder Kommentar, den du nicht brauchst, weil dieselbe Information schon 
im QUelltext enthalten ist, ist ein guter Kommentar :-)

Denn was ist das Problem?
Das Problem, wenn im Kommentar prinzipiell dasselbe steht wie im 
Quelltext, besteht darin, dass es öfter als man glaubt passiert, dass 
Quellcode und Kommentar nicht zusammenstimmen. Es ist noch gar nicht 
solange her, da konnte man hier im Forum lesen

     if( Wert == 29 )         // Wenn der Wert nicht gleich 29 ist

Genau hier haben wir zb eine Situation
* Im Kommentar steht prinzipiell genau das gleiche wie im Quellcode
* Aber: die beiden widersprechen sich! Im Kommentar steht das genaue
  Gegenteil vom eigentlichen Code.

Und da fragt man sich jetzt: Was stimmt denn nun? Was ist denn richtig?

Wenn der Kommentar sinnvoll gewesen wäre

    if( Tag == 29 )         // Wir wissen: Der Monat ist Februar
                            // damit ist der 29. Februar ein Sonderfall
                            // da er nur in Schaltjahren existiert

dann erzählt mir der Kommentar, warum hier eine Abfrage existiert, 
welchen Grund es dafür gibt, was der Hintergedanke dabei ist und ich 
kann im Zusammenhzang des Codes viel leichter entscheiden ob das == da 
jetzt richtig ist, oder ob es != hätte heißen müssen.

Der erste Kommentar der beiden war ein sinnloser Kommentar. Er erzählt 
mir nichts, was ich nicht auch im Code sehen würde. Der zweite Kommentar 
ist ein guter Kommentar. Er erzählt mir worum es an dieser Stelle im 
Code geht.

Gerade Anfänger denken oft (oder ihnen wird erzählt), dass man jede 
Zeile kommentieren soll. Und dann kommen solche Dinge raus, wie in 
deinem Eröffnungsposting. Im Grunde sieht es aus wie in einem 
Vokabelheft: Links steht das englische Wort, rechts die deutsche 
Übersetzung dazu. Genau so sollte Kommentierung aber nicht aussehen, 
denn das ist sinnlose Kommentierung - Tipparbeit für nichts. Im 
Idealfall lernt man nichts über den Code wenn man die Kommentare liest. 
Im schlechtesten Fall ist der Kommentar einfach nur falsch.

In diesem Sinne: Wiederhole in deinen Kommentaren nicht das, was du auch 
im Code siehst, sondern das was ich eben nicht im Code sehen kann!
Oder eben in Kurzform: Ein Kommentar erzählt mir das "Warum". Das "Wie" 
steht im Code. Wenn du das Gefühl hast, du musst das "Wie" kommentieren, 
dann sieh dir lieber den Code an und such nach Möglichkeiten, wie du den 
Code so ändern kannst, dass er diese Information mit enthält.

Autor: Florian K. (kraemer90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, jetzt wo du es schreibst ist es mir auch klar, dass diese Art von 
Kommentare nichts bringen, man wiederholt nur dass was eh schon da 
steht.

Werde jetzt die Funktionen mal besser benennen und die restlichen 
Kommentare anpassen, bzw. löschen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.