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) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum