Le monde des micro contrôleurs

Schémas

Périphériques des micro contrôleurs

Éléments de programmation du 12F509

Éléments de programmation du 12F675

Éléments de programmation du 16F1825

Création d'un projet sous MPLAB IDE

Éléments de programmation du 16F1825

Nous avons vu, avec le 12F675, qu'il était possible de faire des choses intéressantes avec un petit (par la taille physique) MCU.

Mais, lorsque nous avons besoin de plus d'entrées ou de sorties, il devient nécessaire de passer à la taille supérieure. Je vous présente donc le PIC 16F1825, qui a un boîtier de 14 broches et donc six entrées/sorties supplémentaires. Lorsque nous aurons besoin d'encore plus, nous utiliserons le PIC 16F1829, qui est fonctionnellement identique, mais dans un boîtier de 20 broches et donc encore six autres entrées/sorties supplémentaires.

Voici un résumé de leurs possibilités :

  • 12 ou 18 entrées/sorties, dont 1 en lecture seulement.
  • Jusqu'à 32 Mhz d'horloge avec un quartz, 16 Mhz sans quartz avec l'oscillateur interne d'une précison de 1%.
  • 8192 mots de mémoire programme.
  • 1024 octets de mémoire dynamique (données).
  • 256 octets de mémoire EEPROM.
  • 8 ou 12 entrées analogiques pouvant être comparées ou converties en valeurs numériques (ADC).
  • 1 module de conversion de numérique vers analogique (DAC).
  • 5 timers, dont 1 de 16 bits.
  • 1 ou 2 port(s) série pour communiquer avec d'autres MCU ou ordinateurs en protocole RS232, SPI ou I²C.
  • 2 modules permettant de lire, comparer ou sortir des impulsions modulées en largeur (PWM).
  • 8 ou 12 touches sensitives en lecture.

La fiche descriptive est ici.

On trouve couramment le PIC 16F1825 en France à 1.58 EUR pièce.

Le PIC 16F1829 n'est pas facile à trouver à un prix amateur. Il est disponible chez les distributeurs professionnels, mais avec des frais de port prohibitifs quand on commande en petite quantité. Pour obtenir le port gratuit, il faut faire une commande de 65.00 EUR HT minimum, en dessous les frais sont de 18.00 EUR, ça fait cher pour un composant qui coûte moins de 2.00 EUR !


Présentation des fonctionnalités supplémentaires


Les ports d'entrée/sortie


Sur les MCUs que nous avons vus jusqu'à présent, il n'y avait qu'un seul port de six bits, appelé GPIO et les bits du port s'appelaient GP0, GP1, jusqu'à GP5.

Le PIC 16F1825 a deux ports, appelés PORTA et PORTC. Le port A a six bits, appelés RA0, RA1, jusqu'à RA5. Le port C a également six bits, appelés fort logiquement RC0, RC1, jusqu'à RC5.

Le PIC 16F1829 a trois ports, appelés PORTA, PORTB et PORTC. Le port A a toujours six bits, appelés RA0, RA1, jusqu'à RA5. Le port C a maintenant huit bits, appelés RC0, RC1, jusqu'à RC7. Le port B a quatre bits, appelés RB4, RB5, RB6 et RB7, ce n'est pas logique, mais c'est comme ça !


Les timers du deuxième type


Nous avons vu qu'un timer est un registre qui compte automatiquement, en parallèle avec le programme, le nombre d'impulsions qu'il reçoit d'une horloge. Lorsqu'il atteint la valeur maximum, il recommence à partir de zéro.

Nous avons également vu qu'il est possible d'utiliser un diviseur (prescaler) qui permet d'augmenter de 1 la valeur du registre seulement lorsqu'un certain nombre d'impulsions ont été reçues de l'horloge.

Lorsque le MCU le permet, le passage par zéro déclenche une interruption.

Les timers de type 2 des PIC 16F1825/1829 sont des timers sur 8 bits, ils ont un diviseur qui ne divise que par 1, 4, 16 ou 64, mais ont, en plus, un retardateur (postscaler) qui compte le nombre de passages par zéro avant de déclencher l'interruption. Les valeurs que peut prendre ce retardateur sont un nombre entre 1 et 16 et non plus une puissance de 2 comme pour le diviseur.

Par exemple :

  • Je veux une interruption toutes les 2 millisecondes, avec une horloge à 4 Mhz.
  • J'initialise le diviseur à 4, le timer va être additionné toutes les 1 µs.
  • J'initialise le timer à 6, ce qui va donner un passage à zéro toutes les 250 µs.
  • J'initialise le retardateur à 4.
  • J'ai mon résultat.

Il y a trois timers de type 2 qui s'appellent TMR2, TMR4 et TMR6.


Montage n° 1


À suivre !