« Utiliser les PIC 16F et 18F/Les ports et le langage C » : différence entre les versions

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (- d'utiliser + d’utiliser )
m Robot : Remplacement de texte automatisé (-\n(==={0,3})(?: *)([^\n=]+)(?: *)\1(?: *)\n +\n\1 \2 \1\n)
Ligne 9 :
 
Les [[w:Port_matériel|PORTs]] sont des [[w:Registre_(informatique)|registre]]s destinés à gérer les entrées sorties : allumer une [[w:Diode_électroluminescente|led]], lire si un [[w:Capteur|capteur]] est à un ou zéro sont des actions que peuvent faire les PORTs.
== Manipulation des bits des ports et registres ==
Nous avons déjà présenté dans le chapitre précédent comment il était possible de manipuler les [[w:Bit|bit]]s avec des masques. Il existe une autre méthode que nous allons présenter maintenant.
 
Ligne 18 :
L'installation de l'environnement de développement gratuit MPLAB de [[w:Microchip|Microchip]] vous permet d’utiliser les deux derniers gratuitement (il faut payer pour avoir la version optimisée).
 
=== On connaît seulement le bit par sa position ===
 
Jusqu'à présent nous avons désigné les positions de [[w:Bit|bit]]s par b0 ([[w:Bit_de_poids_faible|poids faible]]) à b7 ([[w:Bit_de_poids_fort|poids fort]]).
* En mikroC, il est possible d'accéder à un bit particulier pour toute variable sur 8 bits avec B0..B7 ou F0..F7.
 
=== On connaît le bit par son nom ===
La documentation des composants PIC donne des noms aux [[w:Bit|bit]]s de la plupart des [[w:Registre_(informatique)|registre]]s. Pour ces registres, on peut utiliser la même méthode ou utiliser les noms des bits.
* En MikroC : nom du bit suivi par _bit ou nom du registre "." nom du bit
Ligne 31 :
Si vous voulez connaître le nom des bits, je ne vois aucun autre moyen que de lire les fichiers d'en-têtes.
}}
==== Exemple de fichier d'en-tête pour MikroC ====
À proprement parler, pour le compilateur MikroC, les définitions ne sont pas dans un fichier avec une extension (.h) mais dans des fichiers qui se trouvent dans un répertoire defs et qui ont l'extension (.c). On en présente un extrait maintenant :
<source lang="c">
Ligne 57 :
{{remarque|contenu=Gardez en mémoire pour toute la suite, que le registre '''OPTION''' s’appelle OPTION_REG en MikroC.}}
 
==== Exemple de fichier d'en-tête pour Hitech C ====
Par exemple pour le [[w:PIC_16F84_de_Microchip|PIC 16F84 de Microchip]], on trouvera un ficher d'en-tête pour le compilateur Hitech C nommé pic1684.h dans lequel on peut lire :
<source lang="c">
Ligne 71 :
qui vous donne le nom des bits du [[w:Registre_(informatique)|registre]] '''STATUS''' ! Vous vous seriez certainement attendu à "C" au lieu de "CARRY" si vous avez lu toutes les documentations présentées jusqu'à maintenant.
 
==== Exemple de fichier d'en-tête pour C18 ====
Voici un autre exemple, pour le '''PORTA''' pour le compilateur C18 trouvé dans le fichier p18f4550.h.
<source lang="c">
Ligne 108 :
Cet exemple nous montre la diversité des noms des [[w:Bit|bit]]s pour un même [[w:Port_matériel|port]].
 
