13
Utilisation et programmation en C des microcontrôleurs PIC 16F876 – 16F877 Projet tutoré 2ème année GTR, 2004/2005 Tuteur de projet : M. Millet Xavier Frachebois, Mathieu Coin Table des matières Introduction ..................................................... .................................................................. .......1 I- Programmation du PIC .............................................................. ......................................... 1 1- Ecriture du PIC .............................................................. ...................................................1 2- Ecriture des programmes ....................................................... ...........................................1 II- Plaques de l'UTBM ........................................................... ..................................................2 1- Présentation ..................................................... .................................................................2 2- Détail de la plaque ........................................................... .................................................2 3- Exemples

Utilisation et programmation en c

Embed Size (px)

Citation preview

Page 1: Utilisation et programmation en c

Utilisation et programmation en C

des microcontrôleurs PIC

16F876 – 16F877

Projet tutoré 2ème année GTR, 2004/2005

Tuteur de projet : M. Millet

Xavier Frachebois, Mathieu Coin

Table des matières

Introduction ..............................................................................................................................1

I- Programmation du PIC ....................................................................................................... 1

1- Ecriture du PIC .................................................................................................................1

2- Ecriture des programmes ..................................................................................................1

II- Plaques de l'UTBM .............................................................................................................2

1- Présentation ......................................................................................................................2

2- Détail de la plaque ............................................................................................................2

3- Exemples d'application .................................................................................................... 3

3.1- Envoi d'une chaine de caractères via la liaison série V24 ....................................... 3

3.2- Utilisation du CAN et envoi de la tension via la liaison V24 ................................. 3

3.3- Transmission de la voix PIC à PIC ......................................................................... 4

III- Plaque "COMFILE" ........................................................................................................ 6

1- Détail de la plaque ............................................................................................................6

2- Utilisation du clavier et visualisation via la liaison V24 ................................................. 7

Notes .......................................................................................................................................... 8

Introduction

Le PIC est un microcontrôleur, composant électronique fabriqué par Microchip. Ce composant possède une multitude de pattes, certaines correspondent à des fonctions

Page 2: Utilisation et programmation en c

particulières comme le port série ou le convertisseur analogique/numérique (CAN). Les autres, organisées en port, sont utilisable en entrées/sorties TTL, c'est à dire qu'elles délivrent une tension de 0 ou 5 Volts (Annexe 1) Il possède également une mémoire morte pour stocker les programmes de type EPROM, EEPROM ou FLASH et vive pour les calculs (RAM). Pour fonctionner, il à besoin d'une horloge délivrée par un quartz ou un oscillateur. Si on utilise un quartz de 4MHz, on obtient 1000000 de cycles/seconde. Sachant qu'il exécute pratiquement 1 instruction par cycle, hormis les sauts, cela donne une puissance de l’ordre de 1 million d’instructions par seconde.Il y a 3 grandes familles de PIC : La famille Base-Line, qui utilise des mots d’instructions de 12 bits, la famille Mid-Range, qui utilise des mots de 14 bits (dont font partie les 16F876 et 16F877), et la famille High-End, qui utilise des mots de 16 bits.

I- Programmation du PIC

1- Ecriture du PIC

Le PIC se programme normalement à l'aide d'un programmateur. Le programme "bootloader" permet de s'en passer. Cependant, pour l'écrire dans le PIC, vous devez utiliser le programmateur au moins une fois. Ensuite, vous pourrez programmer le PIC directement depuis la plaque avec le logiciel "Pic downloader" (Annexe 2a).

2- Ecriture des programmes

Les programmes de microcontroleur s'écrivent d'habitude en assembleur. Cependant ce langage, même si plus performant, est assez compliqué. Nous les programmerons donc en C. Pour passer du C en assembleur, nous utiliserons le logiciel CCS (Annexe 2b). Celui-ci, une fois le programme C compilé, crée un fichier en .HEX. On procède alors au transfert de ce fichier du PC au PIC. Pour cela, vous devrez appuyer sur le bouton rouge afin de faire un reset du PIC, ce qui va importer le nouveau programme. Vous procèderez de la même façon pour chaque nouveau programme. Le transfert du fichier est assuré par la liaison série V24.

Exemple d'un programme en C faisant clignoter la LED connectée à la patte A0.

II- Plaques de

l'UTBM

Page 3: Utilisation et programmation en c

1- Présentation

Les deux plaques ci-dessous sont identiques dans leurs fonctions. Elles permettent de programmer et d'utiliser le PIC 16F876 pour des applications simples. Le lien série, V24, permet la programmation et la communication avec un PC ou un périphérique. Le bouton rouge est utilisé pour le reset et le chargement d'un programme.

