Re: HILFE , Unerklärbare effekt wenn etwas Testcode weggelassen wird Kategorie: Programmierung C (von Jo - 28.11.2010 14:46) | |
Als Antwort auf Re: HILFE , Unerklärbare effekt wenn etwas Testcode weggelassen wird von UlrichK - 28.11.2010 14:34
| |
> > Hallo zusammen, > > mein akt. Projekt ist soweit so gut wie abgeschlossen. Ich habe in der Entwicklungsphase im 10ms > > TimerInterrupt folgenden code laufen, der beide LEDs abwechselnd rasch blinken lässt. > > > > ... > > > > if( Int10msCtr & 16) { > > Port_WriteBit(PORT_LED1, ON); > > Port_WriteBit(PORT_LED2,OFF); > > } else { > > Port_WriteBit(PORT_LED1, OFF); > > Port_WriteBit(PORT_LED2, ON); > > } > > .. > > Damit erkennt man, dass der Interrupt aufgerufen wurde und der C-Control arbeitet. > > > > Nun ist das Proj. fertig. und ich habe diesen Block auskommentiert > > > > /* > > if( Int10msCtr & 16) { > > Port_WriteBit(PORT_LED1, ON); > > Port_WriteBit(PORT_LED2,OFF); > > } else { > > Port_WriteBit(PORT_LED1, OFF); > > Port_WriteBit(PORT_LED2, ON); > > } > > */ > > > > --> Die Applikation bleibt nun kurz nach dem Start stehen, völlig unklar wieso, > > > > aber und es wird noch aberwitziger > > > > bei folgendem erneut leicht modifiziertem Code > > > > > > if( Int10msCtr & 16) { > > Port_WriteBit(PORT_LED1, ON); > > // Port_WriteBit(PORT_LED2,OFF); > > } else { > > Port_WriteBit(PORT_LED1, OFF); > > // Port_WriteBit(PORT_LED2, ON); > > } > > > > gibt es eine RAM Schutzverletzung > > > > Conrad C-Control Pro 2010 > > OK0 > > > > Interpreter gestartet - 64kb RAM > > > > Interpreter gestartet - 64kb RAM > > > > Stack RAM Schutzverletzung bei Adresse 55647 in Thread 0 > > > > Zeit: 1270ms > > > > > > --> Kann es sein, dass im Bytecode Interpreter ein Bug ist???? > > Kennt jemand sonst solche Effekte? > > Hat jemand eine Idee wie man den eigentlichen fehler finden kann. > > > > Brenne nach guten Inputs > > > > Danke und Grü�e > > > > Jo > > Hallo Jo, > die gleichen unerklärlichen Effekte habe ich auch. Siehe auch posting vom 29.11. > Bereits am 22.10 habe ich PeterS mein komplettes Projekt an ccpro zugeschickt. Er hat mir auch > zugesagt, nach dem Fehler zu suchen - hat aber z.Z. wohl keine Zeit dazu(?). > Nochmal: Bei mir funktioniert etwas NICHT mehr, wenn ein Modul des Projekts an anderer Stelle steht. > Das kann man ja verschieben in der IDE. Es traten bereits auf: > - Stack Ram Schutzverletzung > - Der Interpreter wurde einfach gestopt > - Die ganze IDE wurde 2 mal schlagartig beendet (mag vielleicht was anderes sein). > Ich hoffe immer noch auf Peter. > Programmentwicklung kann zum Glück weitergehen, wenn das Modul ' wo anders' steht. Aber ist > ein sehr unsicheres Gefühl. > Gruss > Ulrich Hallo Ulrich,, ich habe deinen Post gelesen, ja, ich denke unsere Probleme könnten eine �hnliche Ursache habe. Mir scheint es so, dass erst ab einer bestimmten Grö�e das Problem auftritt. Die Programmgrö�e wird bei mir mit �bersetze Projekt RollaControl C-Control Pro Compiler (C) 2010 Conrad Electronic Durchlaufe Pass 1 Durchlaufe Pass 2 2294 bytes (4kb:91% - 64kb:3%) globale Variablen Generiere Bytecode - 19652 bytes.. Schreibe Symboldaten - 25866 bytes.. ausgegeben. Ich bin gerade ziemlich ausgebremnst... Wenn z.B. an einer stelle ein if( 0 ) { } else { // mach was } einbaue Stoppt das Programm. Ich habe einen einfaches Unterprogramm zur definition von Sonderzeichen im Programm if( user_chars_set != USER_CHARS_ROLLADEN_AKTIVE) { user_chars_set = USER_CHARS_ROLLADEN_AKTIVE; LCD_WriteCTRRegister( 0x40); LCD_WriteChar(0x04); // # 0x04 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 /* Ersetzt durch 0x3D ('=') LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 */ /* Ersetzt durch 0xFC LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 */ LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 /* Ersetzt durch 0xD0 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x00); // 0x00 */ LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x00); // 0x00 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x15); // # #0x15 LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteChar(0x1F); // ###0x1F # LCD_WriteCTRRegister( 0x80); } } Diese Funktion Crashed bei entsprechender konstellation nach 31 Zeilen, reproduzierbar auch im Debugger. �ndere ich wo anders was in der SW klappt es. Ich werde langsam verrückt, weil die Ideen für einen Workaround ausgehen. Ich habe auch nach einem möglichen Speicherüberschreiber von meiner SW gesucht, aber bisher nichts gefunden. Array überwachung ist aktiv, strcopy habe ich im debugger nachgeschaut. Jetzt hoffen wir mal auf Peter Viele Grü�e Jo | |
Antwort schreiben Antworten: Re: HILFE , Unerklärbare effekt wenn etwas Testcode weggelassen wird (von UlrichK - 28.11.2010 15:08) Re: HILFE , Unerklärbare effekt wenn etwas Testcode weggelassen wird (von Jörg - 28.11.2010 15:53) Re: HILFE , Unerklärbare effekt wenn etwas Testcode weggelassen wird (von PeterS - 29.11.2010 14:50) Re: HILFE , Unerklärbare effekt wenn etwas Testcode weggelassen wird (von UlrichK - 28.11.2010 18:03) Re: HILFE , Unerklärbare effekt wenn etwas Testcode weggelassen wird (von Joerg - 29.11.2010 8:45) Re: HILFE , Unerklärbare effekt wenn etwas Testcode weggelassen wird (von UlrichK - 29.11.2010 9:42) Re: HILFE , Unerklärbare effekt wenn etwas Testcode weggelassen wird (von Joerg - 29.11.2010 10:29) Re: HILFE , Unerklärbare effekt wenn etwas Testcode weggelassen wird (von UlrichK - 29.11.2010 13:59) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum