C Control PRO Unit Mega 128 198219 User Manual

Product codes
198219
Page of 429
360
Bibliotheken
© 2013 Conrad Electronic
    
// Ausgabe von Integer, Fließkomma, String und Hexzahl
    Str_Printf(str, 
"arg1: %8d arg2:%10.3f arg3:%20s arg4: %x\r"
,
        
1234
2
.
34567
"hallo welt"
256
);
    Msg_WriteText(str);
    
Str_Printf(str,
 
"arg1: %u arg2: %.2u\r",
 
65000
,
 
0xff
);
    
Msg_WriteText(str);
}
' Basic
Sub main()
    Dim str(
80
As Char
    Str_Printf(str, "arg1: %08d arg2:%10.3f arg3:%20s arg4: %x\r", 
      
1234
2.34567
, "hallo welt", 
256
)
    Msg_WriteText(str)
    Str_Printf(str, "arg1: %u arg2: %.2u\r", 
65000
&Hff
)
    Msg_WriteText(str)
End Sub
5.25
Threads
Multithreading
Unter Multithreading versteht  man  die  quasi  parallele  Abarbeitung  mehrerer  Abläufe  in  einem  Pro-
gramm.  Einer von diesen Abläufen wird Thread (engl.  Faden)  genannt.  Beim  Multithreading  wird  in
schnellen Abständen zwischen den verschiedenen Threads  gewechselt,  so daß  beim Anwender der
Eindruck von Gleichzeitigkeit entsteht. 
Die C-Control Pro Firmware unterstützt  außer dem Hauptprogramm (Thread "
0
") bis  zu 13 zusätzli-
che Threads. Mit der Version 2.12 der IDE wurde das Multithreading geändert. Vor 2.12 wurde in den
Projekt Optionen jedem Thread eine Anzahl von Bytecodes  zugeteilt,  nach der der Thread gewech-
selt  wurde.  Dies  führte  of  zu  einer  ungerechten  Verteilung,  da  z.B.  Fließkomma  Operationen  viel
mehr CPU Zeit benötigen als  andere Bytecodes.  Jetzt  arbeitet  das  Multithreading mit  Zeitscheiben.
Der Anwender  kann  jedem  Thread  nun  eine  Anzahl  von  10ms  Zeitzyklen  zuweisen,  nachdem  der
Threadwechsel stattfindet.
Beim Multithreading wird nach einer bestimmten Anzahl von verarbeiteten Byte Instruktionen der ak-
tuelle Thread auf den Status "inak tiv" gesetzt und der nächste ausführbare Thread wird gesucht.  Da-
nach startet  die Abarbeitung des  neuen Threads.  Der neue Thread kann wieder derselbe wie vorher
sein, je nachdem wie viele Threads aktiviert wurden oder für eine Ausführung bereit  sind.  Das  Haupt-
programm gilt als erster Thread. Daher ist Thread "
0
" immer aktiv,  auch wenn explizit  keine Threads
gestartet worden sind.
  Wird das Hauptprogramm (Thread "
0
") beendet, stoppen auch alle anderen Threads.
Die  Priorität  eines  Threads  kann  beeinflußt  werden,  in  dem  man  ändert,  wie  viele  Zeitzyklen  ein
Thread bis  zum nächsten Threadwechsel ausführen darf.  Je kleiner die Anzahl der  Zyklen  bis  zum
Wechsel, desto geringer die Priorität des Threads.