La plaque de gauche est la première que nous avons utilisée, vous utiliserez celle de droite.

2- Détail de la plaque

3-

Exemples d'application

3.1- Envoi d'une chaine de caractères via la liaison série V24

Ce programme montre comment utiliser la liaison série V24 pour la transmission d'une chaine de caractères. Pour visualiser la chaine, on utilise un terminal comme "hyper terminal".

Page 4: Utilisation et programmation en c

Le "\n" dans la fonction printf()

permet le saut de ligne et

le "\r" le retour à la ligne.

3.2- Utilisation du CAN et envoi de la tension via la liaison V24 Celui-ci permet d'utiliser le convertisseur analogique/numérique. Il renvoi la mesure d'une tension comprise entre 0 et 5V via la liaison V24. On visualise le résultat avec un terminal.

Le coefficient de valeur 205,7 permet de passer d'une valeur variant de 0 à 1023 à une valeur variant de 0 à 5V. Le temps d'une mesure du CAN est d'environ 46 μs.

Page 5: Utilisation et programmation en c

Pour obtenir le temps d'une mesure du CAN, nous avons relevé à l'oscilloscope le résultat sur la patte B0 des programmes suivants. Nous en avons déduit ce temps.

Temps d'une mesure : 50 - 4 = 46 μs 3.3- Transmission de la voix PIC à PIC

Page 6: Utilisation et programmation en c

Le dernier montage permet en théorie de transmettre de la voix via la liaison V24 d'un PIC à l'autre. Cette liaison peut fonctionner avec un débit max. de 19200 b/s. L'acquisition se fait par le CAN du PIC via un micro et un amplificateur. La restitution se fait par un CNA (Annexe 3), connecté à l'autre PIC par la liaison série I2C, sur un haut-parleur après amplification. Cependant la chaine de transmission tel que nous vous la présentons ne fonctionne pas. Le problème vient certainement de la vitesse de la liaison I2C du PIC qui n'est pas assez rapide.

Transmission de la voix PIC à PIC

Une solution aurait été d'interfacer un CNA parallèle ou d'en fabriquer un avec un réseau R2R sur le port B libre. Par manque de temps nous n'avons pas pu la tester.

Pour en arriver la, nous avons commencé par quelque chose de plus simple et qui fonctionne. Il s'agit du montage ci-dessous. Un PIC envoi par la liaison V24 la tension que mesure son CAN (on l'appelera l'émetteur) à un autre PIC (on l'appelera récepteur). Celui-ci la renvoi à son tour au CNA. En sortie de ce dernier, on retrouve la valeur d'entrée du CAN.

Transmission d'une tension PIC à PIC

Page 7: Utilisation et programmation en c

- Programme de l'émetteur :

Le CAN est paramétré sur 8 bits car

le CNA utilisé est également sur 8 bits.

-

Programme du récepteur :

III-

Page 8: Utilisation et programmation en c

Plaque "COMFILE"

1- Détail de la plaque

Cette plaque possède plusieurs modules indépendants :

- Un afficheur LCD sur port série (1)

- Quatres afficheurs numériques à DEL 7 segments (2)

- Un moteur à courant continu avec son contôleur (3)

- La liaison série V24 (4)

- Un oscillateur à quartz de 4 MHz et un quartz de 20 MHz (5)

- Une série de DEL (6), d'interrupteurs (10) et de boutons poussoirs (11)

- Un clavier numérique (matrice 3x4) (7)

- Une plaque d'essai (8)

- Un générateur de tension variable de 0 à 5 Volts (9)

- Un buzzer et un haur-parleur (12)

Câblage de base avec le PIC 16F877

Page 9: Utilisation et programmation en c

2- Utilisation du clavier et visualisation via la liaison V24Le clavier est une matrice de boutons poussoirs(voir le schéma ci-contre). Pour déterminer quelbouton est pressé, il faut les tester par ligne de trois en appliquant une tension nulle sur la ligne à tester et une tension de 5V sur les autres.Exemple : Pour tester les boutons 1, 2 et 3 on applique une tension de 0V sur B4 et de 5V sur B5, B6 et B7.Ainsi, si on lit une tension de 0V sur B0, cela veut dire que le bouton 1 est pressé. Si on a 0V sur B1, c'est le bouton 2, etc.

Le programme présenté ci-dessous permet d'utiliser ce clavier. Il envoi le caractère de la touche pressée par la liaison V24. On peut visualiser ce caractère à l'aide d'un terminal.

Page 10: Utilisation et programmation en c

Programme non testé par manque de temps.