Le compilateur C18 et le mélange déclarations / code
Dans un précédent article, je parlais des message qu’émettait gcc lorsqu’on mélangeait déclarations et code. Quand ce n’est pas bon, il est gentil et met un message d’erreur clair, limpide, explicite. Certains compilateurs ne sont pas comme ça. Je viens de l’expérimenté avec cette crevure de C18, le compilateur de Microchip pour PIC18.
Voici un code source qui ne compile pas :
void SEVSEG_set_value(SEVEN_SEG_t *ssd, unsigned char new_value)
{
ssd->value = new_value;
unsigned char translated_value = translate(new_value);
IOPORT_write(ssd->value_port, translated_value);
}
Et qui émet une erreur intéressante :
E:\...\seven_seg.c:89:Error: syntax error
Gné ? Interchangeons deux lignes…
void SEVSEG_set_value(SEVEN_SEG_t *ssd, unsigned char new_value)
{
unsigned char translated_value = translate(new_value);
ssd->value = new_value;
IOPORT_write(ssd->value_port, translated_value);
}
Oh dis donc ! Plus d’erreur !
Je vais étriper ce compilateur…
Utiliser le Pickit3 dans une machine virtuelle depuis Mac OS X
Quoi de plus classique que d’utiliser des micro-contrôleurs PIC de Microchip quand on bricole une petite carte électronique ? Et quoi de plus normal que de choisir le programmateur Pickit3 puisqu’il n’est pas cher et supporte de très nombreuses références de la marque ?
Je possède un Pickit3 et je l’utilise avec MPLAB 8 qui n’est disponible que sous Windows. Je ressort donc périodiquement mon PC portable du placard pour coder et programmer mes puces. Mais, cette solution n’est pas pleinement satisfaisante. Je possède un iMac avec un grand écran et tout le confort moderne, pourquoi m’embêter à ressortir un ancien PC portable avec un petit écran ? Il y avait bien la solution MPLAB X mais il y aurait fallu reconfigurer mes projets existants et j’ai eu d’assez mauvais retours sur cet IDE, notamment au niveau du débogueur. Il me fallait trouver une solution efficace.
J’ai récemment acquis un oscilloscope USB et j’ai spontanément tenté de le faire fonctionner dans une machine virtuelle (VM, virtual machine) avec comme invité Windows 7 et hôte Mac OS X Lion, grâce à VirtualBox. Ça a été un jeu d’enfant de le brancher à l’iMac, de le passer à ma VM et de l’utiliser dans le Windows 7 invité.
Captain Obvious m’a alors mis une tape derrière la tête : pourquoi n’ai-je jamais eu l’idée de faire la même chose avec mon programmateur de PIC ?!
Passer le Pickit3 à la VM a été un poil plus compliqué qu’avec l’oscilloscope. En effet, un périphérique ne doit pas être utilisé par le système hôte pour pouvoir être passé au système invité. Hors, si Mac OS X laissait l’oscilloscope tranquille, il prenait la main sur le Pickit3 (sans doute à cause des drivers des différents programmateurs installés avec MPLAB X). Je donne ci-dessous la procédure reconstituée après quelques tentatives :
- Brancher le Pickit3.
- Lancer VirtualBox.
- Aller dans la configuration de la VM (il faut peut-être qu’elle soit éteinte).
- Cliquer sur l’icône « Ports » puis aller dans « USB ».
Je ne sais pas si cela est nécessaire mais j’ai activé le contrôleur USB 2.0 EHCI. VirtualBox n’étant pas à jour, j’ai installé l’extension pack comme il me l’a alors demandé. Les guest additions mis à jour devront être installées au redémarrage de la VM. - Choisir « Ajouter un filtre depuis un périphérique » (icône USB avec un + vert).
- Choisir le Pickit3.
- Quitter la configuration et lancer la VM.
- Une fois Windows démarré, débrancher puis rebrancher le Pickit3.
- Une pop-up classique de Windows en cas de branchement d’un périphérique s’affiche.
- Victoire !
Tout est dans le débrancher / rebrancher. Lors d’une première tentative, je ne l’avais pas fait et quand je souhaitais passer le périphérique à la machine invité, son nom était grisé, indiquant que cela n’était pas possible. Lors de cette première tentative, j’avais également suivi ce tutoriel qui précise pourtant bien qu’il faut débrancher / rebrancher le périphérique… Si jamais vous avez des soucis en ayant suivi les étapes que je donne, essayez ce tutoriel.
Bonne programmation !
Mise à jour du 23 février 2014 : j’ai eu un petit soucis cette semaine avec ce même Pickit et cette même machine virtuelle. Je pouvais correctement le passer à la machine virtuelle mais le Windows invité ne le reconnaissait pas et me donnait à coeur le refrain « ce périphérique n’a pas été correctement installé ». La veille, j’avais fait des mises à jour du système. J’ai fini par devoir faire une mise à jour de Virtual Box puis réinstallé et Guest Additions pour refaire fonctionner le tout.




