AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Multitâche collaboratif

Description détaillée

Ce module permet d'exécuter des fonctions de façon périodique.
Cela revient à mettre en place une organisation dans le temps de plusieurs tâches. Le passage d'une tâche à l'autre est cadencé par une routine d'interruption déclenchée périodiquement par un timer matériel.
La macro AVRIO_TASK_ENABLE doit être définie au moment de la compilation et dans ce cas, la partie interface matérielle doit être implémentée dans le fichier avrio-board-kernel.h .
L'intervalle maximal de temps pouvant être géré dépend de la taille de ticks_t. Si AVRIO_TIME_UINT32 n'est pas défini à la compilation, ticks_t est codé sur 16 bits soit une valeur max de 65535 ticks. Pour un tick de 1 ms cela ne fait qu'un peut plus d'une minute ! Dans le cas contraire, ticks_t est codé sur 32 bits, soit une valeur max de 4096 Mi ticks soit un peu plus de 1193 heures !

Graphe de collaboration de Multitâche collaboratif:

Fonctions

void * pvTaskGetUserData (xTaskHandle t)
 Renvoie la variable utilisateur d'une tâche. Plus de détails...
 
void vTaskDelete (xTaskHandle t)
 Suppression d'une tâche. Plus de détails...
 
void vTaskRewind (xTaskHandle t)
 Rembobine le décompte d'une tâche. Plus de détails...
 
void vTaskSetInterval (xTaskHandle t, ticks_t xIntervalTicks)
 Modifie la période d'une tâche.
 
void vTaskSetUserData (xTaskHandle t, void *data)
 Modifie la variable utilisateur d'une tâche. Plus de détails...
 
void vTaskStart (xTaskHandle t)
 Démarre une tâche. Plus de détails...
 
void vTaskStop (xTaskHandle t)
 Arrête une tâche. Plus de détails...
 
ticks_t xTaskConvertMs (time_t xTimeMs)
 Convertit une valeur de temps (millisecondes) en ticks.
 
time_t xTaskConvertTicks (ticks_t xTicks)
 Convertit une valeur de ticks en millisecondes.
 
xTaskHandle xTaskCreate (ticks_t xIntervalTicks, xTaskFunction xFunction)
 Ajout d'une tâche. Plus de détails...
 
ticks_t xTaskGetInterval (xTaskHandle t)
 Lit la période d'une tâche.
 
bool xTaskIsStarted (xTaskHandle t)
 Indique si une tâche est lancée. Plus de détails...
 
ticks_t xTaskSystemTime (void)
 Renvoie le nombre de ticks depuis le démarrage du système.
 

Macros

#define AVRIO_KERNEL_ERROR   (-1)
 Indique une erreur.
 

Définitions de type

typedef void(* xTaskFunction) (xTaskHandle)
 La fonction d'une tâche ne renvoit rien et reçoit son identifiant.
 
typedef int8_t xTaskHandle
 xTaskHandle Identifiant d'une tâche
 

Documentation des fonctions

void* pvTaskGetUserData ( xTaskHandle  t)
inline

Renvoie la variable utilisateur d'une tâche.

Paramètres
ttâche concernée
Renvoie
la variable utilisateur d'une tâche
void vTaskDelete ( xTaskHandle  t)

Suppression d'une tâche.

Paramètres
ttâche à supprimer
void vTaskRewind ( xTaskHandle  t)
inline

Rembobine le décompte d'une tâche.

Paramètres
ttâche à rembobiner
void vTaskSetUserData ( xTaskHandle  t,
void *  data 
)
inline

Modifie la variable utilisateur d'une tâche.

Paramètres
ttâche concernée
datapointeur sur la variable utilisateur
void vTaskStart ( xTaskHandle  t)

Démarre une tâche.

Paramètres
ttâche à démarrer
Note
La tâche est démarrée, sa fonction de service est executée lorsque interval_ms est écoulée (mais il n'est pas redémarré)
Exemples:
aprs/demo_aprs.c, battery/demo_battery.c, net/aprs/demo_aprs.c, net/tnc/master/demo_tnc_master.c, et sys/task/demo_task.c.
void vTaskStop ( xTaskHandle  t)

Arrête une tâche.

Paramètres
ttâche à arrêter
Note
La tâche est arrêtée, sa fonction de service n'est plus executée
xTaskHandle xTaskCreate ( ticks_t  xIntervalTicks,
xTaskFunction  xFunction 
)

Ajout d'une tâche.

Paramètres
xIntervalTicksPériode de la tâche en ticks
xFunctionFonction à exécuter à chaque période écoulée
Renvoie
L'indentifiant de la tâche. AVRIO_KERNEL_ERROR si échec.
Note
Cette fonction ajoute une tâche à la liste des tâches actives.
Pour que la tâche fonctionne, il faut ensuite la valider avec vTaskStart().
Exemples:
aprs/demo_aprs.c, battery/demo_battery.c, net/aprs/demo_aprs.c, net/tnc/master/demo_tnc_master.c, et sys/task/demo_task.c.
bool xTaskIsStarted ( xTaskHandle  t)

Indique si une tâche est lancée.

Paramètres
ttâche à tester
Renvoie
true si la tâche est lancée