Ce module constitue le coeur de l'unité de commande.
Il contient le microcontrôleur maître et le programme qui
régissent le fonctionnement de l'ensemble. Le circuit horloge fournit
une heure système qui sert de base à la détermination
logicielle des différents délais et temporisations nécessaires
au fonctionnement. L'heure fournie n'est pas une heure vraie, mais une
heure arbitraire, propre au système. Il n'est pas prévu
de pile de sauvegarde, ni de procédure de remise à l'heure.
L'heure est simplement remise à zéro lors de chaque démarrage
de l'installation.
Le microcontrôleur
utilisé est un 16F876
de Microchip. Il est cadencé à 4 MHz, ce qui donne un
temps élémentaire d'exécution des instructions de
1 µs. Ce microcontrôleur possède une mémoire
programme capable de contenir 8192 instructions, une mémoire de
données de 368 octets et une mémoire non volatile EEPROM
de 256 octets. Particulièrement intéressant dans notre cas
est le module MSSP qui gère directement le bus I2C. Pour activer
ce module, des registres internes doivent être convenablement paramètrés
(voir description du logiciel).
En fonctionnement
normal, seules deux pattes SDA et SCL sont utilisées pour gérer
les différents périphériques à travers le
bus I2C. La patte RB1 délivre à la demande un signal de
test utile lors des phases de débogage. En effet, en l'absence
d'outils professionnels de développement, on peut connecter sur
le point test une LED (en série avec une résistance de 390
ohms), pour identifier les points de passage logiciels. Méthode
lourde mais efficace ! Ce point test sert ensuite, lors de la phase demise
au point, à la mesure du temps de cycle: les instructions "bsf
PORTB,1" et "bcf PORTB,1" placées au tout début
de la boucle, produisent une impulsion de 1 µs sur le point
test à chaque passage. La mesure du temps de cycle au moyen d'un
oscilloscope devient alors un jeu d'enfant !
Les
transistors et le circuit intégré 74LS125 que l'on peut
apercevoir sur le schéma constituent une adaptation du dispositif
de programmation in-situ décrit dans la note
d'application AN589 de Microchip: inutile alors de débrocher
le circuit lors de chaque modification logicielle. La programmation s'effectue
sous une "haute tension" de 13 V fournie localement par l'alimentation.
La liaison avec l'ordinateur de programmation s'effectue au moyen d'un
simple câble parallèle. Le programmateur type IC-Prog
doit être paramétré avec l'option "AN589".
Enfin,
le circuit Philips PCF8583
donnant l'heure système est connecté de manière très
simple sur le bus. Il est équipé d'un quartz horloger de
32,768 kHz et fournit, sur requête I2C du maître, l'heure
au centième de seconde près. Remarquons que la mémoire
RAM contenue dans ce circuit est pour nous sans intérêt,
en raison de son temps d'accès excessif à travers le bus
I2C.