Présentation du microcontrôleur PIC18F & outil de développement Plan : Description générale du PIC18F458 & 18F4580 Présentation rapide de l'outil de développement MPLAB Structure du programme «Suiveur» (sortie recopie l'entrée) Slide 1
Généralités : Description générale du PIC18F458, PIC18F4580 «Low cost» très répandu Processeur 8 bits 32 KO de ROM (flash), 1536 Octets de RAM Reset vectorisé à l'adresse @0x0000 Programmation In Situ (le microcontrôleur, soudé sur sa carte définitive, se programme à volonté ) Oscillateur : Quartz externe jusqu' à 40 Mhz (F Quartz = 1/T Quartz ) PLL x4 optionnelle ( F Osc = F Quartz si PLL inactive, F Osc = 4xF Quartz si PLL active) Un temps de cycle Tcy = 4xT Osc Résumé : PLL inactive : T Osc = T Quartz et Tcy = 4x T Quartz PLL active : T Osc = T quartz /4 et Tcy = T Quartz Slide 2
Périphériques : Description générale du PIC18F458, PIC18F4580 3 Timers 16 bits, 1 Timer 8 bits Une unité Capture/Compare/PWM basique ( une I/O seulement) Une unité spéciale Capture/Compare/PWM (1 I/O + 4 sorties PWM, gestion temps morts) Transmissions série : UART / SPI / I2C ADC 10 bits (11 voies pour le 4580, 8 voies pour le 458) Réglage du temps d'aquisition possible, ie temps de chargement du bloqueur d'ordre 0 (pour le 4580 uniquement) Réglage de la vitesse de conversion Mode de fonctionnement : basique, lancement manuel simple coup (possibilité d'un couplage direct avec un timer pour lancer périodiquement l'adc) Slide 3
Description générale du PIC18F458, PIC18F4580 Système d'interruption : assez pauvre... Seulement deux vecteurs d'interruption (@0x0008 et @0x0018) donc deux niveaux de priorité Tous les périphériques de partagent deux routines d'interruption...tri obligatoire par soft... Paramétrage du système d'interruption Bit GIEH valide globalement les interruptions prioritaires Bit GIEL valide globalement les interruptions secondaires Localement, pour chaque périphérique : xxxie valide localament le périphérique xxxip place le périphérique en interruption prioritaire xxxif drapeau de demande d'interruption à remettre à 0 par soft! Slide 4
Description générale du PIC18F458, PIC18F4580 Bits de configurations #pragma config DEBUG = ON : Le bit DEBUG est à fixer lorsqu'on travaille en débuggage in-situ #pragma config OSC : champ de configuration de l'oscillateur HSPLL : active la PLL HS : n'active pas la PLL, précise que le quartz est au dessus de 4 Mhz XT : n'active pas la PLL, précise que le quartz est en dessous de 4 Mhz NB: dans notre cas on n'utilise pas la PLL, le quartz est à 12 MHz #pragma config WDT = OFF : Invalidation du watchdog #pragma config LVP = OFF : Invalidation de la programmation basse tension Slide 5
Généralités : Outil de développement : MPLAB Gestion par projet (comme KEIL) Simulation : MPLAB SIM Multiples points d'arrêts Chronométrage des temps d'exécution... Simulation In Situ : Module ICD2 Communication PC-ICD2 par USB Communication ICD2-microcontrôleur par deux lignes dédiées PGC et PGD Un seul point d'arrêt gérable Programmation In Situ : Module ICD2 Slide 6
Outil de développement : MPLAB toto.c (contient main()) MPLAB C18 Flux de fichiers : toto.o clib.lib (fcts standards C) pic18f458.lib (fcts d'init. Périphériques + déclarations registres) c018i.o (start up code) MPLINK 18F458.lkr ou 18F458i.lkr essai.hex essai.map essai.cof essai.lst Slide 7
Outil de développement : MPLAB Gestion de projet : Gestion par projet (comme KEIL) Les fichiers suivants doivent être inclus dans l'arborescence du projet : Obligatoire :Tous les fichiers sources (.c) Obligatoire : Le fichier script indispensable au Linker (.lkr) Optionnel : Tous les headers (.h). Offre une bonne lisibilité Optionnel : Un fichier de commentaire (.txt). Fortement conseillé Certains chemins d'accés doivent en outre être spécifiés : Project > Build Option...> Project Include Path : Chemin du répertoire contenant les headers (.h) Library Path : Chemin du répertoire contenant les librairies (.lib) Linker-script Path : Chemin du répertoire contenant le script pour le l'éditeur de lien Slide 8
Outil de développement : MPLAB Utilisation du module ICD2 : Chaque PC ne possède qu'un seul port USB utilisable (voir liste des USB disponibles) Mise en place du module : Démarrer MPLAB et s'assurer que MPLAB ICD2 n'est pas choisi, ni en programmer, ni en débugger. Connecter le module par le lien USB, ne pas brancher encore la carte Connecter la carte (alimentée ou pas) Alimenter la carte si c'est pas déjà fait Choisir MPLAB ICD2 comme débugger ou programmer : MPLAB doit reconnaître le composant. Il se peut que MPLAB mette à jour l'os du module ICD2, le laisser faire. NB: Prendre soin de bien ranger l'ensemble du matériel ICD2 dans les boîtes numérotées. Ne pas mélanger le contenu des boîtes!!!!! NB: Si MPLAB ne peut pas établir la communication avec ICD2, vérifier le port USB, appeler le professeur NB: Si MPLAB ne reconnaît pas le PIC (invalid device ident) vérifier la connectique RJ11 qui relie le module et la carte. Vérifier avant tout la présence de l'alimentation sur la carte. Vérifier la présence de l'horloge sur la carte. Slide 9
Structure du programme «suiveur» T1 IT Timer 1 ADC IT ADC Main t t +1 ms Start ADC Acquisition en cours s = e sortie DAC While (1) While (1) programme périphérique Slide 10
Structure du programme suiveur Deux cibles envisagées : PIC18F4580 ou PIC18F458, les différences sont minimes et se situent essentiellement au niveau de l'adc Deux répertoires proposés, /Suiveur_18F458 et /Suiveur_18F4580 Organisation des répertoires : Les deux répertoires sont organisés de la même façon : /Lib_A_inclure : les deux librairies, le start up code, p18f458(0).h (pour info, rappels des noms de registres) /Linker : les scripts de linker 18f458(0).lkr pour la programmation 18f458(0)i.lkr pour le débuggage /sources : tous les fichiers sources.c, les headers.h et le projet suiveur(458).mcp Slide 11
Structure du programme suiveur ADC_INSA.c DAC_INSA.c Timer1_CCP_INSA.c - Config_ADC( ) - Config_DAC( ) - Cna(signed int s) Config_Timer1_CCP(float Tcy_us, float Te_us) Principal.c - Config_IT( ) - traitement_it_timer1( ) - traitement_it_adc ( ) - main ( ) - remplissage manuel IVT Slide 12