mardi 10 décembre 2013

Les mcu les plus vendus

Juste par curiosité j'ai entré dans Google l'expression most successfull mcu et j'ai obtenu parmis les résultats ceci. A la page 5 de cette article Microchip affirme avoir vendu 7 millard de MCU de la famille PIC16. Aucun autre vendeur n'affiche un nombre aussi élevé. Il faut dire que Microchip a été le premier sur le marché des MCU ce qui leur donne un énorme avantage car les ingénieurs ont tendance à se cantonner dans ce qu'ils connaissent déjà.

Ce qui m'a le plus surpris est le résultat du sondage auprès des lecteurs à la dernière page. Les PIC16 scorent moins de 10% alors que les MSP430 obtiennent le meilleur résultat à plus de 40%. Texas Instruments affirme avoir vendu 500 million de msp430 launchpad. Il faut dire qu'à moins de 5$ au moment de son lancement c'était difficile d'y résister même à 10$US c'est encore un bon prix. Ce fut un excellent coup de marketing de la part de TI. Depuis on voit les concurrents qui s'ingénient à les imiter en offrant des cartes à bas prix eux aussi. Tant mieux pour les hobbyistes que nous sommes.

lundi 9 décembre 2013

PIC24F16KA101 et MSP430G2553

J'ai consacré plusieurs articles sur ce blog au msp430 launchpad parce que je suis très enthousiasmé par ce produit considérant son prix. Mais à ce moment là je n'avais jamais travaillé avec les PIC24 et franchement ceux-ci me plaisent encore plus. Dans cette article je fais une comparaison entre les deux.

comparatif PIC24F16KA101 et MSP430G2553 format PDIP-20

paramètrePIC24F16KA101MSP430G2553
architecture16 bits Harvard modifiée16 bits Von Neumann
FLASH Ko1616
RAM bytes1536512
EEPROM bytes512256
(information memory)
Tcy nSec62,562,5
encodage24bits16bits
interruptionsmulti-niveaux,
priorité programmable
multin-iveaux
priorité fixe
multiplicationmatériellelogicielle
divisionmatérielle/logiciel 19Tcyentièrement logicielle
registres 16 bits16
2 réservés
stack (W15) et frame (W14)
16
4 réservés
compteur ordinal (R0)
états (R1)
pointeur de pile(R2)
constantes (R3)
gestions des exceptionsoui
8 vecteurs 0-7
oui
2 vecteurs 30-31
nombre d'arguments
instructions assembleur
0,1,2,30,1,2
UART2
support LIN
2
support LIN
IrDAouioui
minuteries32
PWM15
ADC10bits
9 canaux 500KSPS
10bits
8 canaux 200KSPS
cap senseoui
9 entrées
oui
16 entrées
SPI11
I2C11
RTCCouinon
CRCouinon
LFOouioui
crystal 32Khzouioui
crystal HFouinon
E/S digitales1816
boot loader ROMnonoui
prix Digikey.ca3,30$CAN3,19$CAN

Biens que le PIC24F16KA101 peut fonctionner avec un oscillateur 32Mhz alors que le MSP430G2553 est limité à 16Mhz leur Tcy est le même car le PIC24F16KA101 utilise 2 cycles d'oscillateur par Tcy. La mémoire flash est de 16Ko dans les 2 cas mais le PIC utilise 3 octets par instructions alors que le MSP430 en utilise 2. Cependant le fait que le PIC24 peut utiliser un argument en mémoire RAM pour plusieurs de ses instructions il n'est pas forcément désavantagé en ce qui concerne la densité de code, pour savoir ce qu'il en est il faudrait faire des comparaisons sur plusieurs échantillons de code.

Il est évident que la multiplication en matériel ainsi que le support matériel à la division est un gros avantage en faveur du PIC24.

On a aussi un avantage pour le PIC24 en ce qui concerne le convertisseur ADC qui peut lire 500000 échantillons par seconde contre 200000 pour le MSP430. Par contre le MSP430 bénéficie d'un canal DMA sur le convertisseur.

Du côté de la gestion des exceptions et des interruptions le PIC24F est nettement avantagé par la programmabilité de la priorité des interruptions et les registres shadow. Mais il utilise beaucoup plus de mémoire flash pour les 2 tables de vecteurs, 512 octets contre 192 pour le MSP430.

