Archives par mot-clé : MPIDE

Programmer un micro-contrôleur PIC comme un Arduino [MAJ]

ChipKIT Max32 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/09/chipKIT-Max32-obl-500 NULL.jpg)Après Energia pour la plateforme LaunchPad à MSP430 de Texas Instruments (http://xv4y NULL.radioclub NULL.asia/2012/04/27/les-micro-controleurs-msp430-de-texas-instruments/), voici une autre alternative sérieuse à Arduino. Sérieuse d’une part parce qu’elle est 100% fonctionnelle et disponible facilement, et d’autre part parce qu’elle offre des spécificités intéressantes par rapport à Arduino ou LaunchPad.

Il s’agit de l’initiative ChipKIT (http://chipkit NULL.org/wiki/index NULL.php?title=Main_Page) de Microchip (le créateur de la famille de micro-contrôleurs PIC). Cette plateforme est composée d’un côté de circuits reprenant volontairement le format des Arduino UNO, Mega et consorts, et qui sont vendus par Digilent sous le nom de ChipKIT Uno32, ChipKIT Max32, etc (http://www NULL.digilentinc NULL.com/Products/Catalog NULL.cfm?NavPath=2,892&Cat=18), et d’un autre côté d’un environnement de développement (IDE) appelé MPIDE et basé sur Arduino mais produisant du code pour les PIC.

ChipKIT-WiFi (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/09/chipKIT-WiFi-Shield-obl-600 NULL.jpg)Je ne rentrerais pas dans le débat de savoir quelle architecture est supérieure à l’autre entre AVR, PIC ou   MSP430, car tout dépend de vos besoins. Il est toutefois intéressant de noter que ces cartes intègrent des microprocesseurs PIC32 qui bien qu’ils portent le même nom utilisent une architecture interne toute différente des PIC16 traditionnels. Les PIC32 sont des processeurs 32bits de type MIPS32 et qui sont cadencés à 80MHz sur les cartes ChipKIT. La mémoire Flash embarquée va de 128Ko à 512Ko et la RAM de 16Ko à 128Ko. Contrairement aux AVR les PIC32 ne contiennent pas d’EEPROM, mais la carte ChipKIT MAX32 inclue un circuit EEPROM accessible par I2C. Comparer les performances entre deux architectures différentes est très difficile et il ne faut pas se fier aux chiffres. Toutefois il est fort probable que pour un prix équivalent les ChipKIT offrent des performances et des fonctionnalités supérieures aux Arduino, sans égaler le rapport qualité / prix du LaunchPad (http://www NULL.ti NULL.com/tool/msp-exp430g2) bien entendu.

MAJ : J’ai eu le temps de me documenter un peu plus sur l’architecture PIC32 (http://www NULL.microchip NULL.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en542879 NULL.pdf) et c’est vraiment une architecture plus avancée que l’AVR d’Atmel. Elle offre des performances plus grandes (1,5 Drystone MIPS / MHz), un système de bus matriciel à haute vitesse, un cache à anticipation pour l’accès à la Flash et un mécanisme pour améliorer la compacité code (mélange d’instructions 16 et 32 bits apportant une réduction de 40% du code). L’architecture comparable chez Atmel s’appelle AVR32 (http://en NULL.wikipedia NULL.org/wiki/AVR32) et possède d’autre arguments en sa faveur (instructions SIMD et DSP, machine virtuelle JAVA par exemple). Actuellement aucun projet comparable à Arduino n’est disponible pour AVR32. Après tout cela, même si PIC32 est plus puissante que AVR, cela ne veut pas dire que vous en tirerez parti. Pour faire clignoter une LED, faire un manipulateur électronique ou même piloter un DDS, les Arduino actuels sont plus que largement suffisants.

Il est intéressant de noter que Microchip fait ouvertement référence à Arduino et vante la compatibilité physique et la portabilité du code entre les deux. Les shields proposés par Digilent sont aussi très intéressants et l’idée d’accéder à un Arduino par WiFi me trotte toujours dans la tête (le problème c’est que je n’ai pas trouvé d’application pratique et concrète!). A noter que comme le MSP430, le PIC32 utilise des tensions de 3,3V là où les ATMega sont en 5V. En pratique ça ne pose pas de problèmes, mais c’est à prendre en compte quand vous concevez vos circuits ou adaptez un circuit existant venant du monde Arduino.

On entend souvent la remarque suivante : ” Pour le même prix qu’un Arduino Mega (ou un ChipKIT MAX32) on peut avoir un Rapsberry PI ou une platine de développement à base (http://www NULL.arm9board NULL.net/sel/prddetail NULL.aspx?id=337&pid=199)Carte ARM9 OK6410 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/09/OK6410_itf NULL.jpg)d’ARM (http://www NULL.arm9board NULL.net/sel/prddetail NULL.aspx?id=337&pid=199) qui sera beaucoup plus puissante! “. C’est à la fois vrai et faux. C’est vrai qu’en terme de puissance brute, de mémoire et de fonctionnalités, une carte à base d’ARM9 fait beaucoup mieux qu’un Arduino Mega. Toutefois, en terme de facilité d’accès aux périphériques et de robustesse, le micro-contrôleur l’emporte haut la main. Sur un “PC embarqué”, le système d’exploitation rajoute une couche non négligeable et le temps de développement pour un petit projet sera multiplié par 10. L’autre avantage net du micro-contrôleur c’est qu’une fois votre code rodé, vous pouvez très facilement concevoir vos circuits indépendants utilisant le micro-contrôleur sans la carte autour. Si vous voulez concevoir des petites séries, la réduction des coûts et la simplification du matériel sont très importantes. Là encore, tout dépend de vos besoins, mais pour le bricoleur occasionnel comme moi, le micro-contrôleur est ce qui offre le plus d’avantages.