#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass book \begin_preamble \usepackage[plainpages=false,pdfpagelabels,colorlinks=true,linkcolor=blue]{hyperref} \end_preamble \language frenchb \inputencoding default \fontscheme bookman \graphics default \float_placement !tbph \paperfontsize default \spacing single \papersize letterpaper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 1in \topmargin 1in \rightmargin 0.8in \bottommargin 0.8in \secnumdepth 1 \tocdepth 5 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Chapter Informations générales \layout Section \begin_inset LatexCommand \label{sec:GR-Notation} \end_inset Notation \layout Subsection Conventions typographiques \layout Standard Les lignes de commandes sont représentées en police \family typewriter \series bold bold typewriter \family default \series default . Les réponses de l'ordinateur sont en police \family typewriter typewriter \family default . Depuis début 2006, plus aucune commande ne nécessite les privilèges du root, de sorte que tous les exemples seront précédés par le prompt utilisateur normal, \family typewriter $ \family default . Le texte entre crochets est un texte optionnel \family typewriter [comme-cela] \family default . Le texte entre crochets \family typewriter \family default représente un champ qui peut prendre différentes valeurs, le paragraphe suivant explique les valeurs appropriées. Les items de texte séparés par une barre verticale signifie que l'un ou l'autre, mais pas plus, doit être présent. Toutes les lignes de commandes des exemples supposent que vous êtes dans le répertoire \family typewriter d'emc2/ \family default ou vous avez configuré ou compilé emc2 avec l'option --run-in-place. Les chemins seront par conséquent, affichés en accord avec cet emplacement. \layout Subsection Noms \layout Standard Toutes les entités de HAL sont accessibles et manipulées par leurs noms, donc, documenter les noms des pins, signaux, paramètres, etc, est très important. Les noms dans HAL ont un maximum de 41 caractères de long (comme défini par HAL_NAME_LEN dans hal.h). De nombreux noms seront présentés dans la forme générale, avec un texte entre crochets \family typewriter \family default représentant les champs de valeurs diverses. \layout Standard Quand les pins, signaux, ou paramètres sont décrits pour la première fois, leur nom sera précédé par leur type en \shape smallcaps ( \family typewriter \size footnotesize PETITES CAPITALES \family default \size default ) \shape default et suivi par une brève description. Les définitions typiques de pins ressemblent à ces exemples: \layout Itemize \family typewriter \noun on (bit) \noun default parport..pin--in \family default -- La HAL pin associée avec la broche physique d'entrée \family typewriter \family default du connecteur db25. \layout Itemize \family typewriter \noun on (float) \noun default pid..output \family default -- La sortie de la boucle PID. \layout Standard De temps en temps, une version abrégée du nom peut être utilisée, par exemple la deuxième pin ci-dessus pourrait être appelée simplement \family typewriter avec .output \family default quand cela peut être fait sans prêter à confusion. \layout Section \begin_inset LatexCommand \label{sec:GR-Conventions-nommage} \end_inset Conventions générales de nommage \layout Standard Le but des conventions de nommage est de rendre l'utilisation de HAL plus facile. Par exemple, si plusieurs interfaces de codeur fournissent le même jeu de pins et qu'elles sont nommées de la même façon, il serait facile de changer l'interface d'un codeur à un autre. Malheureusement, comme tout projet open-source, HAL est la combinaison de choses diversement conçues et comme les choses simples évoluent. Il en résulte de nombreuses incohérences. Cette section vise à remédier à ce problème en définissant certaines convention s, mais il faudra certainement un certain temps avant que tous les modules soient convertis pour les suivre. \layout Standard Halcmd et d'autres utilitaires HAL de bas niveau, traitent les noms HAL comme de simples entités, sans structure. Toutefois, la plupart des modules ont une certaine structure implicite. Par exemple, une carte fournit plusieurs blocs fonctionnels, chaque bloc peut avoir plusieurs canaux et chaque canal, une ou plusieurs broches. La structure qui en résulte ressemble à une arborescence de répertoires. Même si halcmd ne reconnait pas la structure arborescente, la convention de nommage est un bon choix, elles lui permettra de regrouper ensemble, les items du même groupe, car il trie les noms. En outre, les outils de haut niveau peuvent être conçus pour reconnaitre de telles structures si les noms fournissent les informations nécessaires. Pour cela, tous les modules de HAL devraient suivrent les règles suivantes: \layout Itemize Les points ( \begin_inset Quotes eld \end_inset . \begin_inset Quotes erd \end_inset ) séparent les niveaux hiérarchiques. C'est analogue à la barre de fraction ( \begin_inset Quotes eld \end_inset / \begin_inset Quotes erd \end_inset ) dans les noms de fichiers. \layout Itemize Le tiret ( \begin_inset Quotes eld \end_inset - \begin_inset Quotes erd \end_inset ) sépare les mots ou les champs dans la même hiérarchie. \layout Itemize Les modules HAL ne doivent pas utiliser le caractère souligné ou les casses mélangées. \begin_inset Foot collapsed false \layout Standard Les caractères souslignés ont été enlevés, mais il reste quelques cas de mélange de casses, par exemple \begin_inset Quotes eld \end_inset pid.0.Pgain \begin_inset Quotes erd \end_inset au lieux de \begin_inset Quotes eld \end_inset pid.0.p-gain \begin_inset Quotes erd \end_inset . \end_inset \layout Itemize Utiliser seulement des caractères minuscules, lettres et chiffres. \layout Section \begin_inset LatexCommand \label{sec:GR-Nommage-pilotes-matériel} \end_inset Conventions de nommage des pilotes de matériels \begin_inset Foot collapsed false \layout Standard La plupart des pilotes ne suivent pas ces conventions dans la version 2.0. Ce chapitre est réellement un guide pour les développements futurs. \end_inset \layout Subsection Noms de pin/paramètre \layout Standard Les pilotes matériels devraient utiliser cinq champs (sur trois niveaux) pour obtenir un nom de pin ou de paramètre, comme le suivant: \layout LyX-Code \series bold .... \layout Standard Les champs individuels sont: \layout Description \family typewriter \family default Le matériel avec lequel le pilote est sensé travailler. Il s'agit le plus souvent d'une carte d'interface d'un certain type, mais il existe d'autres possibilités. \layout Description \family typewriter \family default Il est possible d'installer plusieurs cartes servo, ports parallèles ou autre périphérique matériel dans un ordinateur. Le numéro du périphérique identifie un périphérique spécifique. Les numéros de périphériques commencent à 0 et s'incrémentent. \begin_inset Foot collapsed true \layout Standard Certains matériels utilisent des cavaliers ou d'autres dispositifs pour définir une identification spécifique à chacun. Idéalement, le pilote fournit une manière à l'utilisateur de dire, le \begin_inset Quotes eld \end_inset device-num 0 est spécifique au périphérique qui a l'ID XXX \begin_inset Quotes erd \end_inset , ses sous-ensembles porterons tous un numéro commençant par 0. Mais à l'heure actuelle, certains pilotes utilisent l'ID directement comme numéro de périphérique. Ce qui signifie qu'il est possible d'avoir un périphérique Numéro 2, sans en avoir en Numéro 0. C'est un bug qui devrait disparaître en version 2.1. \end_inset \layout Description \family typewriter \family default La plupart des périphériques fournissent plus d'un type d'I/O. Même le simple port parallèle a, à la fois plusieurs entrées et plusieurs sorties numériques. Les cartes commerciales plus complexes peuvent avoir des entrées et des sorties numériques, des compteurs de codeurs, des générateurs d'impulsions de pas ou de PWM, des convertisseurs numérique/analogique, analogique/numérique et d'autres possibilités plus spécifiques. Le \begin_inset Quotes eld \end_inset I/O type \begin_inset Quotes erd \end_inset est utilisé pour identifier le type d'I/O avec lequel la pin ou le paramètre est associé. Idéalement, les pilotes qui implémentent les mêmes type d'I/O, même sur des dispositifs très différents, devraient fournir un jeu de pins et de paramètres cohérents et de comportements identiques. Par exemple, toutes les entrées numériques doivent se comporter de la même manière quand elles sont vues de l'intérieur de HAL, indépendamment du périphérique. \layout Description \family typewriter \family default Quasiment tous les périphériques d'I/O ont plusieurs canaux, le numéro de canal \begin_inset Quotes eld \end_inset chan-num \begin_inset Quotes erd \end_inset identifie un de ceux ci. Comme les numéros de périphériques \begin_inset Quotes eld \end_inset device-num \begin_inset Quotes erd \end_inset , les numéros de canaux, \begin_inset Quotes eld \end_inset chan-num \begin_inset Quotes erd \end_inset , commencent à zéro et s'incrémentent. \begin_inset Foot collapsed true \layout Standard Une exception à la règle du \begin_inset Quotes eld \end_inset numéro de canal commençant à zéro \begin_inset Quotes erd \end_inset est le port parallèle. Ses \begin_inset Quotes eld \end_inset HAL pins \begin_inset Quotes erd \end_inset sont numérotées avec le numéro de la broche correspondante du connecteur DB-25. C'est plus pratique pour le câblage, mais non cohérent avec les autres pilotes. Il y a débat pour savoir si c'est un bogue ou une fonctionnalité. \end_inset Si plusieurs périphériques sont installés, les numéro de canaux des périphériqu es supplémentaires recommencent à zéro. Comme il est possible d'avoir un numéro de canal supérieur à 9, les numéros de canaux doivent avoir deux chiffres, avec un zéro en tête pour les nombres inférieur à 10 pour préserver l'ordre des tris. Certains modules ont des pins et/ou des paramètres qui affectent plusieurs canaux. Par exemple un générateur de PWM peut avoir quatre canaux avec quatre entrées \begin_inset Quotes eld \end_inset duty-cycle \begin_inset Quotes erd \end_inset indépendantes, mais un seul paramètre \begin_inset Quotes eld \end_inset frequency \begin_inset Quotes erd \end_inset qui contrôle les quatres canaux (à cause de limitations matérielles). Le paramètre \begin_inset Quotes eld \end_inset frequency \begin_inset Quotes erd \end_inset doit utiliser les numéros de canaux de \begin_inset Quotes eld \end_inset 00-03 \begin_inset Quotes erd \end_inset . \layout Description \family typewriter \family default Un canal individuel d'I/O peut avoir une seule HAL pin associée avec lui, mais la plupart en ont plus. Par exemple, une entrée numérique a deux pins, une qui est l'état de la broche physique, l'autre qui est la même chose mais inversée. Cela permet au configurateur de choisir entre les deux états de l'entrée, active haute ou active basse. Pour la plupart des types d' entrée/sortie, il existe un jeu standard de broches et de paramètres, (appelé l' \begin_inset Quotes eld \end_inset interface canonique \begin_inset Quotes erd \end_inset ) que le pilote doit implémenter. Les interfaces canoniques sont décrites au chapitre \begin_inset LatexCommand \ref{cha:Périphériques-canoniques} \end_inset . \layout Subsubsection Exemples \layout Description \family typewriter motenc.0.encoder.2.position \family default -- la sortie position du troisième canal codeur sur la première carte Motenc. \layout Description \family typewriter stg.0.din.03.in \family default -- l'état de la quatrième entrée numérique sur la première carte Servo-to-Go. \layout Description \family typewriter ppmc.0.pwm.00-03.frequency \family default -- la fréquence porteuse utilisée sur les canaux PWM de 0 à 3. \layout Subsection Noms des fonctions \layout Standard Les pilotes matériels ont généralement seulement deux types de fonctions HAL, une qui lit l'état du matériel et met à jour les pins HAL, l'autre qui écrit sur le matériel en utilisant les données fournies sur les pins HAL. Ce qui devrait être nommé de la façon suivante: \layout LyX-Code \series bold -[.[-]].read|write \layout Description \family typewriter \family default Le même que celui utilisé pour les pins et les paramètres. \layout Description \family typewriter \family default Le périphérique spécifique auquel la fonction aura accès. \layout Description \family typewriter \family default Optionnel. Une fonction peut accéder à toutes les d'entrées/sorties d'une carte ou, elle peut accéder seulement à un certain type. Par exemple, il peut y avoir des fonctions indépendantes pour lire les compteurs de codeurs et lire les entrées/sorties numériques. Si de telles fonctions indépendantes existent, le champ identifie le type d'I/O auquelles elles auront accès. Si une simple fonction lit toutes les entrés/sorties fournies par la carte, n'est pas utilisé. \begin_inset Foot collapsed true \layout Standard Note aux programmeurs de pilotes: ne PAS implémenter des fonctions séparées pour différents types d'I/O à moins qu'elles ne soient interruptibles et puissent marcher dans des threads indépendants. Si l'interruption de la lecture d'un codeur pour lire des entrées numériques, puis reprendre la lecture du codeur peut poser problème, alors implémentez une fonction unique qui fera tout. \end_inset \layout Description \family typewriter \family default Optionnel. Utilisé seulement si l'entrée/sortie est cassée dans des groupes et est accédée par différentes fonctions. \layout Description \family typewriter read|write \family default Indique si la fonction lit le matériel ou lui écrit. \layout Subsubsection Exemples \layout Description \family typewriter motenc.0.encoder.read \family default -- lit tous les codeurs sur la première carte motenc. \layout Description \family typewriter generic8255.0.din.09-15.read \family default -- lit le deuxième port 8 bits sur la première carte d'entrées/sorties à base de 8255. \layout Description \family typewriter ppmc.0.write \family default -- écrit toutes les sorties (générateur de pas, pwm, DAC et ADC) sur la première carte ppmc. \layout Chapter \begin_inset LatexCommand \label{cha:Périphériques-canoniques} \end_inset Périphériques d'interfaces canoniques \begin_inset Foot collapsed false \layout Standard à partir de la version 2.0, la plupart des pilotes de HAL ne correspondent plus tout à fait à l'interface canonique décrite ici. Dans le version 2.1, les pilotes seront modifiés pour correspondre à ces spécifications. \end_inset \layout Standard Les sections qui suivent expliquent les pins, paramètres et functions qui sont fournies par les \begin_inset Quotes eld \end_inset périphériques canoniques \begin_inset Quotes erd \end_inset . Tous les pilotes de périphériques HAL devraient fournir les mêmes pins et paramètres et implémenter les mêmes comportements. \layout Standard Noter que seuls les champs \family typewriter \family default et \family typewriter \family default sont définis pour un périphérique canonique. Les champs \family typewriter \family default , \family typewriter \family default et \family typewriter \family default sont définis en fonction des caractéristiques du périphérique réel. \layout Section \begin_inset LatexCommand \label{sec:CanonDigIn} \end_inset Entrée numérique (Digital Input) \layout Standard L'entrée numérique canonique (I/O type: \family typewriter \series bold digin \family default \series default ) est assez simple. \layout Subsection Pins \layout Itemize \shape smallcaps (bit) \shape default \family typewriter \series bold in \family default \series default -- état de l'entrée matérielle. \layout Itemize \shape smallcaps (bit) \shape default \family typewriter \series bold in-not \family default \series default -- état inversé de l'entrée matérielle. \layout Subsection Paramètres \layout Itemize Aucun \layout Subsection Fonctions \layout Itemize \shape smallcaps (funct) \shape default \family typewriter \series bold read \family default \series default -- lire le matériel et ajuster les HAL pins \family typewriter \series bold in \family default \series default et \family typewriter \series bold in-not \family default \series default . \layout Section \begin_inset LatexCommand \label{sec:CanonDigOut} \end_inset Sortie numérique (Digital Output) \layout Standard La sortie numérique canonique est également très simple (I/O type: \family typewriter \series bold digout \family default \series default ). \layout Subsection Pins \layout Itemize \shape smallcaps (bit) \shape default \family typewriter \series bold out \family default \series default -- Valeur à écrire (éventuellement inversée) sur une sortie matérielle. \layout Subsection Paramètres \layout Itemize \shape smallcaps (bit) \shape default \family typewriter \series bold invert \family default \series default -- Si TRUE, \family typewriter \series bold out \family default \series default est inversée avant écriture sur la matériel. \layout Subsection Fonctions \layout Itemize \shape smallcaps (funct) \shape default \family typewriter \series bold write \family default \series default -- Lit \family typewriter \series bold out \family default \series default et \family typewriter \series bold invert \family default \series default et ajuste la sortie en conséquence. \layout Section Entrée analogique (Analog Input) \layout Standard L'entrée analogique canonique (I/O type: \family typewriter \series bold adcin \family default \series default ). Devrait être utilisée pour les convertisseurs analogiques/numériques, qui convertissent par exemple, les tensions en une échelle continue de valeurs. \layout Subsection Pins \layout Itemize ( \shape smallcaps float \shape default ) \series bold value \series default -- Lecture du matériel, avec mise à l'échelle ajustée par les paramètres \series bold scale \series default et \series bold offset \series default . \series bold Value \series default = ((lecture entrée, en unités dépendantes du matériel) * \series bold scale \series default ) - \series bold offset \layout Subsection Paramètres \layout Itemize ( \shape smallcaps float \shape default ) \series bold scale \series default -- La tension d'entrée (ou l'intensité) sera multipliée par \series bold scale \series default avant d'être placée dans \series bold value \series default . \layout Itemize ( \shape smallcaps float \shape default ) \series bold offset \series default -- Sera soustrait à la tension d'entrée (ou l'intensité) après que la mise à l'échelle par scale ait été appliquée. \layout Itemize ( \shape smallcaps float \shape default ) \series bold bit_weight \series default -- Valeur du bit le moins significatif (LSB). C'est effectivement, la granularité de lecture en entrée. \layout Itemize ( \shape smallcaps float \shape default ) \series bold hw_offset \series default -- Valeur présente sur l'entrée quand 0 volts sont appliqués sur la pin d'entrée. \layout Subsection Fonctions \layout Itemize ( \shape smallcaps funct \shape default ) \series bold read \series default -- Lit les valeurs de ce canal d'entrée analogique. Peut être utilisé pour lire un canal individuellement, ou pour lire tous les canaux à la fois. \layout Section Sortie analogique (Analog Output) \layout Standard La sortie analogique canonique (I/O Type: \family typewriter \series bold adcout \family default \series default ). Elle est destinée à tout type de matériel capable de sortir une échelle plus ou moins étendue de valeurs. Comme par exemple les convertisseurs numérique/analogique ou les générateurs de PWM. \layout Subsection* Pins \layout Itemize ( \shape smallcaps float \shape default ) \series bold value \series default -- La valeur à écrire. La valeur réelle sur la sortie matérielle dépends de la mise à l'échelle des paramètres d'offset. \layout Itemize ( \shape smallcaps bit \shape default ) \series bold enable \series default -- Si fausse, la sortie matérielle passera à 0, indépendamment de la pin \series bold value \series default . \layout Subsection Paramètres \layout Itemize ( \shape smallcaps float \shape default ) \series bold offset \series default -- Sera ajouté à \series bold value \series default avant l'actualisation du matériel. \layout Itemize ( \shape smallcaps float \shape default ) \series bold scale \series default -- Doit être défini de sorte qu'une entrée avec 1 dans \series bold value \series default produira 1V \layout Itemize ( \shape smallcaps float \shape default ) \series bold high_limit \series default (optionnel) -- Quand la valeur en sortie matérielle est calculée, si \series bold value \series default + \series bold offset \series default est plus grande que \series bold high_limit \series default , alors \series bold high_limit \series default lui sera substitué. \layout Itemize ( \shape smallcaps float \shape default ) \series bold low_limit \series default (optionnel) -- Quand la valeur en sortie matérielle est calculée, si \series bold value \series default + \series bold offset \series default est plus petite que \series bold low_limit \series default , alors \series bold low_limit \series default lui sera substitué. \layout Itemize ( \shape smallcaps float \shape default ) \series bold bit_weight \series default (optionnel) -- La valeur du bit le moins significatif (LSB), en Volts (ou mA, pour les sorties courant) \layout Itemize ( \shape smallcaps float \shape default ) \series bold hw_offset \series default (optionnel) -- La tension actuelle (ou l'intensité) présente sur la sortie quand 0 est écrit sur le matériel. \layout Subsection Fonctions \layout Standard ( \shape smallcaps funct \shape default ) \series bold write \series default -- Ecrit la valeur calculée sur la sortie matérielle. Si enable est fausse, la sortie passera à 0, indépendamment des valeurs de \series bold value \series default , \series bold scale \series default et \series bold offset \series default . La signification de \begin_inset Quotes eld \end_inset 0 \begin_inset Quotes erd \end_inset dépend du matériel. Par exemple, un convertisseur A/D 12 bits peut vouloir écrire 0x1FF (milieu d'échelle) alors que le convertisseur D/A reçoit 0 Volt de la broche matérielle. Si enable est vraie, l'échelle, l'offset et la valeur sont traités et ( \series bold scale \series default * \series bold value \series default ) + \series bold offset \series default sont envoyés en sortie de l'adc . Si enable est faux, la sortie passe à 0. \layout Section \begin_inset LatexCommand \label{sec:CanonEncoder} \end_inset Codeur \layout Standard L'interface de codeur canonique(I/O type: \family typewriter \series bold encoder \family default \series default ) fournit les fonctionnalités nécessaires pour une prise d'origine sur une impulsion d'index et pour la synchronisation avec la vitesse de broche, ainsi que de base pour le positionnement et/ou le contrôle de vitesse. Cette interface devrait être implémentable quel que soit le matériel sous-jacen t, même si certains matériels donnent de \begin_inset Quotes eld \end_inset meilleurs \begin_inset Quotes erd \end_inset résultats que d'autres. (Par exemple, pour capturer un index de position à +/- 1 impulsion lors d'un mouvement rapide, ou avoir moins de fluctuation sur la pin de vitesse). \layout Subsection Pins \layout Itemize \shape smallcaps (s32) \shape default \family typewriter \series bold count \family default \series default -- Valeur de comptage du codeur. \layout Itemize \shape smallcaps (float) \shape default \family typewriter \series bold position \family default \series default -- Valeur de position en unités de longueur (voir paramètre \begin_inset Quotes eld \end_inset scale \begin_inset Quotes erd \end_inset ). \layout Itemize \shape smallcaps (float) \shape default \family typewriter \series bold velocity \family default \series default -- Vitesse en unités de longueur par seconde. \layout Itemize \shape smallcaps (bit) \shape default \family typewriter \series bold reset \family default \series default -- Quand il est vrai, force le compteur à zéro. \layout Itemize \shape smallcaps (bit) \shape default \family typewriter \series bold index-enable \family default \series default -- (bidirectionnel) Quand il est vrai, remise à zéro à la prochaine impulsion d'index et passe les pins sur faux. \layout Standard La pin \begin_inset Quotes eld \end_inset index-enable \begin_inset Quotes erd \end_inset est bi-directionnelle, elle exige un peu plus d'explications. Si \begin_inset Quotes eld \end_inset index-enable \begin_inset Quotes erd \end_inset est faux, le canal d'index du codeur sera ignoré et le compteur comptera normalement. Le pilote du codeur ne passera jamais \begin_inset Quotes eld \end_inset index-enable \begin_inset Quotes erd \end_inset sur vrai. Cependant, un autre composant peut le faire. Si \begin_inset Quotes eld \end_inset index-enable \begin_inset Quotes erd \end_inset est vrai, alors quand la prochaine impulsion d'index arrivera, le compteur du codeur sera remis à zéro et le pilote passera \begin_inset Quotes eld \end_inset index-enable \begin_inset Quotes erd \end_inset sur faux. Ce qui permettra à l'autre composant de savoir qu'une impulsion d'index est arrivée. C'est une forme de poignée de main, l'autre composant passe \begin_inset Quotes eld \end_inset index-enable \begin_inset Quotes erd \end_inset sur vrai pour requérir une remise à zéro du comptage d'impulsion d'index et le pilote le repasse sur faux quand la requête à été satisfaite. \layout Subsection Paramètres \layout Itemize \shape smallcaps (float) \shape default \family typewriter \series bold scale \family default \series default -- Le facteur d'échelle à utiliser pour convertir la valeur de comptage (count) en unités de longueur. Il se trouve dans \begin_inset Quotes eld \end_inset counts par unité de longueur \begin_inset Quotes erd \end_inset . Par exemple, si vous avez un codeur qui fournit 512 impulsions par tour de codeur sur une vis qui fait 5 tours par pouce, l'échelle (scale) devra être de 512*5 = 2560 counts par pouce, ce qui se traduira par la \begin_inset Quotes eld \end_inset position \begin_inset Quotes erd \end_inset en pouces et la \begin_inset Quotes eld \end_inset vitesse \begin_inset Quotes erd \end_inset en pouces par seconde. \layout Itemize \shape smallcaps (float) \shape default \family typewriter \series bold max-index-vel \family default \series default -- (optionnel) La vitesse maximale (en unités de longueur par seconde) à laquelle le codeur peut remettre le comptage à zéro avec une précision de +/- 1 impulsion. Il s'agit d'une sortie du pilote du codeur, elle est destinée à informer l'utilisateur des capacités du codeur. Certains codeurs peuvent remettre le comptage à zéro exactement à l'apparition de l'impulsion d'index. D'autres peuvent seulement dire qu'une impulsion d'index s'est produite depuis la dernière fois que la fonction de lecture à été appelée. Pour ces derniers, une précision de +/- 1 impulsion ne peut être atteinte que si le codeur avance d'une impulsion ou moins entre deux appels à la fonction de lecture. \layout Itemize \shape smallcaps (float) \shape default \family typewriter \series bold velocity-resolution \family default \series default -- (optionnel) La résolution de la sortie vitesse, en unités de longueur par seconde. Il s'agit d'une sortie du pilote du codeur, elle est destinée à informer l'utilisateur des capacités du codeur. L'implémentation la plus simple de la sortie vitesse est le changement de position entre deux appels à la fonction de lecture, divisé par le temps entre ces appels. Cela permet d'obtenir un signal de vitesse grossier avec des fluctuations évaluées entre deux valeurs aussi éloignées que possible (erreur de quantificat ion). Cependant, certains matériels capturent le comptage et le temps exact quand une impulsion arrive (éventuellement avec une haute résolution d'horloge). Ces données permettent au pilote de calculer une vitesse avec une résolution plus fine et moins de fluctuations. \layout Subsection Fonctions \layout Standard Il n'y a qu'une fonction pour lire les codeurs. \layout Itemize \family typewriter \noun on (funct) \family default \noun default \family typewriter \series bold read \family default \series default -- Capture le comptage (counts) et mets à jour la position et la vitesse. \the_end