INTRODUCTION AU DEVELOPPEMENT POUR PIC Ce document n est pas conçu pour être lu de façon linéaire. Il faut aussi utiliser les documents de présentation des PIC, les documents sur le langage d assemblage pour PIC, les documents sur le langage C. Les différentes parties de ce document sont développées ailleurs. 1) PROCÉDURES DE DÉVELOPPEMENT ET LANGAGE DE PROGRAMMATION Pour le développement d applications pour PIC, on a le choix entre plusieurs procédures de développement et plusieurs langages de programmation. 1.1) PROCÉDURES DE DÉVELOPPEMENT LES DIFFÉRENTES PROCÉDURES DE DÉVELOPPEMENT Le tableau ci-dessous présente les procédures de développement. L écriture du programme source est commune à toutes les procédures et n est pas mentionnée ci-dessous. Procédure de développement Simulation puis programmation d un PIC avec un programmateur puis insertion sur la maquette cible et essais finaux Programmation et déboguage in situ (ou in circuit) avec le PIC cible. Nécessite un module d interfaçage ICD ou autre. (ne fonctionne qu avec certains PICs) Utilisation d un émulateur puis programmation d un PIC avec un programmateur puis insertion sur la maquette cible et essais finaux Utilisation Pédagogique Pédagogique, professionnelle Professionnelle Avantage(s) Très faible coût de la partie matérielle nécessaire. On trouve sur Internet des schémas de programmateurs très faciles à réaliser et très bon marché. Ex : ICPROG. Déboguage dans les conditions réelles d utilisation. Les modules ICD peuvent être achetés tout faits ou réalisés soi-même. Faible coût et simplicité de réalisation du module ICD1. Possibilités de mise au point étendues Inconvénient(s) La simulation est moins pédagogique. Certains bogues difficilement décelables en simulation. Des choses non simulables (CAN, etc.). Possibilités de déboguage limitées (mais cependant suffisantes pour les applications pédagogiques et même beaucoup d applications professionnelles) Coût élevé d un émulateur. Plus grandes difficultés de mise en oeuvre avec les élèves. Solution préférée de l auteur de ces lignes : Programmation et déboguage in situ. ICD = In Circuit Debugging. Développement pour PIC / Philippe Morenton LT PE Martin Bourges 1
PROGRAMMATION ET DÉBOGUAGE IN SITU Le dessin ci-contre montre la mise en œuvre du développement avec programmation et déboguage in situ. Lorsque la mise au point est terminée, il suffit de modifier une option dans le logiciel puis de procéder à la programmation finale. PC + logiciels carte d'interface 5 fils, dont 2 pour l'alimentation et un pour la RàZ / prog carte cible (avec PIC disposant des possibilités ICD) RS232 ou USB ou // (port imprimante) selon solution retenue pour la carte interface Alimentation La carte cible fonctionne alors seule, sans l aide de la carte d interface et du PC + logiciel(s) associé(s). Cette solution peut s appliquer avec tous les langages de programmation décrits dans le paragraphe suivant, sauf la programmation graphique (pour l instant), à condition de choisir les bons logiciels. Elle ne mobilise que quelques ressources du PIC qui ne sont pas disponibles pour l application : 2 broches d entrées / sorties + quelques centaines de mots en mémoire programme. Il est même possible de récupérer les 2 broches d entrées / sorties dans l application finale en plaçant un double inverseur pour le fonctionnement normal ou la programmation / déboguage. Les PICs ayant des possibilités ICD sont très nombreux. Ce sont tous des PICs avec une mémoire programme de type Flash. Le distributeur Farnell en propose beaucoup. Remarque : un des PICs les plus «populaires», le PIC16F84 ne dispose pas des possibilités ICD. Pour un logiciel avec langage de programmation graphique, il existe une possibilité très proche du déboguage in situ, présentée plus loin. Dans ce cas, le PIC cible n a pas besoin d être prévu pour le mode ICD. Il suffit qu il supporte la programmation in situ (ICSP= In Circuit Serial Programming) et qu il possède au moins 2 timers car un est réservé pour le système de développement. 1.2) LANGAGES DE PROGRAMMATION Le tableau ci-dessous présente les langages de programmation pour le développement d applications sur PIC. utilisation Avantage(s) Inconvénient(s) Langage de développement Graphique (quelques parties sont à écrire avec une syntaxe proche du C (ou autre) Pédagogique Simplicité d utilisation. Apprentissage langage et prise en main rapide. Le logiciel MultiProg permet la programmation et l exécution contrôlée du programme in-situ (avec une carte d interfaçage très simple) Voir plus loin. Utilisation uniquement pour des applications assez simples. Programmation in-situ uniquement avec des cartes spécifiques (sauf pour MultiProg). Logiciels payants. Pas de possibilité de point d arrêt (pour l instant). Développement pour PIC / Philippe Morenton LT PE Martin Bourges 2
Langage de développement Langage d assemblage Langage C Basic Pascal utilisation Avantage(s) Inconvénient(s) Pédagogique, professionnelle Pédagogique, professionnelle Logiciels de développement gratuits. Programmation et déboguage in-situ possible avec une carte d interfaçage simple. Certains logiciels gratuits (avec des limitations sur la taille du code produit, etc). Programmation et déboguage in-situ possible avec une carte d interfaçage simple. Non abordé ici Non abordé ici Nécessite l apprentissage du langage d assemblage (assez rapide cependant) et des particularités du PIC (banques de mémoire, adressage). Lenteur de développement. Nécessite l apprentissage du langage C (assez long). Rapidité de développement (après apprentissage du langage). Solution préférée de l auteur de ces lignes : Langage graphique pour une première approche et pour des applications simples Langage C pour des applications plus compliquées (peut être réservé au seul professeur dans le cadre de préparation de TP ou de projet, etc.) Développement pour PIC / Philippe Morenton LT PE Martin Bourges 3
2) COMPARAISON RAPIDE DES DIFFÉRENTS TYPES DE DÉVELOPPEMENT La comparaison entre les différents types de développement s effectue avec un exemple très simple. 2.1) DÉVELOPPEMENT GRAPHIQUE Plusieurs logiciels permettent un développement graphique. 1 seul est présenté ici : Multi-prog. Ce logiciel est le seul qui permette la programmation et l exécution contrôlée du programme in situ sur n importe quelle carte cible équipée d un connecteur adéquat et d un PIC Flash supporté (programmation ICSP + au moins 2 timers). Il faut utiliser une carte d interface très simple qu on peut fabriquer pour un coût modique. Fenêtre utilisée pour la saisie et la mise au point (déboguage) Multiprog est aussi le seul logiciel qui permette des calculs sur des entiers de 16 bits ou 32 bits ou sur des réels en notation flottante. Pour cet exemple, le seul texte entré au clavier est le nom de l entrée BP1 et de la sortie LED1. Tout le reste a été effectué en cochant des options et en posant des éléments graphiques. Développement pour PIC / Philippe Morenton LT PE Martin Bourges 4
C est avec la même fenêtre que s effectue la programmation puis la mise au point (pas à pas avec observation des variables, défilement automatique). Le rectangle rouge entourant un des éléments de l algorigramme met en évidence la partie en train de s exécuter lors de la mise au point. Pour l observation des variables, une fenêtre supplémentaire s ouvre. Par rapport à un vrai déboguage in situ, il n est pas possible de changer les variables, d exécuter le programme en temps réel jusqu à un point d arrêt. DÉVELOPPEMENT EN LANGAGE C Plusieurs logiciels permettent un développement en langage C. On a retenu ici l association de 2 logiciels : L Environnement de Développement Intégré (EDI ou IDE en anglais) MPLAB gratuit qui permet la gestion de projet, la saisie du programme source, la simulation, la programmation et le déboguage avec différentes possibilités Le compilateur C CC5X dont il existe une version gratuite limitée, suffisante pour bien des applications pédagogiques. Ces logiciels permettent le déboguage in situ (ICD = In Circuit Debugging) avec une carte d interface qu on peut fabriquer pour un coût modique. La version MPLAB 5.5 a été retenue. Elle n est plus distribuée actuellement par Microchip. Elle permet l utilisation de la carte d interfaçage bon marché. Les dernières versions nécessitent une carte plus chère ou plus difficile à fabriquer si on souhaite la réaliser soi-même. Toutes les opérations s effectuent depuis l EDI MPLAB. Fenêtre du programme source en C utilisée pour la saisie et le déboguage Fenêtre d observation (et éventuellement de modification) des variables lors du déboguage Développement pour PIC / Philippe Morenton LT PE Martin Bourges 5
Remarque : Dans le cas d un développement graphique avec Mutli-prog, le fichier en langage C résultant de la traduction automatique est disponible avec l onglet Programme C. Il est bien entendu très proche du programme source précédent. Les lignes supplémentaires ne sont pas utiles dans notre cas très simple. Dans une application normale, elles sont nécessaires. #pragma chip PIC16F877 #include <int16cxx.h> //Définition des sorties #pragma bit LED1 @ PORTD.0 //Définition des entrées #pragma bit BP1 @ PORTB.1 void init(void) { TRISA=0x3F; PORTA=0x00; TRISB=0x7F; PORTB=0x00; TRISC=0xFF; PORTC=0x00; TRISD=0xFE; PORTD=0x00; TRISE=0x07; PORTE=0x00; GIE = 1; PEIE = 1; RBIE = 0; T0IF = 0; T0IE = 0; INTE = 0; ADCON1=0x06; } Le programme principal généré est quasiment le même La configuration de tous les ports est générée et pas uniquement les ports utilisés. Les bits pour la configuration des interruptions sont aussi générés. Ici aucune interruption n est autorisée. //Programme Principal void main(void) { init(); } while ((1)) { if (((BP1==1))) { LED1=1; } else { LED1=0; }; } DÉVELOPPEMENT EN LANGAGE D ASSEMBLAGE Plusieurs logiciels permettent un développement en langage C. On a retenu ici MPLAB (gratuit) qui permet de réaliser toutes les opérations nécessaires : gestion de projet, saisie du programme source, simulation, programmation et déboguage avec différentes possibilités. MPLAB permet le déboguage in situ (ICD = In Circuit Debugging) avec une carte d interface qu on peut fabriquer pour un coût modique. Développement pour PIC / Philippe Morenton LT PE Martin Bourges 6
Fenêtre d observation (et éventuellement de modification) des variables lors du déboguage Fenêtre du programme source en langage d assemblage utilisée pour la saisie et le déboguage Remarque : Dans le cas d un développement graphique avec Mutli-prog ou d un développement en langage C, le fichier en langage d assemblage est automatiquement généré. Un fichier de listage avec le programme source en langage C et sa traduction en langage d assemblage peut être édité. 3) LE MATÉRIEL NÉCESSAIRE POUR DÉVELOPPER UNE APPLICATION On ne s intéresse ici qu à la programmation et au déboguage in situ (mode ICD) ou à l exécution contrôlée du programme avec Multiprog. 3.1) CARTE AVEC PIC CIBLE La carte avec le PIC cible peut être une maquette pédagogique ou une carte quelconque, pourvu qu elle soit équipée avec un connecteur spécifique permettant de connecter le module d interfaçage. Ce connecteur est le même pour les différents modules décrits. Un document fourni décrit le brochage du connecteur à utiliser et les connexions avec le PIC cible. Développement pour PIC / Philippe Morenton LT PE Martin Bourges 7
EXEMPLE DE MAQUETTE PÉDAGOGIQUE Cette maquette dispose notamment de : 8 micro-interrupteurs 8 LEDs E/S logiques et analogiques sur borniers E/S sur connecteur d extension HE10 1 liaison série RS232 null modem etc. Tous les documents nécessaires à la fabrication sont fournis (fichiers source au format OrCAD). Un document décrit précisément la maquette. 3.2) CARTE D INTERFAÇAGE PC / CARTE AVEC PIC CIBLE Il existe plusieurs cartes d interfaçages selon le type de développement. CARTE POUR MUTLI-PROG (DÉVELOPPEMENT GRAPHIQUE) Multi-prog peut utiliser 2 types de cartes : une carte qui se connecte sur le port // d un PC ou une carte qui se connecte sur le port USB. La carte // n emploie que des composants usuels, sauf un convertisseur continu/continu 5V 12V pour générer la tension nécessaire à la programmation du PIC cible. La carte USB s appelle µcastor. Elle est vendue par Micrelec. Développement pour PIC / Philippe Morenton LT PE Martin Bourges 8
CARTES POUR DÉVELOPPEMENT EN LANGAGE C OU EN LANGAGE D ASSEMBLAGE Microchip, le fabricant des PICs, a développé 2 cartes qui permettent un interfaçage direct avec MPLAB. ICD ICD2 Modèle Communication avec le PC Liaison série USB / liaison série 16F87x PICs supportés Nombreux PICs dont les 16F87x. Certains PICs doivent être en version ICD pour être utilisables avec l ICD2. Version de MPLAB 5.x uniquement 6 et 7 uniquement Prix module Microchip Plus disponible 136 euros HT Copie disponible / coût composants Oui / 30 euros Oui / 50-60 euros. 1 CI CMS haute densité. On voit ci-contre le module ICD2 conçu par Microchip. Seules les copies sont brièvement décrites cidessous. ICD1 La version conçue par Patrick Touzet fonctionne très bien. Tous les documents sont fournis sur son site internet et disponibles sur le CDROM. Circuit imprimé en simple face avec seulement quelques straps. http://www.chez.com/silicium31/electronique/pic/free_ icd.htm Développement pour PIC / Philippe Morenton LT PE Martin Bourges 9
ICD2 Il existe plusieurs versions pour les copies. Voici les photos de la version de Patrick Touzet. Côté composants Côté soudures et CMS Le circuit imprimé est simple face et il n y a qu un seul strap! Tous les documents sont fournis sur son site internet http://www.chez.com/silicium31/electronique/pic/free_icd.htm et sur le CDROM. Développement pour PIC / Philippe Morenton LT PE Martin Bourges 10