Microcontrôleur PIC
Les microcontrôleurs PIC (ou PICmicro dans la terminologie du fabricant) forment une famille de microcontrôleurs de la société [[Microchip Technology|Modèle:Langue]]. Ces microcontrôleurs sont dérivés du PIC1650 développé à l'origine par la division microélectronique de Modèle:Langue.
Le nom PIC n'est pas officiellement un acronyme, bien que la traduction en « Modèle:Langue » (« contrôleur d'interface périphérique ») soit généralement admise. Cependant, à l'époque du développement du PIC1650 par Modèle:Langue, PIC était un acronyme de « Modèle:Langue » ou « Modèle:Langue ».
Mise en œuvre
Un microcontrôleur PIC est une unité de traitement et d’exécution de l'information à laquelle on a ajouté des périphériques internes permettant de réaliser des montages sans nécessiter l’ajout de composants annexes. Un microcontrôleur PIC peut donc fonctionner de façon autonome après programmation.
Les PIC intègrent une mémoire programme non volatile (FLASH), une mémoire de données volatile, une mémoire de donnée non volatile (E2PROM), des ports d'entrée-sortie (numériques, analogiques, MLI, UART, bus I2C, Modèle:Langue, SPIModèle:Etc.), et même une horloge, bien que des bases de temps externes puissent être employées. Certains modèles disposent de ports et unités de traitement de l'USB et Ethernet.
Architecture
Les PIC se conforment à l'architecture Harvard : ils possèdent une mémoire de programme et une mémoire de données séparées. La plupart des instructions occupent un mot de la mémoire de programme. La taille de ces mots dépend du modèle de PIC, tandis que la mémoire de données est organisée en octets.
Les PIC sont des processeurs dits RISC, c'est-à-dire processeur à jeu d’instruction réduit. Plus on réduit le nombre d’instructions, plus facile et plus rapide en est le décodage, et plus vite le composant fonctionne. Cependant, il faut plus d'instructions pour réaliser une opération complexe.
Le nombre de cycles d'horloge (Tosc) par cycle instruction (Tcy) dépend de l'architecture du PIC : Tcy=4*Tosc (Modèle:Nobr), Tcy=2*Tosc (Modèle:Nobr), Tcy=Tosc (Modèle:Nobr).
Comme la plupart des instructions sont exécutées en un seul cycle, hormis les sauts, cela donne une puissance de l’ordre de Modèle:Unité par MHz (1 million d'instructions par seconde).
Les PIC peuvent être cadencés à 20/Modèle:Unité (séries PIC12/PIC16/PIC16F1), 40/48/Modèle:Unité (série PIC18/PIC18"J"/PIC18"K"), 80/100 (PIC32MX), 120/200 (PIC32MZ).
Programmation
Les PIC disposent de plusieurs technologies de mémoire de programme : flash, ROM, EPROM, EEPROM, UVPROM. Certains PIC (PIC18/24/32 et dsPIC33) permettent l'accès à la FLASH et à la [[Mémoire vive|Modèle:Abréviation discrète]] externe.
La programmation du PIC peut se faire de différentes façons :
- par programmation Modèle:Langue en utilisant l'interface de programmation / debug universel ICSP de Microchip. Il suffit alors d'ajouter simplement un connecteur ICSP au microcontrôleur sur la carte fille pour permettre sa programmation une fois soudé ou sur son support (sans avoir besoin de le retirer). Il existe pour cela plusieurs solutions libres (logiciel + interface à faire soi-même) ou commerciales (par exemple : [[PICkit|Modèle:Nobr]], ICD4 et Modèle:Langue de Microchip) ;
- par l'intermédiaire d'un programmateur dédié (par exemple : PM3,pour la production (Microchip).
Débogage
Le débogage logiciel peut être réalisé de façon logicielle (simulateur) ou hardware (débogueur externe). Dans les deux cas, un environnement tel que MPLAB X peut être utilisé.
Plusieurs solutions existent pour déboguer un programme écrit pour un microcontrôleur PIC :
- simulateur (dans MPLAB X) ;
- débogueur Modèle:Langue Modèle:Langue via l'ICSP ;
- simulateur Proteus.
Familles de PIC
Les modèles de PIC courants sont repérés par une référence de la forme :
- Modèle:Nobr : famille du PIC (10, 12, 16, 18, 24, 32) ou dsPIC (30, 33) — Modèle:Nobr très rares ont été également introduites PIC14 / PIC17 ;
- Modèle:Nobr : type de mémoire de programme (C ou F). Le F indique en général qu'il s'agit d'une mémoire flash et donc effaçable électriquement. La lettre C indique en général que la mémoire ne peut être effacée que par exposition aux ultra-violets (exception pour le PIC16C84 qui utilise une mémoire EEPROM donc effaçable électriquement). Un L peut être ajouté devant pour indiquer qu'il s'agit d'un modèle basse tension (exemple : Modèle:Unité à Modèle:Unité si LF — Modèle:Unité à Modèle:Unité si F) ;
- un nombre de Modèle:Nombre : modèle du PIC au sein de la famille. Toutefois il y a maintenant des exceptions : PIC18F25K20 ou PIC18F96J60 par exemple ;
- un groupe de lettres pour indiquer le boîtier et la gamme de température.
Par exemple, le PIC18LF4682-I/P est un microcontrôleur de la Modèle:Nobr, basse tension (L), à mémoire flash (F), Modèle:Nobr, gamme de température industrielle (I) et Modèle:Nobr.
PIC10 et PIC12
Ce sont des composants récents. Ils ont comme particularités d'être extrêmement petits (pour donner une idée, existe en Modèle:Nobr à Modèle:Nobr de moins de Modèle:Dunité), simples et économiques.
PIC16
Les PIC de la famille 16C ou 16F sont des composants de milieu de gamme. C'est la famille la plus riche en termes de dérivés.
La Famille 16F dispose dorénavant de trois sous-familles :
- La sous-famille avec le cœur Modèle:Langue : instructions sur Modèle:Nobr (PIC16Fxxx) ;
- La sous-famille avec le cœur Modèle:Langue : instructions sur Modèle:Nobr (PIC16Fxxx) ;
- La sous-famille avec le cœur Modèle:Langue : instructions sur Modèle:Nobr (PIC16F1xxx et PIC16F1xxxx) avec Modèle:Nobr.
PIC16F1xxx : il s'agit d'une nouvelle famille (2009) créée spécifiquement pour permettre l'extension de la mémoire FLASH, de la mémoire RAM et l'ajout de périphériques, tout en gardant la compatibilité avec les cœurs Modèle:Langue et Modèle:Langue. L'ajout d'une quinzaine d'instructions orientée pour les compilateurs C permettent de diminuer de façon significative la taille du code généré (jusqu'à 40 % de moins que le cœur PIC16 Modèle:Langue).
PIC18
Cette famille a un jeu d'instruction plus complet puisqu'il comprend quelque Modèle:Nobr. Cette palette d'instructions étendue lui permet de faire fonctionner du code C compilé de manière nettement plus efficace que les familles précédentes.
Sur les dernières versions (sous-famille « K »), on peut les utiliser avec un quartz fonctionnant jusqu'à Modèle:Unité (Modèle:Nombre).
Cette famille propose une multitude de dérivés intégrant l'USB, ETHERNET (MAC+PHY), le CAN, le CAN FD, le contrôleur [[Écran à cristaux liquides|Modèle:Abréviation discrète]] des canaux de MLI dédiés au contrôle moteur.
PIC24F/PIC24H/PIC24E
Cette famille est sortie en 2004, 2011 pour les PIC24E. L'utilisation du C / C++ y est plus efficace que sur les familles précédentes, du fait de l'utilisation du format Modèle:Nobr, du jeu d'instruction prévu en conséquence, et de la plus grande souplesse de la pile mappée dans la RAM.
Quelques caractéristiques à remarquer :
- programmable avec le compilateur MPLAB C30, dérivé de GNU Compiler Collection GCC)3.3 (toutes les familles de microcontrôleurs Modèle:Nobr de chez Microchip peuvent être programmées avec ce compilateur) ;
- Modèle:Nombre pour les PIC24F, Modèle:Nombre pour les PIC24H et Modèle:Nombre pour les PIC24E<ref name="Famille 24F">Modèle:Lien web.</ref> ;
- Modèle:Nobr d'horloge pour exécuter la plupart des instructions ;
- USB Modèle:Langue/Modèle:Langue/OTG ;
- Quadruple UART ;
- Horloge / calendrier RTCC intégrée (PIC24F) ;
- Modèle:Langue (affectation dynamique des broches d'Modèle:Abréviation discrète digitales aux périphériques par programmation) ;
- Contrôleur d'écran QVGA/Modèle:Lien [[Écran à cristaux liquides|Modèle:Abréviation discrète]] intégré (résolution Modèle:Tunité couleur) ;
- dispose d'un port Modèle:Quoi ;
- versions XLP (Modèle:Langue) des PIC24F permettant d'avoir une très faible consommation (Modèle:Unité horloge RTCC sous Modèle:Unité et Modèle:Unité pour le Modèle:Langue sous Modèle:Unité).
PIC32MX
Introduits en Modèle:Date-, les PIC32MX sont des microcontrôleurs Modèle:Unité fonctionnant jusqu'à Modèle:Unité pour certains dérivés. Ils sont basés sur le cœur MIPS32 M4K (Architecture MIPS). L'architecture interne des PIC32 est basée sur le Modèle:Langue (Modèle:Nobr) permettant d'avoir jusqu'à Modèle:Nobr simultanées. Les canaux de [[Accès direct à la mémoire|Modèle:Abréviation discrète]] peuvent donc fonctionner en parallèle de l'exécution des instructions.
Ce cœur comporte des instructions Modèle:Nobr et aussi Modèle:Nobr (MIPS16e) qui peuvent être mélangées à volonté pour réduire la taille du code.
Une nouvelle sous-famille (Modèle:Date-) intègre maintenant l'ETHERNET, l'USB HOST et 2 × contrôleurs CAN avec une FLASH de Modèle:Unité et une RAM de Modèle:Unité lui permettant de faire tourner simultanément plusieurs protocoles (USB / TCP/IP / OSEK).
PIC32MZ
Introduits en Modèle:Date-, les PIC32MZ sont des microcontrôleurs Modèle:Unité fonctionnant jusqu'à Modèle:Unité. Ils sont basés sur le cœur MIPS32 M14K (Architecture MIPS).
La mémoire FLASH a été étendue jusqu'à Modèle:Unité et la mémoire RAM jusqu'à Modèle:Nombre.
La plateforme logicielle gratuite MPLAB Modèle:Langue gère désormais tous les PIC32 et intègre toutes les librairies : TCP/IP, USB, [[Système de fichiers|Modèle:Langue]], Modèle:Langue, WiFi, Modèle:Langue.
dsPIC30/dsPIC33F/dsPIC33E/dsPIC33CH (double cœur)/dsPIC33CK (simple cœur)
Le dsPIC (Modèle:Langue) est adapté aux applications de traitement du signal et peut donc remplacer un DSP de type Modèle:Nobr entier. L'unité DSP est accessible avec des instructions supplémentaires. Elle permet par exemple de faire du contrôle vectoriel de moteur (transformées de Park et de Clarke), de la FFT Modèle:Nobr, des filtres de type IIR/FIR. Microchip propose également des Modèle:Langue pour MATLAB Simulink permettant de générer du code pour tous les périphériques des dsPIC30 et dsPIC33.
En 2011, Microchip introduit les dsPIC33E qui ont notamment une puissance calcul pouvant aller jusqu'à Modèle:Nombre<ref name="Famille dsPIC33F">Modèle:Lien web.</ref> (millions d'instructions par seconde).
En 2019, les nouveaux dsPIC33CH (double cœur) Modèle:Nobr et les dsPIC33CK (simple cœur) Modèle:Nobr permettent d'améliorer encore la performance tout en gardant la compatibilité. Grâce à la nouvelle unité de PWM, la résolution est désormais de Modèle:Nombre.
Différents programmateurs de PIC
- Modèle:Nobr, Modèle:Nobr et Modèle:Nobr
- ICD2, ICD3 et ICD4
- MPLAB® Snap In-Circuit
- Modèle:Langue
- PM3 (programmateur pour la production)
- SoftLog : programmateurs pour la production y compris en parallèle (gang programmer)
Boîtiers
Une grande variété de technologies de boîtiers existent en fonction des familles : de 6 (SOT6) à Modèle:Nobr.
Notes et références
Voir aussi
Articles connexes
- Microchip
- PIC de la famille 16Cxxx/16Fxxx
- v:Kidule Ascenseur un cours de programmation sur base PIC 18F2550 sur Wikiversité.
Liens externes
- {{#invoke:Langue|indicationDeLangue}} GNU PIC Modèle:Langue
- Base de Données Technique du site Fribotte
- L'essentiel des PIC : un Modèle:Langue simplifié et en français pour Modèle:Nobr PICs
- Diverses informations ainsi que des tutoriels sous MPLAB avec CC5X.
- {{#invoke:Langue|indicationDeLangue}} Prototypage rapide pour PIC/dsPIC sous Matlab/Simulink
- Initiation au microcontrôleur PIC (ClubElek)
- Formation académique sur microcontrôleurs PIC
- Modèle:Lien archive
- PMP (Pic Micro Pascal) est un compilateur Pascal gratuit avec son propre EDI. Il est conçu pour travailler avec MPLAB de Microchip dont il utilise les fichiers de définition de processeurs, l'assembleur et l'éditeur de liens. Il supporte les processeurs PIC10 à PIC18.