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 > Hallo Jo, > das mit der Grösse glaub ich auch. Vielleicht ist der Sprungbereich von 'jmp' Befehlen > zu klein für grosse Programme?? Mein Projekt ist auch sehr gross: > > Übersetze Projekt EQ6-Control > C-Control Pro Compiler (C) 2010 Conrad Electronic > Durchlaufe Pass 1 > Durchlaufe Pass 2 > 3530 bytes (4kb:141% - 64kb:5%) globale Variablen > Generiere Bytecode - 33117 bytes.. > Schreibe Symboldaten - 38477 bytes.. > > Stell doch mal die Module um in der IDE - ich denke du hast auch mehrere .cc files. Bei mir ist > der Fehler dann WEG - aber vielleicht geht dann was anderes nicht mehr???? > > Peter HILF, Peter HILF ( wenn du Zeit hast) > > Gruss Ulrich > > > > > Ü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