Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

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
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB