Catégories: Circuits microcontrôleurs
Nombre de fois vus: 23111
Commentaires sur l'article: 0

Microcontrôleurs PIC pour débutants

 

Sur le marché moderne, il existe un certain nombre de familles et de séries de microcontrôleurs de différents fabricants, parmi lesquels AVR, STM32 et PIC peuvent être distingués. Chacune des familles a trouvé sa propre portée. Dans cet article, je parlerai aux débutants des microcontrôleurs PIC, à savoir ce que c'est et ce que vous devez savoir pour commencer avec eux.

Microcontrôleurs PIC pour débutants

Qu'est-ce qu'un PIC

PIC est le nom d'une série de microcontrôleurs fabriqués par Microchip Technology Inc (USA). Le nom PIC vient du contrôleur d'interface périphérique.

Les microcontrôleurs PIC ont une architecture RISC. RISC - un ensemble abrégé d'instructions, est également utilisé dans les processeurs pour appareils mobiles. Il existe un certain nombre d'exemples de son utilisation: BRAS, Atmel AVR et d'autres.

En 2016, Microchip a acheté Atmel, un fabricant de contrôleurs AVR. Par conséquent, le site officiel présente les microcontrôleurs de la famille et PIC et AVR.

Microcontrôleur PIC16F1xxx

Les familles

