↑ Return to Projets

Coprocesseur flottant

Présentation du projet

Le but de ce projet est de piloter avec un PIC16 le coprocesseur flottant uM-FPU V3.1 de la société Micromega.

L’interface retenue entre le PIC16 et le coprocesseur est l’I2C qui permet d’ajouter des périphériques comme une eeprom externe qui accueillera à terme le programme exécuté par l’uM-FPU V3.1.

Important!

Le coprocesseur uM-FPU V3.1 intègre en interne une eeprom et une mémoire flash dans lesquelles un programme peut être téléchargé et exécuté mais qui ne seront pas utilisées dans un premier temps au profit de l’échange de commandes I2C.

L’interface IHM entre le monde extérieur et le PIC16 est similaire au projet de programmateur pour PIC24.

Nous nous référons à la datasheet de l’uM-FPU V3.1 qui décrit toutes les commandes I2C supportées par le coprocesseur.

 

Figure 1 – Schéma de principe de la platine pour PIC16

Principe de la platine pour PIC16

Comme vous pouvez le voir ci-dessus sur le schéma de principe, cette platine pour PIC16 est basée sur la conversion de commandes échangées avec le protocole UART en commandes I2C via un PIC16 actuellement du type pic16f628a dont le programme est disponible dans l’espace de téléchargement.

Ces commandes UART peuvent être envoyées depuis un ordinateur PC ou un simple terminal série dans le cas d’un programme à exécuter relativement simple et court. Dans la pratique, ces commandes seront envoyées par un programme interpréteur des opcodes du coprocesseur décrits dans le document uM-FPU V3.1 – Instruction Set.

La liste des opérations du protocole I2C implémentées dans le PIC16 via les commandes UART pour piloter l’uM-FPU V3.1 mais également tout périphérique I2C est présentée dans le tableau suivant :

 

Tableau 1 – Liste des opérations UART <=> I2C

1 conf address : Configuration de l’adresse sur 7 bits du périphérique I2C sans le bit R/W
 ex: conf 0x64 pour l’uM-FPU V3.1 et conf 0x50 pour une eeprom type 24C512
2 write datas : Ecriture vers le périphérique I2C d’une suite d’octets exprimés chacun en hexadécimal sur 2 caractères ASCII
 ex: write 0x0123456789ABCDEF
3 readh : Lecture et présentation en hexadécimal depuis le périphérique I2C d’une série d’octets consécutifs jusqu’à rencontrer un caractère ‘\0′
4 reada : Lecture et présentation en ASCII depuis le périphérique I2C d’une série d’octets consécutifs jusqu’à rencontrer un caractère ‘\0′
5 readh nn : Lecture et présentation en hexadécimal depuis le périphérique I2C d’un certain nombre d’octets
 ex: readh 2
6 reada nn : Lecture et présentation en ASCII depuis le périphérique I2C d’un certain nombre d’octets
 ex: reada 8
 

 

Important!

Avec ces quelques commandes, il est possible de piloter n’importe quel périphérique I2C pourvu que son adresse soit définie sur 7 bits sans le bit R/W.

 
Les différents points abordés au sein des articles sont les suivants :

  • 1 – Platine électronique UART-I2C pour PIC16
  • 2 – Exemple d’exécution de commandes UART <=> I2C depuis un terminal
  • 3 – Présentation de l’interpréteur des opcodes de l’uM-FPU V3.1
  • 4 – Exemple d’exécution de commandes UART <=> I2C depuis l’interpréteur
  • 5 – Résolution complète de l’équation a * x^2 + b * x + c = 0
  • 6 – Description et mise en oeuvre de certains opcodes de l’uM-FPU V3.1
  • 7 – Pantographe piloté par 2 servos