La guerre en Ukraine a fait augmenter les prix des microcontrôleurs un fameux coût.
Chez ARM, c'est le STM32, ici, qui est le plus utilisé, leur prix est aux environs de 20 €.
Chez AVR, c'est l'Atmega 328P-PU (ici) qui est le plus utilisé (sur les cartes arduino uno), leur prix est aux environs de 5 € .
Le 16F84 est sorti en 1994.
Le 16F84A est sorti en 1997.
La différence entre un 16F84 et un 16F84A !
-1- Le 16F84A consomme moins.
-2- Il se programme plus vite.
-3- VDD va de 2 V à 5,5 V au lieu de 2 V à 6 V.
-4- Il supporte une température un peu plus haute.
-5- La fréquence maximum est de 20 MHz contre 10 MHz.
-6- À collecteur ouvert, il supporte une tension maximale de 8,5 V contre 12 V.
En conclusion la différence n'est pas vraiment grande, il faut juste faire attention avec la librairie du compilateur et avec le logiciel du programmateur.
La nomenclature des PIC
PIC16 pour les PIC qui ont un bus de données de 8 bit, comme il est indiqué sur le graphique ci-dessus.
PIC16xxx -> L pour l'étendue de VDD, F pour la mémoire flash, CR pour la mémoire Rom (programmable que 1 seule fois).
L -> LF pour VDD de 2 V à 5,5 V et F pour VDD de 4,2 V à 5,5 V.
LCR pour VDD de 2 V à 5,5 V d'une mémoire Rom (programmable que 1 seule fois).
Ensuite, il peut y avoir, 2, 3 ou 4 chiffres pour le type de uC PIC.
PIC16F84A ou PIC16F84AT, le T s'il n'existe quand SMD (SOIC ou SSOP).
PIC16F84A-04/P -> quartz de 4 MHz et le P pour les supports DIP.
La gamme de températures pour ce PIC16F84A-04/P est du type commercial.
La gamme de températures commerciale est de 0°C à 70°C.
PIC16F84A-04-I/P -> La gamme de températures industrielle est de -40°C à 85°C.
PIC16F84A-04-E/P -> La gamme de températures militaire est de -40°C à 125°C.
Au lieu de P vous pourriez avoir PT pour boîtier SMD, SO pour boîtier SOIC, SS pour un boîtier SSOP, OT pour des puces SMD, QTP pour des puces qui se soudent directement sur le circuit imprimé avec des petites boulettes et qui n'ont pas de pattes ou ML pour des SMD carrés. Il existe beaucoup de type de boîtier pour les microcontrôleurs !
______________________________________________________________________________________________________________________
Les microcontrôleurs PIC les plus utilisés
PIC12C508A (DIP), il a 8 pins et tourne à 4MHz.
PIC12F675 (DIP), il a 8 pins, 1 AD (convertisseur analogique vers digital) et tourne à 4 MHz.
PIC12F683 (DIP), il a 8 pins, 1 AD (convertisseur analogique vers digital) et tourne à 4 MHz.
PIC16F84A (DIP), ici, il a 18 pins et tourne à 20 MHz. C'était le plus utilisé !
PIC16F88 (DIP), il a 18 pins, 1 AD (convertisseur analogique vers digital) et tourne à 20 MHz.
PIC16F628A (DIP), il a 18 pins, un comparateur analogique et tourne à 20 MHz.
PIC16F648A (DIP), ici, il a 18 pins, un comparateur analogique et tourne à 20 MHz, leur prix est aux environs de 6,5 €.
PIC16F688 (DIP), il a 14 pins, 1 AD, un comparateur et tourne à 20 MHz.
PIC16F876A (DIP), ici, il a 28 pins, 1 AD, un comparateur et tourne à 20 MHz, leur prix est aux environs de 12 € .
PIC16F877A (DIP), il a 40 pins, 1 AD, un comparateur et tourne à 20 MHz.
PIC18F2450 (DIP), il a 28 pins, 1 AD, un comparateur, USB et tourne à 20 MHz.
PIC18F2550 (DIP), il a 28 pins, 1 AD, un comparateur, USB et tourne à 20 MHz.
PIC18F4520 (DIP), il a 40 pins, 1 AD, un comparateur, USB et tourne à 20 MHz.
PIC18F4550 (DIP), ici, il a 40 pins, 1 AD, un comparateur, USB et tourne à 20 MHz.
Il existe aussi sous forme de composant de surface que l'on nomme SMD.
Voir ici, le minimum à savoir sur la logique.
Lorsque des gens rament pour faire avancer un bateau, ils doivent tous ramer en même temps et de la même façon. Ils doivent tous avoir la même cadence. Dans les anciens navires, il y avait une personne qui battait le tambour pour donner cette fameuse cadence.
Pour un microcontrôleur, il donne des instructions sous une certaine cadence.
Un microcontrôleur travaille avec une certaine fréquence, de 4 MHz ou de 20 MHz.
Pour que cette cadence soit stable, on lui adjoint un quartz qui va osciller à cette fameuse fréquence qui lui donnera le tempo (comme un tambour).
Un soldat reçoit une instruction de ses supérieures et puis, il va l'exécuter.
Un microcontrôleur possède une mémoire interne ou son stoker les instructions qu'il doit réaliser l'une après l'autre.
La fréquence n'est pas parfaitement un signal bien carré, ce n'est pas bien grave, le microcontrôleur le sait bien et fait en sorte qu'il soit bien compris.
La fréquence, elle doit être stable et précise.
Il faut souvent 4 cycles d'horloge pour exécuter une seule instruction.
Un microcontrôleur possède des entrées et des sorties.
Sur 1 seul bit, il ne peut y avoir qu'un seul 0 ou bien qu'un seul 1.
Le 0 logique est à 0 volt (masse) et le 1 logique est a +5 V.
Si on a 8 fils de sortie, on dira que le bus de sortie est de 8 bit ou 1 byte.
Si on a 14 fils de sortie, on dira que le bus de sortie est de 14 bit.
Si on a 8 fils d'entrée, on dira que le bus d'entrée est de 8 bit ou 1 byte.
Maintenant, vous savez ce qu'est un bus de fils électrique.
Pour chaque type de microcontrôleur, il existe un tableau avec le code de chacune des instructions qu'il peut exécuter.
Le code peut s'exprimer sur un bus de 14 fils (14 bit) suivent le type de microcontrôleur comme 16F648A.
Le code sur 14 bit se mettra dans une mémoire flash, les instructions l'une après l'autre.
Une mémoire flash veut dire que l'on peut effacer par une impulsion électrique les instructions qui y sont placées. Pour y en remettre d'autres instructions.
En principe, on pourrait l’effacer plus de 1000 fois, sans la mettre en panne.
Une mémoire qui posséderait 4 casiers demanderait 2 fils (2 bit) pour sélectionner la casse où l'on veut placer un contenu (soit un 0 ou soit un 1).
Cette mémoire a 4 cases de 1 bit est en phase de lecture (c'est une PROM).
Il vous faut 2 bit pour sélectionner la case qui contient ce bit, on dira que le bus d'adressage est à 2 bit (l'un sur le noir et l'autre sur le violet).
Le fil noir sélectionne la rangée et le fil violet sélectionne la colonne.
Et il faut un fil (1 bit) qui nous donnera le contenu de la case sélectionnée (0).
Sur un bus de 8 bit, vous aurez 256 possibilités.
[00110001], [00000001], [10000000], [10000001], [01001111], ...
En réalité cela fait 28 = 256.
Pour le 16F648A le bus d'instruction est de 14 bit.
La mémoire flash peut contenir 4096 cases de 14 bit. C'est une mémoire flash (effaçable par une impulsion électrique lors de sa programmation), elle garde son contenu lorsque l'on coupe l'alimentation du microcontrôleur.
Il y a aussi une mémoire RAM de travail qui perd son contenu lorsque l'on coupe l'alimentation du microcontrôleur. Cette mémoire possède 256 cases de 8 bit.
Si l'instruction d'une division est demandée, on pourra mettre provisoirement le résultat dans une casse de cette RAM.
Dans un microcontrôleur, vous avez souvent des ports de sorties ou d'entrées de 8 bit.
Dans 16F648A vous avez le port A de 8 bit et le port B de 8 bit.
Vous avez compris qu'un bit peut être programmé en sortie ou bien en entrée sur ses 2 ports.
Il faut programmer un microcontrôleur avec un compilateur.
Il existe plusieurs types de compilateurs.
-1- L'assembleur est un compilateur proche du langage binaire, mais il suppose que vous connaissiez tout ce qu'il y a dans le microcontrôleur que vous avez choisi.
-2- Le compilateur en langage C, ce langage est plus évolué que l'assembleur, mais il faut connaître beaucoup de librairies. Une librairie est un morceau de programme fait en assembleur pour vous aider à programmer votre microcontrôleur.
-3- Le compilateur basic utilisé par PicAxe, dont l’interpréteur se trouve dans votre Pic et vous donner à ce PIC le code en basic. Il faut savoir que le langage en basic est connu depuis les premiers ordinateurs tels que le TRS-80 (1977).
-4- Le compilateur le plus évolué est le langage par organigrammes.
Le 1er microprocesseur était le 4004 en 1971, il travaillait avec un bus de 4 bit.
En pièce de collection, il vaut 300 000 €. De nos jours on regrette de les avoir jetés à la poubelle.
Les algorithmes sont une sorte de langage en organigrammes dans lequel on lui donne une partie de hasard pour qu'il puisse trouver la meilleure des solutions possibles.
Cela s'appelle l'IA, l’intelligence artificielle. (Une succession d’algorithmes capable de trouver les meilleures réponses que possible).
Un microcontrôleur ne permet pas de faire de l'intelligence artificielle à ce jour en 2023.
La différence entre un microcontrôleur et un microprocesseur.
L'un et l'autre font des calculs, ils ont une unité logique et arithmétique que l'on nommera L'ALU. Demandez à L'ALU de faire 3 + 2, ils vont tous les deux vous donner la même réponse qui est 5. Ils peuvent avoir des vitesses de résolution plus vite sur l'un que sur l'autre. Le microcontrôleur possède plus d'organes que le microprocesseur.
Il a des mémoires et des registres internes alors que le microprocesseur a tout à l’extérieur de lui. Le microcontrôleur est à lui seul est une petite carte mère.
Convertissons 3 en binaire -> 0b0000 0011
Convertissons 2 en binaire -> 0b0000 0010
Convertissons 5 en binaire -> 0b0000 0101
0b0000 0011 + 0b0000 0010 = 0b0000 0101
0b1111 1111 = 27+ 26+ 25+ 24+ 23+ 22+ 21+ 20 = 128+64+32+16+8+4+2+1 = 255.
0b0000 0011 = 21+ 20 = 2 +1 = 3.
0b0000 0010 = 21+ 0 = 2.
0b0000 0101 = 22 + 0 + 20 = 4+1 = 5.
0b0000 0000 = 0.
0b0000 0011, on dira que le bit du poids le plus faible est à droite et le bit du poids le plus fort est à gauche.
Un compilateur transforme votre langage symbolique en binaire.
Le binaire sera écrit dans un fichier nommé essai_1.hex.
Ensuite, le fichier essai_1.hex sera transmis au microcontrôleur avec un programmateur du genre PicKit 2.
Le Pickit 2 USB est celui que je préfère. Il est vendu chez Velleman, ici.
Car le port série RS232, commence à disparaître des cartes mères K8076 avec PicProg 2009 (qui contient le PIC18F2550).
Voici comment connecter un quartz sur le 16F648A
C1 et C2 valent de 15 pF à 33 pF et RS vaut de 100 E à 30 k ohms.
Plus C1 et C2 est élevée plus stable sera l'oscillateur, mais le PIC mettra plus de temps à démarrer. Il faut aussi garder une certaine symétrie du circuit imprimé avec le quartz.
C1 et C2 sont en série à travers la masse, et si l'on augmente la capacité la fréquence va diminuer.
RS sert à préserver le quartz en bon état. On mettra 470 E pour un quartz de longueur 1,2 cm (HC49U). Plus ils sont petits, et plus on augmentera cette résistance.
Le quartz le plus utilisé pour les PIC est celui de 20 MHz. 16F648A-I/P.
Et parfois c'est un quartz de 4 MHz. 16F84A-04/P.
Et parfois c'est un quartz de 20 MHz. 16F84A-20/P.
Le reset d'un PIC
_______
Au démarrage le condensateur met à 0 logique le MCLR du pic, afin de le démarrer au début du programme et pas n'importe où dans le programme que le PIC doit exécuter.
Un bouton poussoir pour revenir directement au début du programme en cas de problème par exemple.
MCLR possède une barre au-dessus de lui, pour vous dire que le reset est activé au 0 logique (0 V).
Un microcontrôleur possède divers registres de 8 bit.
Le plus important est le registre de travail nommé W.
Les instructions doivent souvent passer par ce registre.
Après avoir fait une somme de 2 + 3 = 5, on pourrait mettre le 5 dans le registre de travail.
En assembleur, il peut y avoir suivant le logiciel que vous utilisez, différentes façons d'écrire le code assembleur.
movlw B'00000101' ; met 5 dans w.
clrw ; met 0 dans w.
Flowcode v9 est un compilateur qui ne demande pas de connaître tous les organes du microcontrôleur.