Parmi les microcontrôleurs PIC 8 bits, il se compose de 3 familles qui diffèrent par leur architecture (profondeur de bits et jeu d'instructions).

  • Ligne de base (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);

  • Milieu de gamme (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx);

  • Milieu de gamme amélioré (PIC12F1xxx, PIC16F1xxx);

  • Haut de gamme ou PIC18 (18Fxxxx, 18FxxJxx et 18FxxKxx).

Comparaison des familles de microcontrôleurs

Les caractéristiques sont données dans le tableau ci-dessous.

Caractéristiques du microcontrôleur PIC

En plus des microcontrôleurs 8 bits, Microchip produit 16 bits:

  • PIC24F;

  • DsPIC30 / 33F pour le traitement du signal.

Les représentants de la famille 16 bits fonctionnent à des vitesses de 16 à 100 MIPS (millions d'instructions par seconde terminées). Il convient de noter et comprend:

  • cycle de la machine - 2 cycles;

  • Résolution ADC - 16 bits;

  • prendre en charge un certain nombre de protocoles de communication (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN et SENT), PWM et plus encore.

Il existe également une famille de microcontrôleurs 32 bits - PIC32MX, dont les principales caractéristiques:

  • fonctionner à une fréquence allant jusqu'à 120 MHz;

  • Effectuer jusqu'à 150 MIPS

  • ADC: 10 bits, 1 Msps (vitesse de quantification), jusqu'à 48 canaux.



Par quel PIC commencer?

Les débutants doivent commencer à maîtriser les microcontrôleurs PIC à partir d'une ligne 8 bits. En général, le fabricant affirme qu'une caractéristique de toute la famille est la portabilité facile des programmes d'une famille à l'autre et le brochage d'un certain nombre de modèles.

PIC16f628A est l'un des microcontrôleurs les plus populaires dans l'environnement radio amateur. Ses caractéristiques techniques sont les suivantes:

  • Il y a un générateur d'horloge intégré. Vous pouvez régler pour travailler avec une fréquence de 4 ou 8 MHz;

  • 18 broches, dont 16 - entrée / sortie et 2 - alimentation;

  • Pour fonctionner à des fréquences allant jusqu'à 20 MHz, vous pouvez connecter un résonateur à quartz, mais dans ce cas, il ne reste pas 16, mais 14 jambes pour l'entrée / sortie;

  • Il y a une lettre F dans le marquage, ce qui signifie que la mémoire FLASH d'une capacité de 2048 mots est utilisée;

  • Instructions 14 bits, 35 pièces;

  • 2 comparateurs;

  • 4 entrées analogiques;

  • Les entrées PORTB ont des résistances pull-up;

  • Deux temporisateurs 8 bits et un 16 bits;

  • Cycle machine - 4 cycles d'un résonateur à quartz ou oscillateur interne);

  • 224 octets de RAM;

  • 128 octets d'EEPROM;

  • USART - port série;

  • référence de tension interne;

  • alimenté par 3,3 à 5 V.

Les raisons de sa popularité sont le faible prix et la possibilité de cadencer à partir d'un générateur interne.

Quel brochage de 16f628 est illustré ci-dessous:

Brochage à 16f628

Le circuit interne du bloc de ce microcontrôleur est illustré ci-dessous.

Structure du microcontrôleur 16f628

À quoi dois-je faire attention dans le programme en premier lieu?

Ce microcontrôleur possède deux ports PORTA et PORTB. Chaque broche, chacune d'entre elles peut être utilisée comme entrée et sortie, ainsi que pour connecter des périphériques ou activer d'autres modules de microcontrôleur.

Considérez cette partie du schéma en détail.

Ports MK

Par exemple, les ports RB0-RB3 - peuvent agir comme analogiques. Si nécessaire, une source d'horloge est connectée à RA6, RA7 (résonateur à quartz) Les sorties du microcontrôleur elles-mêmes sont configurées en mode d'entrée / sortie à l'aide du registre TRIS.

Il existe des commandes pour ce type:

TRISA = 0; // Toutes les broches du port A sont définies comme sorties
TRISB = 0xff; // Toutes les broches du port B sont affectées comme entrées
TRISA0 = 1; // Une broche séparée est donc affectée en entrée (1) ou en sortie (0)
TRISA5 = 1// ici la 5ème sortie du port A est affectée en entrée

En général, les modes de fonctionnement, l'inclusion d'un WDT (horloge de surveillance), le choix de la source d'horloge du microcontrôleur, etc. sont configurés à l'aide de registres spéciaux - SFR, et la mémoire et les données sont stockées dans GFR - en termes simples, il s'agit de RAM statique.

Dans la fiche technique officielle, aux pages 18-21, vous trouverez 4 banques de mémoire pour les registres spéciaux SFR et les registres généraux GFR. La connaissance des registres est importante, alors imprimez et apprenez les pages indiquées Fiche technique.

Pour plus de commodité, ces tableaux sont présentés sous forme d'images ci-dessous (la numérotation des registres, comme tout en électronique numérique, commence à 0, donc le quatrième chiffre est 3).

Registres spéciaux
Registres spéciaux
Registres spéciaux
Registres spéciaux

Comment se connecter et dans quelle langue programmer?

Pour exécuter ce microcontrôleur, il suffit d'appliquer plus à Vdd et moins à Vss. Si vous avez besoin d'un résonateur à quartz, il est connecté aux broches 16 et 15 (OSC1 et OSC2) du microcontrôleur PIC16f628, pour d'autres contrôleurs avec un nombre de broches plus ou moins grand - regarder dans la fiche technique. Mais ce point doit être indiqué lors de la programmation et du firmware.

En parlant de portabilité et de coïncidence du brochage - sur 16f84A - c'est similaire, et sur beaucoup d'autres.

Connexion d'un résonateur à quartz

Un fragment d'un circuit avec un résonateur externe connecté à pic16f628a:

Fragment de circuit avec un résonateur externe connecté à pic16f628a

Il existe deux langages principaux pour la programmation des microcontrôleurs PIC - assembleur et C, il y en a d'autres, par exemple PICBasic, etc. Vous pouvez toujours mettre en évidence le langage de programmation simplifié JAL (juste un autre langage).

Par exemple, ci-dessous est un programme pour «LED clignotant» - une sorte de «Hello World» pour le microcontrôleur PIC en C.

Un exemple de programme de microcontrôleur PIC en C

En ligne 1, la bibliothèque de microcontrôleurs PIC est connectée, puis la bibliothèque de programme de retard est connectée.

Dans la fonction principale (void), les paramètres initiaux sont définis au début, tout comme nous l'avons fait dans la fonction Void setup () - dans des articles sur l'arduino. Ensuite, aux lignes 11-16, une boucle while (1) infinie est déclarée, pendant laquelle le programme «LED clignotant» est exécuté.

Dans l'exemple, l'état du port est constamment inversé, c'est-à-dire s'il était à "0", alors il ira à "1" et vice versa. Dans C pour PIC, il existe les commandes de gestion des commandes suivantes:

PORTA = 0; // traduit toutes les broches du port A à un niveau bas (log. 0)
PORTB = 0xff; // traduit toutes les broches du port B à un niveau élevé (log. 1)
RB5 = 1; // La cinquième broche du port B est haute

Et cela ressemble au même programme, mais déjà dans la langue JAL, j'ai traduit en russe les commentaires des développeurs d'exemples intégrés dans JALedit (environnement de développement).

Exemple de programme JAL

Il y a une tentation de choisir JAL, et cela peut vous sembler plus simple. Bien sûr, vous pouvez y mettre en œuvre n'importe quel projet, mais du point de vue du bénéfice pour vous en tant que spécialiste, c'est un langage inutile. Vous obtiendrez des résultats beaucoup plus importants en étudiant la syntaxe et les principes de programmation en C (la plupart des langages actuellement populaires sont de type C) ou dans Assembler - c'est un langage de bas niveau qui vous fera comprendre le principe de l'appareil et ce qui se passe dans le programme à un moment donné.


Comment travailler

Si vous dites assez généralisé pour fonctionner avec les microcontrôleurs dont vous avez besoin:

1. Éditeur de texte.

2. Le compilateur.

3. Le programme de téléchargement du firmware sur le microcontrôleur.

Et j'ai même lu de vieux manuels, où l'auteur, travaillant sous DOS, écrivait du code, le compilait et le flashe en utilisant divers moyens. Désormais, pour tous les systèmes d'exploitation courants, il existe des environnements de développement, à la fois hautement spécialisés (pour une famille spécifique de microcontrôleurs ou familles d'un même fabricant) et universels (soit contenant tous les outils nécessaires, soit connectés en plug-ins).

Par exemple, dans une série d'articles sur Arduino, nous avons examiné l'environnement Arduino IDE, dans lequel nous avons écrit du code et avec son aide, «versé» le firmware dans «la pierre». Pour les microcontrôleurs PIC, il existe des programmes tels que:

  • MPASM - utilisé pour le développement dans le langage assembleur de Microchip;

  • MPLAB est également l'IDE Microchip pour les contrôleurs PIC. Il se compose de nombreux blocs pour tester, vérifier, travailler avec du code et compiler des programmes et les télécharger sur le microcontrôleur. Il existe également une version de MPLAB X IDE - il présente de grandes fonctionnalités et est construit sur la base de la plate-forme NetBeans;

  • MikroC est un environnement universel (pas seulement pour les PIK) pour le développement. Comme son nom l'indique, il est «affiné» pour la programmation C, et il existe également des programmes comme MikroBasic et MikroPascal pour les langages correspondants;

  • JALedit - adapté à la langue JAL que nous avons mentionnée ci-dessus;

  • Et un certain nombre d'autres moins connus.

MPLAB IDE

Comment flasher un microcontrôleur?

Il existe un certain nombre de programmeurs pour les micro-contrôleurs PIC. Considéré officiellement comme PICkit. Leurs 4 versions. Mais vous pouvez flash et universel, par exemple, le TL866 (il prend en charge presque tout ce dont un radio-amateur novice pourrait avoir besoin, alors qu'il est très bon marché).

Programmateurs pour micro-contrôleurs PIC

Sur le réseau, il existe également un certain nombre de circuits de programmation différents pour les PIC, à la fois pour travailler via le port COM:

Circuit programmeur

Il est donc via USB (en fait, aussi com, uniquement via le convertisseur sur l'IC MAX232).

Circuit programmeur

Conclusion

Les microcontrôleurs PIC16 conviennent aux projets simples, tels que l'automatisation simple, les voltmètres, les thermomètres et autres petites choses. Mais cela ne signifie pas que vous ne pouvez pas faire de projets complexes et de grande taille sur cette famille, j'ai donné un exemple des raisons pour lesquelles ils sont le plus souvent utilisés. Pour une idée générale, je recommande de regarder quelques vidéos:

Dans un article, il est inutile d'examiner des sujets sur la façon de programmer les microcontrôleurs, quelle que soit la famille. Puisqu'il s'agit d'une très grande quantité d'informations.

Voir aussi sur e.imadeself.com:

  • Types et disposition des microcontrôleurs AVR
  • Programmation de microcontrôleurs pour débutants
  • Que sont les microcontrôleurs - objectif, appareil, logiciel
  • Microcontrôleurs programmables en JavaScript: lequel choisir, caractéristiques ...
  • Méthodes de lecture et de gestion des ports d'E / S Arduino

  •