
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