Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > > 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 > > <CCODE> > 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); > } > > > } > </CCDODE> > > 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