Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

RS232 echo und Multithread Kategorie: Programmierung C (von ToKu - 1.11.2006 9:57)
Ich nutze:
C-Control Pro Mega128, eigenes Board
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         {
            Serial_Write(0,Buffer[n]);          // Bufferinhalt ausgeben
        }
        Serial_Write(0,LF);                     // Zeilenvorschub über die RS232 Schnittstelle gesendet
        Buf_Index=0;
    }
}


    Antwort schreiben


Antworten:

Re: RS232 echo und Multithread (von ToKu - 1.11.2006 14:23)