=== Exemple pour comparer ===
Nous présentons un exemple pour comprendre :
{| class="wikitable"
Ligne 146 :
Remarquez les techniques différentes utilisées par trois compilateurs.
 
== Les PORTs du 16F84 ==
=== Le PORT A: RA0 … RA4 ===
Le PORT A est un des deux [[w:Port_matériel|port]]s du [[w:PIC_16F84_de_Microchip|PIC 16F84]], et comprend 5 lignes Entrées/Sorties.
Ligne 159 :
La ligne RA4 est une entrée à Trigger de Schmitt et une sortie à drain ouvert qui est multiplexée avec l’entrée de Timer '''TMR0'''.
 
==== Le PORT A et ses bits en MikroC ====
 
La définition du port A est faite dans le fichier :
Ligne 170 :
Il n'y a aucune définition de noms de [[w:Bit|bit]]s. Il vous faut donc utiliser ''PORTA.F0'' à ''PORTA.F4''
 
==== Le PORT A et ses bits en HitechC ====
Voici les noms du '''PORTA''' et de ses [[w:Bit|bit]]s :
<source lang="c">
Ligne 186 :
Rappelez-vous qu’il n'y a que 5 [[w:Bit|bit]]s d'utilisables dans le PORTA dans le [[w:PIC_16F84_de_Microchip|PIC 16F84]].
 
=== Le registre TRISA ===
Le [[w:Registre_(informatique)|registre]] '''TRISA''' (Bank 1) est le registre qui permettra de placer les broches indépendamment en entrée ou en sortie.
{{propriété|contenu=
Ligne 196 :
Pour des exemples de manipulation du PORT A en [[w:Assembleur|assembleur]], lisez [[b:Comment_démarrer_avec_un_PIC16F84|Comment démarrer avec un PIC 16F84]].
 
==== Le registre TRISA et ses bits en MikroC ====
La définition du [[w:Port_matériel|port]] A est faite dans le fichier :
<source lang="c">
Ligne 206 :
Il n'y a aucune définition de noms de [[w:Bit|bit]]s. Il vous faut donc utiliser ''TRISA.B0'' à ''TRISA.B4''
 
==== Le registre TRISA et ses bits en HitechC ====
Voici les noms du '''TRISA''' et de ses bits :
<source lang="c">
Ligne 222 :
Rappelez-vous qu’il n'y a que 5 [[w:Bit|bit]]s d'utilisables dans le PORTA dans le [[w:PIC_16F84_de_Microchip|PIC 16F84 de Microchip]].
 
=== Fonctionnement des PORTs ===
Les [[w:Port_matériel|PORT]]S fonctionnent toujours sur le principe
Ligne 238 :
1, et le tout sera replacé dans '''PORTA'''. RA4 est donc maintenant à 0, sans que vous l’ayez explicitement modifié.
 
=== Le PORT B et le registre TRISB ===
Ces [[w:Registre_(informatique)|registre]]s fonctionnent exactement de la même manière que '''PORTA''' et '''TRISA''', mais concernent bien entendu les 8 broches RB. Tous les [[w:Bit|bit]]s sont donc utilisés dans ce cas.
Voyons maintenant les particularités du '''PORTB'''. Les entrées du '''PORTB''' peuvent être connectées à une [[w:Résistance_de_tirage|résistance de tirage]] au +{{Unité|5|{{abréviation|V|volt}}}} de manière interne, cette sélection s’effectuant par le bit 7 du registre '''OPTION''' (effacement du bit7 RBPU pour valider les résistances de rappel au +{{Unité|5|{{abréviation|V|volt}}}}).
 
==== PORTB TRISB et leurs bits en Mikro C ====
 
<source lang="c">
Ligne 258 :
Encore une fois aucune définition de [[w:Bit|bit]]s particuliers.
 
==== PORTB TRISB et leurs bits en Hitech C ====
Le compilateur Hitech C définit naturellement les [[w:Registre_(informatique)|registre]]s correspondants et en plus donne un nom aux [[w:Bit|bit]]s.
<source lang="c">
Ligne 289 :
</source>
 
=== Brochage ===
Le brochage du PIC 16F84A en boitier [[w:DIL|DIL]] est le suivant :
 
Ligne 296 :
Comme on peut s'y attendre on retrouve tous les [[w:Port_matériel|PORT]]s sur le brochage : les 5 bits du '''PORTA''' (RA4 ... RA0) et les 8 bits du '''PORTB''' (RB7 ... RB0).
 
== Des LEDs et des boutons poussoirs sur des PORTs ==
Le but de cette section est d'étudier quelques connexions électriques à partir des PORTs d'un microcontrôleur. Nous nous contenterons des [[w:Diode_électroluminescente|Diode électroluminescente]] et des boutons poussoirs.
=== Le PORT et sa modélisation électrique ===
Le modèle électrique est très simple : on le modélise comme d'habitude à l'aide de Thevenin.
 
Ligne 305 :
[[Fichier:TheveninPort.png|thumb|center|500px|Modèle de Thévenin d'un PORT en sortie]]
 
=== Connecter et dimensionner des LEDs ===
Une LED (ou [[w:Diode_électroluminescente|Diode électroluminescente]]) est une diode et par conséquent se modélise de la même manière :
 
Ligne 318 :
À gauche c’est le [[w:microcontrôleur|microcontrôleur]] qui est à l'origine du courant. À droite c’est lui qui reçoit le courant passant par la LED et provenant d'une alimentation. Évidemment, il faut un un logique sur le bit PA1 pour allumer la LED de gauche et un zéro logique sur le bit PA2 pour allumer la LED de droite.
 
=== Connecter des boutons poussoirs ===
Il est naturellement possible de connecter des boutons poussoirs à un PORT et de demander au micro-contrôleur de dire si le bouton est appuyé ou relâché. (Sur un robot mobile on peut utiliser ce principe pour détecter des objets)
 
Ligne 327 :
La gestion des résistances internes de tirage dépend fortement du processeur. Sur le PIC c’est un seul bit pour tous les PORTs.
 
== Les PORTs du 16F877 ==
Voir [[w:16F877|PIC 16F877]] dans wikipédia en attendant.
 
== Les PORTs du 18FXXXX ==
 
Voici la documentation:
Ligne 483 :
Les bits de TRISB sont désignés par TRISBbits.TRISB0 ... TRISBbits.TRISB7 avec le compilateur C18.
 
== Voir aussi ==
=== Liens internes ===
* [[w:Microcontrôleur_PIC|microcontôleur PIC]]
Ligne 490 :
* [[w:16F877|PIC 16F877]]
* [[b:Comment_démarrer_avec_un_PIC16F84|Comment démarrer avec un PIC 16F84]]
=== Lien externes ===
[http://angeliz.free.fr/langagec/langagec_pic.htm Langage C sur PIC 16F876]
{{CfExo