Threads Kategorie: Programmierung Basic (von Dirk Dahlmanns - 8.02.2011 7:23) | ||
| ||
Hallo, mit dem nachfolgedem Programm habe ich versucht, die Funktion der Threads zu verstehen. Ich verwende die C-Control Pro IDE 2.12.0.10 und das Projectboard mit der Mega32 Unit. Wenn man die Parameter bei thread 0 nicht angibt, wird die zeit von thread 2 nicht eingehalten. Gibt man die Parameter für thread 0 an (siehe unten im Prog.) erhält man für Port D7 ein Signal -> mit einer frequenz von 20ms (50Hz). Sollte aber schneller laufen. Ich gehe davon aus, dass es keinen Sinn macht den 3. Parameter der #thread Anweisung kleiner -> anzugeben als die "Thread_Delay-Zeit" innerhalb der Threadprozedur. Auch die Zuweisung des 2 Parameters von #thread 0 (128) wirkt sich auf die Ausführung von thread2 -> aus. Weiterhin scheint es keinen Unterschied zu geben ob man Thread_Delay(0) oder Thread_Delay(1) angibt. Wird kein Thread_Delay angegeben, erhält man ein unsauberes Signal. (Threadwechsel erkennbar) Aus den Versuchen stellen sich folgende Fragen: -Wie schnell kann ein Thread maximal ausgeführt werden? -Muss man den #thread 0 mit viel Speicher (Parameter 2) und kleinstmöglicher Taskwechselzeit -> parametrieren, um sicher zu stellen, dass die anderen Threads sicher ausgeführt werden? -Ist es Sinvoll die Taskwechselzeit(Parameter 3) mit der Thread_Delay-Zeit gleich zu halten? -Gibt es sinnvolle Parametergrenzen, die man einhalten bzw. beachten muss? -Wird die maximale Ausführungsgeschwindigkeit eines Threads durch eine höhere Anzahl von Threads -> kleiner? (z.B. 10 Threads mit einer Taskwechselzeit von 10ms) Quellcode '******************************************************************************* #thread 0,128,0 #thread 1,128,100 #thread 2,128,1 '******************************************************************************* Sub thread1() Do While True Port_ToggleBit(30) 'Port D6 (LED1) 'Port_ToggleBit(31) 'Port D7 (LED2) Thread_Delay(100) '100x10ms=1s End While End Sub '******************************************************************************* Sub thread2() Do While True 'Port_ToggleBit(30) 'Port D6 (LED1) Port_ToggleBit(31) 'Port D7 (LED2) Thread_Delay(1) '1x10ms=0.01s End While End Sub '******************************************************************************* Sub ini() Port_DataDirBit(PORT_LED1,PORT_OUT) 'Port D.6 Port_DataDirBit(PORT_LED2,PORT_OUT) 'Port D.7 End Sub '******************************************************************************* Sub main() ini() Thread_Start(1,thread1) Thread_Start(2,thread1) Do While(1) End While End Sub '******************************************************************************* | ||
Antwort schreiben Antworten: Re: Threads (von PeterS - 8.02.2011 8:42) Re: Threads (von Dirk Dahlmanns - 8.02.2011 18:52) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum