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

Threads Kategorie: Programmierung Basic (von Dirk Dahlmanns - 8.02.2011 7:23)
Ich nutze:
C-Control Pro Mega32
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)