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

Re: Neue Beta und Threads Kategorie: IDE (von Jörg - 1.09.2010 19:31)
Als Antwort auf Re: Neue Beta und Threads von PeterS - 1.09.2010 12:29

Hallo Peter,

es liegt an dem 10ms IRQ im Zusammenhang mit den Threads.

Das Problem lä�t sich relativ einfach mit der multithread2.cc Demo
reproduzieren. Ergänzt man in dieser Demo den 10ms IRQ,
dann bleibt auch hier der Main Thread 0 stehen.
Thread 1 läuft weiter.

Grü�e Jörg



// multithread2: Multithreading mit Thread_Delay
// erforderliche Library: IntFunc_Lib.cc
#define LF        0x0A
#define CR        0x0D
#define SPACE     0x20

#thread 0, 0, 10    // Hauptthread mit Task Wechsel alle 10 * 10ms = 100ms
#thread 1, 128, 10  // Thread 1 mit 128 byte RAM & Task Wechsel 10 * 10ms = 100ms

void INT_10ms(void)
{
    int irqcnt;
    irqcnt=Irq_GetCount(INT_TIM2COMP);      // Interrupt Request Counter
}



//------------------------------------------------------------------------------
// thread1 zur Zeichenausgabe
//
void thread1(void)
{
    while(true)
    {
        Msg_WriteText(str2);
        Msg_WriteChar(CR);
        Thread_Delay(200);
    }                                   // "Thread2" wird ausgegeben.
}                                       // Danach ist der Thread
                                        // für 2000ms "schlafend".

char str1[12],str2[12];                 // globale Variablendeklaration

//------------------------------------------------------------------------------
// Hauptprogramm
//
void main(void)
{
    str1="Main";                     // Variablendeklaration
    str2="Thread";                     // Variablendeklaration

    Irq_SetVect(INT_TIM2COMP,INT_10ms);     // Interrupt Service Routine definieren
                                            // Timer2 erzeugt einen 10ms interrupt


    Thread_Start(1,thread1);            // Funktionsaufruf mit Angabe der
                                        // Threadnummer.
    while(true)                         // Endlosschleife
    {
        Thread_Delay(100);
        Msg_WriteText(str1);
        Msg_WriteChar(CR);

    }                                   // Der Thread ist für 1000ms "schlafend".
}                                       // Danach wird "Thread1" ausgegeben.


    Antwort schreiben


Antworten:

Re: Neue Beta und Threads (von PeterS - 2.09.2010 11:10)
    Re: Neue Beta und Threads (von Joerg - 6.09.2010 7:13)
        Re: Neue Beta und Threads (von PeterS - 6.09.2010 8:58)