Le code généré par le compilateur C de l'IDE CCS5 de TI et le compilateur XC8 de Microchip avec niveau d'optimisation à 1 est de bonne qualité dans les 2 cas mais encore là il faudrait faire des tests comparatifs entre les 2 pour avoir une idée exacte de la performance de chacun. Évidemment pour les programmes utilisant multiplications et divisions le PIC24F est avantagé.

Conclusion

Si les PIC 8 bits souffrent d'une architecture archaïque, surtout les versions baseline et midrange les plus gros défauts ayant été corrigés sur les PIC18, ce serait une erreur de se détourner des PIC24 à cause de leur petits frères à 8 bits. Les PIC24F n'ont rien d'archaïque et ont de nombreux avantages par rapports aux MSP430. Bien que mon expérience avec ces MCU est récente je trouve jusqu'ici l'expérience satisfaisante. Se familiariser avec une famille de MCU demande du temps. Il est donc avantageux de demeurer avec le même fournisseur car la nomenclature est uniforme et la programmation des périphériques est très semblable d'un famille à l'autre. L'effort est donc moindre. Et les coûts aussi puisque le même programmeur peut servir pour toutes les familles de MCU 8,16,32 bits et l'économique pickit 2 peut aussi programmer certains PIC24F comme c'est le cas pour le PIC24F16KA101. Si vous travaillez avec des PIC24/dsPIC30/dsPIC33 et qu'ensuite vous passez au PIC32MX vous allez trouver la transition facile surtout si vous programmez en C. Et si vous aimez travaillez avec des cartes de développement sans soudure, Microchip est le manufacturier qui offre la plus large gamme en format PDIP et ce sur toutes les familles 8,16,32 bits.

vendredi 6 décembre 2013

cube 4x4x4 avec PIC24F16KA101

Je poursuis mes expérimentations avec le PIC24F16KA101. Cette fois je présente un cube de LED 4x4x4 réalisé avec des LEDs vertes de 3mm. Le cube de LED fait 3cmx3cmx4cm, (oui je sais, pas vraiment cubique). Pour ce cube j'ai utilisé la méthode de multiplexage dite Charlieplexing car elle nécessite moins de E/S, 9 lieu de 16 comme ce fut le cas pour la matrice de LED 8x8 utilisé dans ma présentation du PIC24F16KA101. Voici un court vidéo du démo en action.

méthode de fabrication du cube

Sur une planche j'ai percé 16 trous de 3mm de diamètre sur une grille de 3cm x 3cm. Comme il faut 9 E/S pour contrôler 64 LEDs en Charlieplexing j'ai soudé ensemble les cathodes par groupe de 8. Il y a donc 2 cathodes par plan. Les cathodes des LEDs qui sont soudées ensemble se font face. La première étape est de relier ces cathodes par un fil comme illustré ici.

Ensuite on relie les anodes 2 par 2 comme indiqué dans le tableau ci-bas. Sauf qu'il y a toujours 2 anodes de reliées à la cathode du groupe opposé. Ainsi p1a2 est relié à p1c1 et p1a9 est relié à p1c1. Les informations concernant un plan sont groupées par couleur. Au final il ne devrait y avoir que 9 fils qui relie ce plan au plan suivant. J'ai assemblé les 4 plans pour ensuite assembler ceux-ci ensemble. Ce travail demande beaucoup d'attention car le câblage est très enchevêtré. Si vous faites ce montage je vous conseille de vérifier chaque plan avant de faire l'assemblage final.
Comme les fils s'entrecroisent j'ai utiliser des manchons en plastique pour recouvrir les fils afin d'éviter les court-circuits, ce n'est pas la meilleur idée que j'ai eu, ça grossi le diamètre des fils et masque les LEDs qui sont en arrière plan. Et j'ai choisi une couleur différente pour chaque plan pour éviter de les confondre. Si c'était à refaire je m'y prendrais autrement.

J'ai créé un schéma du circuit mais pour le montage j'ai utiliser un tableau moins confondant que ce câblage spaghetti.

Les lignes du tableau représente les électrodes qui sont reliées l'une à l'autre. p indique le numéro du plan. c indique le numéro de cathode et a indique le numéro d'anode. Ainsi p1a2 est l'anode de la LED 2 du plan 1. Les LEDs sont comptées de gauche à droite et du haut vers le bas lorsqu'elles sont plantées dans la planche.

Code source du démo