[an error occurred while processing this directive]
Aconit, projet Lecteur-USB  (2010,  Miguel Saro, Fabien Le Mentec)  Previous.gif Next.gif 


Programmation du micro-controleur

Environnement de développement

Généralement, la programmation d'un pic18f4550 se fait grâce aux outils de programmation propriétaires de la société Microchip[0] (environnement MPLAB). Cependant, nous avons choisi de réaliser le développement sur le systeme d'exploitation GNU/Linux[2]. La seule chaine de compilation libre pour la famille des pic18f est, à notre connaissance, SDCC [2]. Nous utiliserons donc la dernière version de cette chaine. La chaine est cependant expérimentale, et contient encore un certain nombre de défauts (génération d'un code compilé plus gros, moins optimisé, et parfois buggué).

Pour installer le logiciel dans le pic18f4550, nous utilisons pk2cmd [3], un port libre de l'utilitaire pickit2 pour les système GNU/Linux. Le programmeur utilisé a été acheté chez Futurlec pour des besoins antérieurs au projet [6]. Il est compatible pickit2 et communique en USB.

Nous nous appuyons sur la documentation constructeur pour programmer le pic18f4550 [5]. Nous avons configuré les pins d'entrée/sortie afin de correspondre aux signaux du lecteur de carte. Les signaux sortants sont PICK_USB et Reset_USB.

 pic18f4550   signaux documation 
 portA[0-3]  DATA[8:9 , 11:12]
 portB[0-7]  DATA[0:7]
 portC[0]  INDEX_MARK
 portC[1]  READY
 portC[2]  BUSY
 portD[0]  ERROR
 portD[1]  HOPPER_EMPTY
 portD[2]  MOTION_CHECK
 portD[3]  PICK_USB
 portD[4] Reset_USB

Implementation partie USB

La programmation du module USB du pic18f4550 est une tâche complexe, nécessitant beaucoup de débuggage. Pour simplifier, nous sommes partis sur la base d'un projet existant, PUF [4]. Nous avons simplifié le code afin de réduire la taille du programme compilé d'une part, et de correspondre aux besoins du projet d'autre part (un seul endpoint USB).

Pour la communication des données, nous utilisons un endpoint en mode BULK, à la fois en tranmission et récéption. Ce mode est utilisé lorsque les contraintes de temps n'importent pas (ie. temps réel) mais que les données doivent être intègrées à la récéption.

References

Aconit, projet Lecteur-USB  (2010,  Miguel Saro, Fabien Le Mentec)  Previous.gif Next.gif