Le traitement des paramètres

Les paramètres ont une valeur unique ou variable selon la phase de vol. On peut les modifier au sol, on peut associer un paramètre à un des boutons de sélection pour les modifier en vol . Les trims digitaux associés aux sticks sont des paramètres
Tout ceci est bien compliqué à réaliser lorsque la mémoire RAM disponible est rare; essayons de le décrire.

Les variables

Un paramètre comporte une variable pvar et une ou plusieurs variables vvar.Elles sont définies dans le programme source par une ou plusieurs lignes INIT.
Par exemple, le programme source comporte
diff:  INIT 50 # pas de condition: cette ligne est toujours vraie
diff:  INIT 60 vol #valeur pour toutes les phases qui commencent par vol
diff:  INIT 80 vol.thermique #valeur spécifique pour cette phase

Quelle est leur signification ?
un paramètre dans une instruction est toujours la variable pvar. Ceci est la valeur courante du paramètre.Dans le programme source c'est la variablede gauche (diff: dans l'exemple)
pour modifier un paramètre, au sol ou en vol, on modifie une variable vvar, qui est la valeur du paramètre pour une condition de vol.
C'est la valeur qui est à droite dans INIT (par exemple la variable initialisée à 50)
 
 
Chaque trim digital est actionné par une paire de boutons poussoirs.
Il y a au total 5 trims digitaux, numérotés de i=0 à i=4
- i=0 est le  trim digital utilisé pour modifier un paramètre en vol
- 1 à 4  sont associés aux manches

Le traitement des trims digitaux  utilise les variables rc.pvar[i] et rc.vvar[i]
Dans le programme source, l'instruction DTRIM ail: 2 associe le paramètre ail: au trim digital 2.
Le chargement du programme dans le microprocessue utilise la ligne de code 8 pour initialiser la table:
- rc.pvar[2] est l'index de la variable pvar associée au paramètre ail:
- rc.vvar[2] n'est pas encore connu, est initialisé à 255

Une table rc.param_button[i] est utilisée pour la modification en vol d'un paramètre. 
Si le bouton 2 est utilisé pour modifier diff: , rc.param_button[2] comporte l'index de la variable pvar associée à diff:

Pour la lecture des boutons poussoirs avec debouncing, la table  rc.io_state[PARAM_N +1] note l'état du bouton.

Pour la lecture des trims digitaux, la table rc. io_timer[DTRIM_N] gère l'accélération (si on garde le doigt sur le bouton, le mouvement du trim s'accélère)

Les noms des paramètres

Le fichier modelname.md comporte les noms des variables, voici un exemple
5 L010 vol
5 L011 vol.mot
5 L012 vol.therm
5 L013 vol.vitesse

6 N031 prof.trim:qui est la pvar, ceci est le nom "court" du paramètre
6 N033 prof.trim:vol.thermceci sont les vvar, avec le nom "long"
6 N032 prof.trim:vol.vitesse

Dans la boucle de calcul

L'opération PHASE détermine la phase active, note son nom et met à True une ou plusieurs variables logiques . Par exemple, si la phase active est vol.lent.spirale il y a trois variables mises à la valeur True: vol.lent.spirale ,vol.lent et vol.

Le
traitement de l'opération INIT copie la valeur de la  variable vvar dans la variable pvar si la variable logique est vraie(ou si l'index de cette variable logique vaut 255, ce qui signifie qu'il n'y a pas de condition).

Ensuite,  si cette variable pvar figure dans la table rc.pvar[i], l'index de vvar est écrit dans
rc.vvar[i], qui est la variable à mettre à jour par les boutons de trim

Lecture des boutons


Dans la boucle de traitement, on trouve
    io_butread5();
    io_butread100();

La  fonction io_butread5 lit les boutons et met à jour la table  rc.io_state, pour supprimer les rebonds.
Il faut ensuite appeler la fonction  io_getButton[i] qui renvoie 1 si le bouton a été enfoncé ( elle ne renvoie 1 qu'une seule fois)

La  fonction io_butread100 lit les boutons des trims digitaux et appelle io_tick pour chaque trim. Le premier paramètre de io_tick est l'index de la variable qui est mise à jour par les boutons (en + ou en -, plus ou moins vite et remise à 0 si on appuie sur les deux boutons à la fois)

La fonction io_tick modifie une variable d'un "tick" dont l'amplitude augmente si on garde le bouton enfonçé.
La variable modifiée est rc.vvar[i]

Le traitement des paramètres

Le menu "Parameters tune" permet de choisir un paramètre (avec le nom long) et de modifier la valeur de cette vvar.

Le menu "Parameter D Trim" permet de choisir un  paramètre
(avec le nom court ) et de l'affecter à un des 3 boutons situés sous l'écran.
Ceci est enregistré dans rc.param_button[i]= pvar du paramètre.

Lorsqu'en vol on appuie sur le bouton x , cette variable 
rc.param_button[x]  est copiée dans rc.pvar[0], où elle est disponible pour le traitement du trim digital.







© Copyright 2008 2009 Robert Spilleboudt   - Tous droits réservés.
Projet rcopensource - Licence GPL V2