Für dieses Forum muß Javascript im Browser aktiviert werden!
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> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Martin, > > > > > bei einem laenger dauernden Lesevorgang von EEPROM mit Ausgabe auf ein Terminal bekomme ich nach ca 2 min (bzw ca 800 Ausgabezeilen) die Meldung "ILL INA" auf dem internen LCD und der Rechner steht dann. > > > > Der Meldung "ILL INA" heißt "Illegal Instruction Access Flag". > Beschreibung des C164 Handbuchs: > <i>A branch to an odd address has been attempted.</i> > Die etwas längere Erklärung des C164 Handbuchs: > <i><b>Illegal Instruction Access Trap</b> > Whenever a branch is made to an odd byte address, the ILLINA flag in register TFR is set and the > CPU enters the illegal instruction access trap routine. The IP value pushed onto the system stack > is the illegal odd target address of the branch instruction.</i> > > Mehr ist leider nicht zu finden. > Auf jeden Fall wurde zu einer ungeraden Byte Adresse gesprungen. > Das kann mit Arrays passieren, wenn diese mit einer ungeraden > Größe definiert sind. > Poste bitte mal die Variabel-Definitionen für die unten verwendeten > Variablen, und schreibe dazu, ob diese Lokal(innerhalb einer Funktion) > oder Global sind. > Vielleicht auch den ganzen Thread. > > > > > Das Codestueck, in dem der Rechner stehen bleiben duerfte, sieht so aus (gekuerzt) > > loop > > { > > eeprom.readbytearray(eeadr,pos,dataframe,satzlaenge); > > sleep 100; > > s=""; > > str.putint(s,dataframe[1]); > > ....... > > hwcom.print(s);hwcom.rxd();wait hwcom.ready(); > > Warum steht hier ein hwcom.rxd() ? Es macht überhaupt keinen Sinn. > Die Funktion gibt True oder False zurück und signalisiert so, ob Daten > im Empfangspuffer sind. Aber der Rückgabewert wird nicht ausgewertet. > Also kann das rxd() ganz raus. > > > ....... > > tmp= mem.getint(dataframe,8); > > s5=""; > > str.putint(s5,tmp); > > s4=" "+s5+";"; > > hwcom.print(s4); > > hwcom.ret(); wait hwcom.ready(); > > Dieses wait ready() ist nicht notwendig. das macht bereits > die Funktion ret(); wait ready() wird nur benötigt, wenn mehrer Strings oder > Bytearrays über dieselbe Variable nacheinander gesendet werden. > > > pos=pos+satzlaenge; > > > > if pos>=EEPromsize or > > (((eeprom.readbyte(eeadr,pos))==0xFF) > > and ((eeprom.readbyte(eeadr,pos+(satzlaenge-1))))==0xFF) > > break; > > ..... > > } > > MfG André H. >