7 octobre 2012
Voici une présentation de notre architecture logicielle.
En attribuant un maximum de fonctions aux périphériques du PIC, nous simplifions le code et optimisons le temps processeur utilisé par ces fonctions. Ce temps pourras être utile pour simplifier le debug en appelant des fonctions gourmandes comme sprintf.
Il sert à déclencher une interruption régulière (1 ms) qui marque le début du cycle de mesures.
Son entrée est reliée à l’une des voies de la roue codeuse. On évite de le réinitialiser car entre la dernière lecture et la réinitialisation, on pourrait rater un front. À chaque lecture, on soustrait la précédente valeur lue pour connaître le nombre d’impulsion au cours du cycle. Le rebouclage naturel du compteur ne pose pas de problème car nous utilisons des variables de même taille et de même type (non signées).
L’interruption générée sur front montant ou descendant du signal en sortie de la bascule D indique un changement de direction de la rotation du moteur.
A chaque interruption le module est reconfiguré pour détecter un front inverse à celui qui vient d’être mesuré.
Le Timer 0 est remis à 0 et le sens d’avancement est inversé.
L’entrée analogique lit la tension aux bornes de la résistance de puissance. Si l’asservissement en couple ne semble pas rentable ni faisable avec nôtre matériel, l’entrée analogique permettra de detecter un courant trop important traversant le moteur.
L’I2C est le protocole de communication au sein de nos robots. C’est par lui que nous enverrons nos ordres à la carte. La liste des informations que la carte devra échanger avec le reste du robot n’est pas encore bien définie.
Le port série sert pour le debug et nos recherches. C’est par lui que nous recevons les valeurs qui nous servent pour nos expériences.
Une fois les variables mises à jour dans les interruption, un drapeau est positionné. Ce drapeau déclenche les calculs liés à l’asservissement qui sont dans la boucle principale (hors interruption).