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 André, > > danke erstmal für deine Antwort. > Ich habe mein Programm zum Testen erstmal sehr klein gehalten und das while ( ) durch das loop ( ) > ersetzt wie von Dir vorgeschlagen. > Habe das Problem aber trotzdem. Darum hier mein Quelltext: > > thread main > { > hwcom.init(); > hwcom.setspeed(8); > ports.set(5,1); > hwcom.put(1); > hwcom.put(13); > loop { > sleep (500); > system.call(3,0x0000); > sleep (500); > hwcom.put(13); > } > } > > Für meine folgende System-Routine benutze ich eine gnu-c Compiler: > > void SerPut( char ch ) > { > S0TIC &= 0xffbf; > // Wait until last transmission ready. > while ( ( S0TBIC & 0x0080) == 0 ); > S0TBIC &= 0xff7f; > > S0TBUF = ch; > > // Wait until transmission ready. > while ( ( S0TIC & 0x0080) == 0 ); > S0TIC &= 0xff7f; > S0TIC |= 0x0040; > } // SerPut > > void main() > { > int i; > for (i=0;i<1000;i++){ > SET_SFRBIT( p1l.5 ); > CLR_SFRBIT( p1l.5 ) > SET_SFRBIT( p1l.5 ) > } > SerPut(255); > } // main > > > Ob das ganze nun läuft oder sich aufhängt, liegt an der Zeit die ich in der System-Routine verbringe, > bzw. bei diesem Beispiel an der Anzahl der Durchläufe der for-Schleife. > So mit den 1000 Durchläufen hängt er sich wärend der for-Schleife auf, und erreicht die Ausgabe > auf der seriellen Schnittstelle nicht. > Wenn ich diese nur 100 mal durchlaufen lasse, so funktioniert es. > > Weiterhin habe ich mal mit dem Befehl "CLR_SFRBIT( IEN );" vor der for-Schleife die Interrups > deaktivert und siehe da, er durchläuft die for-Schleife komplett und sendet die 255 auf der seriellen > Schnittstelle. Nur mit dem setzen der Interrupte am Programmende hängt sich die Routine auf. > Daher war meine Vermutung, das ein Interrupt (Timer, Watchdog oder ähnliches) nicht mehr > richtig behandelt wird. > > MfG Matthias