Exemple pratique
On veut commander deux affichages, deux capteurs de distance et deux servos. .
Le câblage est trivial. Chaque module a une prise
mâle et une prise femelle en parallèle, ce qui permet
de n’utiliser que des câbles mâle-femelle, comme
liaison et comme rallonge.
Chaque unité a un numéro qui correspond aux 32
variables dans la mémoire du maître.
Dans le bloc des variables, il faut donner des noms
explicites aux variables correspondant à ce qui a été
câblé.
Le bus Petra à un fil impose des contraintes temporelles qui sont respectées dans la gestion par
interruption du maître et par chaque esclave.
Les solutions traditionelles, I2C, SPI, CAN, qui n’auraient de toute façon pas été implémentées
efficacement sur les petits processeurs qui n’ont pas ces périphériques câblés. La prise Petra est
compatible avec les connecteur pour Servo, il suffit de remplacer par logiciel une sortie servo par
une sortie Petra. Le câblage peut être fait en étoile, mais avec le double connecteur mâle-femelle
sur chaque carte, le câblage en guirlande et très pratique.
Principe du bus
Le principe du bus est inhabituel ; son rôle est de
synchroniser les transferts, qui peuvent se faire
entre esclaves. Le maître ne teste pas la
présence des esclave : il balance 32 paquets et
recommence même si personne écoute. Après
chaque adresse, le maître teste s’il y a une
réponse (ligne activée à zéro) et dans ce cas il lit
le mot de 8 bits envoyé par l’esclave et le place
dans son tampon. Il n’y a pas de contrôles.
La programmation des esclaves, qui n’ont pas
nécessairement des interruptions, se fait en
appelant toutes les 12us une routine qui teste le
bus. Au retour, un flag est activé et l’information
peut ètre lue, ou préparée pour le prochain
transfert dans 625 us.
Les esclaves ont des adresses prédéfinies, mais
ils sont tous facilement reprogrammables avec un
Pickit2 ou autre.
La routine d’interruption qui gère le bus Petra dans le maître est appelée en général toutes les
0.625 ms et s’occupe du transfert des registres en balayant toutes les adresses. Toutes les 20ms,
les registres de communication des modules et les registres image dans le maître sont mis à jour
(ces 20ms très approximatifs sont nécessaires si des modules servo sont utilisés.
En résumé, c’est simple et stupide, donc programmé avec très peu d’instructions. Le logiciel
maître utilise 81 bytes dans un processeur 10F 12F 16F, un esclave (16F seulement) qui envoie :
50 instructions et qui reçoit : 48 instructions.
KISS (Keep It Simple Stupid)
jdn 110215