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 miteinander! > > Ich habe versucht aus den Beispielprogrammen zu dem RS232 echo und einer einfachen > LED-blink-schleife ein Programm im Multithread zu betreiben. Das funktioniert allerdings nicht! > Ich weiß auch nicht woran es liegt, denn einfach ein Threadprogramm bei dem nur zwischen zwei > LED-blinkschleifen unterschieden wird geht. > Komisch ist das die LED nicht blinkt, aber das RS232echo geht > Hier der C-code > > // Deklaration der Formatierungsvariablen > #define LF 0x0A > #define CR 0x0D > #define SPACE 0x20 > > //------------------------------------------------------------------------------ > > void thread1(void) > { > > while(1) > { > // Ein- und Ausschalten der LED1 > Port_WriteBit(PORT_LED1,PORT_ON); // LED1 einschalten > Thread_Delay(100); // variable Verzögerung > Port_WriteBit(PORT_LED1,PORT_OFF); // LED1 ausschalten > Thread_Delay(100); // variable Verzögerung > } > } > //------------------------------------------------------------------------------ > // RS_Echo Hauptprogramm > // > void main(void) > { > byte c,n,i; // Variablen deklarieren > byte Buf_Index; > byte Limit; > char Buffer[82]; // Arrays deklarieren > char Text1[40]; > char Text2[40]; > > Port_DataDirBit(PORT_LED1,PORT_OUT); // LED1 auf Ausgabe vorbereiten > Port_DataDirBit(PORT_LED2,PORT_OUT); // LED1 auf Ausgabe vorbereiten > > //******************* > Thread_Start(1,thread1); //void Thread_Start(byte thread,float func) > //thread = (0-13) Nummer des Threads, der gestartet werden soll > //func = Name der Funktion, in welcher der neue Thread gestartet wird > //******************* > Port_WriteBit(PORT_LED2,PORT_ON); // LED2 einschalten =>Status led > > Text1="-- Test serielle Schnittstelle --"; // Werte ins Array Text1 geschrieben. > Text2="Text eingeben:"; // Werte ins Array Text2 geschrieben. > Serial_Init(0,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD115200); > //Init RS232: 115200 bps, 8 Bit, 1 Stop, NP > c=0; > Buf_Index=0; > Limit=80; // maximale Zeichenzahl > for (i=0;i<33;i++) Msg_WriteChar(Text1[i]); // Systemausgabe "-- Test serielle Schnittstelle --" > Serial_Write(0,CR); // neue Zeile über die RS232 Schnittstelle gesendet > Serial_Write(0,LF); // Zeilenvorschub über die RS232 Schnittstelle gesendet > > while (1) > { > for (i=0;i<14;i++) Serial_Write(0,Text2[i]); // Ausgabe Terminal: Text eingeben: > Serial_Write(0,CR); // neue Zeile über die RS232 Schnittstelle gesendet > Serial_Write(0,LF); // Zeilenvorschub über die RS232 Schnittstelle gesendet > while (c!=CR) > { > c=Serial_Read(0); // Zeichen lesen > Serial_Write(0,c); // Zeichen ausgeben > Buffer[Buf_Index]=c; // Zeichen im Buffer speichern > Buf_Index++; > if (Buf_Index==Limit) // wenn Buffer voll, alle Zeichen ausgeben > { > c=CR; > Buffer[Buf_Index]=c; > Serial_Write(0,CR); // neue Zeile über die RS232 Schnittstelle gesendet > Buf_Index++; > } > } > c=0; // CR >> alle Zeichen ausgeben > Serial_Write(0,LF); > for (n=0;n<Buf_Index;n++) > { > Serial_Write(0,Buffer[n]); // Bufferinhalt ausgeben > } > Serial_Write(0,LF); // Zeilenvorschub über die RS232 Schnittstelle gesendet > Buf_Index=0; > } > }