Regulering af Quad-rotor helikopter - VBN - Aalborg Universitet
Regulering af Quad-rotor helikopter - VBN - Aalborg Universitet
Regulering af Quad-rotor helikopter - VBN - Aalborg Universitet
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
void AvrXResetSemaphore(pMutex fjerner alle tråde fra sem<strong>af</strong>or-køen og fjerner alle ejer-<br />
skaber, således at sem<strong>af</strong>oren opnår samme tilstand som da den lige var oprettet.<br />
J.2.2 Timer-køer<br />
Den sidste nævneværdige kø-type der er implementeret i AvrX er timer-køer der giver mulighed for<br />
at sætte opgaver i kø i et vist antal trådskift. En timer-kø oprettes ved først at oprette en datastruktur<br />
<strong>af</strong> datatypen TimerControlBlock og dernæst lade denne tælle ned fra en given værdi, hvilket<br />
gøres således:<br />
1 AvrXStartTimer (& t i m e r −kø , n _ t r å d _ s k i f t )<br />
Denne vil dernæst tælle ned hver gang interrupt-rutinen bliver kørt, og tråde kan vente på at timeren<br />
bliver talt ned til nul, ved at benytte denne som en sem<strong>af</strong>or med følgende funktionskald:<br />
1 AvrXWaitTimer(& t i m e r −kø ) ;<br />
Dette funktionskald fungerer fuldstændig som en sem<strong>af</strong>or, således at trådene der benytter funktions-<br />
kaldet bliver placeret i timer-køen og bliver først ført tilbage til aktiv-køen når timeren har talt ned<br />
til 0.<br />
Hvis det kun ønskes at parkere en enkelt tråd i en timer-kø kan dette gøres ved hjælp <strong>af</strong> funktions-<br />
kaldet:<br />
1 AvrXDelay(& t i m e r −kø , n _ t r å d _ s k i f t ) ;<br />
Det skal dog nævnes at timer-køer kun kan benyttes til en nedtælling <strong>af</strong> gangen, hvorfor det er<br />
nødvendigt at lave flere datastrukturer <strong>af</strong> typen TimerControlBlock hvis der ønskes forskelligt<br />
delay på forskellige tråde.<br />
A42