:lang: fr :toc: = Pico PPMC [[cha:pico-drivers]] (((Pico PPMC Driver))) Le _Pico Systems_ est une famille de cartes pour contrôler les servos analogiques, les moteurs pas à pas et les servos numériques pilotés en PWM. Les cartes se connectent sur le PC par le port parallèle configuré en mode EPP. Bien que la plupart des utilisateurs ne connectent qu'une seule carte par port parallèle, en théorie toutes les combinaisons de cartes entre 8 et 16 peuvent être utilisées sur un seul port parallèle. Un pilote servant pour tous les types de cartes. La combinaison finale d'entrées/sorties dépends du nombre de cartes installées. Le pilote ne distingue pas entre les cartes, il s'agit simplement d'un numéro de canal d'entrées/sorties (codeur, etc) commençant à 0 sur la première carte. Installation: ---- loadrt hal_ppmc port_addr=[,[,...]] ---- Le paramètres _port_addr_ indique au pilote quel port parallèle utiliser. Par défaut, __ est en 0x0378, __ et les suivantes ne sont pas utilisées. Le pilote cherche sur l'espace entier de l'adresse du port parallèle étendu (EPP) indiquée par _port_addr_, scrutant pour toute carte(s) de la famille PPMC. Il exporte ensuite les pins de HAL de tout ce qu'il a trouvé. Durant le chargement, ou la tentative de chargement, le pilote affiche tous les messages de débogage utiles dans le log du noyau, qui pourra être visualisé avec _dmesg_. Un maximum de 3 bus parport peuvent êtres utilisés, et chaque bus peut recevoir un maximum de 8 périphériques. == Pins Dans ce qui suit, pour les pins, les paramètres et les fonctions, représente l'ID de la carte. Selon nos conventions de nommage, la première carte devrait toujours avoir l'ID zéro. Toutefois, le driver fixera l'ID en se basant sur les switches de la carte, de sorte qu'il peut être différent de zéro même si il n'y a qu'une seule carte. _(All s32 output) ppmc..encoder..count_:: Position codeur, en nombre de top comptés. _(all s32 output) ppmc..encoder..delta_:: Différence de top comptés depuis la dernière lecture, en unités brutes de comptage codeur. _(All float output) ppmc..encoder..velocity_:: Vitesse mise à l'échelle en unités utilisateur par seconde. Sur PPMC et USC ces valeurs sont dérivées du nombre de top codeur par période servo, elle est donc affectée par la granularité du codeur. Sur les cartes UPC avec les micro-logiciels du 21/08/09 et suivants, la vitesse est estimée par timestamping sur le comptage du codeur, ce qui peut être utilisé pour accroitre la finesse de cette sortie vitesse. Cela peut être régulé par un composant PID de HAL pour produire une réponse servo plus stable. Cette fonction doit être validée dans la ligne de commande HAL qui démarre le pilote PPMC, avec une option _timestamp=0x00_. _(All float output) ppmc..encoder..position_:: Position codeur, en unités utilisateur. _(All bit bidir) ppmc..encoder..index-enable_:: Connecte l'index _axis.#.index-enable_ pour _home-to-index_. C'et un signal de HAL bi-directionnel. Le fixer à TRUE, causera une remise à zéro hardware du codeur sur la prochaine impulsion d'index du codeur. Le pilote détectera cela et remettra le signal sur FALSE. _(UPC bit input) ppmc..pwm..enable_:: Active un générateur de PWM. _(UPC float input) ppmc..pwm..value_:: Valeur qui détermine le rapport cyclique de l'onde PWM. La valeur est divisée par _pwm..scale_, par exemple, si le résultat est 0.6, le rapport cyclique sera de 60%, et ainsi de suite. Les valeurs de rapport cyclique négatives finiront en valeurs absolues, la pin de direction sera positionnée pour indiquer ce négatif. _(USC bit input) ppmc..stepgen..enable_:: Active un générateur d'impulsions de pas. _(USC float input) ppmc..stepgen..velocity_:: Valeur qui détermine la fréquence des pas. La valeur est multipliée par _stepgen..scale_ et le résultat est la fréquence, en pas par seconde. Des valeurs négatives résultera une fréquence basée sur une valeur absolue, la pin de direction sera positionnée pour indiquer ce négatif. _(All bit output) ppmc..in-_:: État d'une pin d'entrée numérique, voir l'entrée numérique canonique. _(All bit input) ppmc..in.-not_:: État inversé d'une pin d'entrée numérique, voir l'entrée numérique canonique. _(All bit output) ppmc..out-_:: Valeur à écrire sur une sortie numérique, voir la sortie numérique canonique. _(Option float output) ppmc..DAC8-.value_:: Valeur à écrire sur une sortie analogique, étendue entre 0 et 255. Ce qui envoie 8 bits de sortie sur J8, sur lequel doit être connectée une carte DAC de broche. 0 corresponds à zéro Volts, 255 corresponds à 10 Volts. La polarité de la sortie peut être fixée toujours négative, toujours positive, ou elle peut être contrôlée par l'état de SSR1 (positive quand _on_) et SSR2 (négative quand _on_). Vous devez spécifier _extradac = 0x00_ sur la ligne de commande HAL qui charge le pilote PPMC pour valider cette fonction sur la première carte USC ou UPC. _(Option bit input) ppmc..dout-.out_:: Valeur à écrire sur une des 8 pins de sorties extra numériques de J8. Vous devez spécifier _extradout = 0x00_ sur la ligne de commande HAL qui charge le pilote PPMC pour valider cette fonction sur la première carte USC ou UPC. _extradac_ et _extradout_ sont des caractéristiques mutuellement exclusives comme elles utilisent les mêmes lignes de signal à des fins différentes.Ces pins de sortie seront énumérées après les sorties numériques standards de la carte. == Paramètres _(All float) ppmc..enc..scale_:: Nombre de tops codeur par unité utilisateur (pour les conversions depuis le nombre d'unités). _(UPC float) ppmc..pwm..freq_:: Fréquence porteuse de la PWM, en Hz. S'applique à un groupe de quatre générateurs de PWM consécutifs, indiqués par __. Le minimum est de 610Hz, le maximum est de 500KHz. _(UPC float) ppmc..pwm..scale_:: Échelle pour générateur de PWM. Si _scale_ vaut X, alors le rapport cyclique sera de 100% quand _value_ de la pin vaudra X (ou -X). _(UPC float) ppmc..pwm..max-dc_:: Rapport cyclique maximum, compris entre 0.0 et 1.0. _(UPC float) ppmc..pwm..min-dc_:: Rapport cyclique minimum, compris entre 0.0 et 1.0. _(UPC float) ppmc..pwm..duty-cycle_:: Rapport cyclique actuel (utilisé surtout pour la maintenance) _(UPC bit) ppmc..pwm..bootstrap_:: Si true, le générateur de PWM générera une courte séquence d'impulsions dans les deux polarités quand l'Arrêt d'Urgence sera activé, pour charger les capacités de bootstrap utilisées par certains pilotes à portes MOSFET. _(USC u32) ppmc..stepgen..setup-time_:: Fixe le temps minimum, entre l'impulsion de changement de direction et l'impulsion de pas, en unités de 100ns. S'applique à un groupe de quatre générateurs de PWM consécutifs, comme indiqué par __. _(USC u32) ppmc..stepgen..pulse-width_:: Fixe la largeur des impulsions de pas, en unité de 100ns. S'applique à un groupe de quatre générateurs de PWM consécutifs, comme indiqué par __. _(USC u32) ppmc..stepgen..pulse-space-min_:: Fixe le temps minimum entre les impulsions, en unité de 100ns. S'applique à un groupe de quatre générateurs de PWM consécutifs, comme indiqué par __. Le ratio maximum est: // latexmath:[$ \frac{1}{ ( 100ns * ( _pulse-width_ + _pulse-space-min_ )) } $]. *+1 / (100ns * (pulse-width + pulse-space-min))+* _(USC float) ppmc..stepgen..scale_:: Échelle pour générateur d'impulsions de pas. La fréquence des pas est en Hz, c'est la valeur absolue de _vitesse_ * _échelle_. _(USC float) ppmc..stepgen..max-vel_:: La valeur maximum de _velocity_. Les consignes supérieures à _max-vel_, lui seront clampées. S'applique également aux valeurs négatives. (La valeur absolue est clampée.) _(USC float) ppmc..stepgen..frequency_:: Fréquence de pas actuelle en Hz (utilisé principalement pour la maintenance) _(Option float) ppmc..DAC8..scale_:: Fixe l'échelle d'une sortie extra DAC, de sorte qu'une valeur de sortie égale à l'échelle fournisse une amplitude de sortie de 10.0 V. (Le signe de la sortie est fixé par cavaliers et/ou une autre sortie numérique) _(Option bit) ppmc..out.-invert_:: Inverse une sortie numérique, voir la sortie numérique canonique. _(Option bit) ppmc..dout.-invert_:: Inverse une sortie numérique de J8, voir la sortie numérique canonique. == Fonctions _(All funct) ppmc..read_:: Lit toutes les entrées (entrées numériques et top de codeurs) sur un port. Ces lectures sont organisées par blocs de registres contigus, pour éviter au maximum de charger le CPU. _(All funct) ppmc..write_:: Écrit toutes les sorties (sorties numériques, générateurs de pas et de PWM) sur un port. Ces lectures sont organisées par blocs de registres contigus, pour éviter au maximum de charger le CPU.