« Kidule Dé/PIC Entrées Sorties » : différence entre les versions
Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (- c'est + c’est ) |
m Robot : Remplacement de texte automatisé (- l'on + l’on ) |
||
Ligne 14 :
Pour faire qu'une pin devienne une entrée, il faut d’abord écrire un 1 dans le bit correspondant de TRISx. Cela coupe la partie Data Latch [http://fr.wikiversity.org/w/index.php?title=Spécial:Recherche&search=bascules+D] de la pin (symbolisé par le triangle ou il y a une croix en rouge).
Lorsque
pour lire le bit 0 du PORTA, on peut écrire
Ligne 30 :
Pour qu'une pin soit une sortie, on doit mettre un 0 dans le bit correspondant du registre TRIS, ce qui permet de connecter la sortie du Data Latch avec la pin (petit triangle colorié en vert).
On peut alors écrire ce que
Pour écrire un 0 dans le bit 0 du PORTA, on peut écrire
Ligne 39 :
{{Preuve|titre=Pour les experts : différence entre LAT et PORT|contenu=
Lors de la définition des entrées sorties, faire attention avec un 18F2550 d'utiliser LATxxx pour les sorties et PORTxxx pour les entrées. En effet, si deux instructions assembleurs BCF ou BSF se suivent sur le même PORT, le résultat n'est pas prédictible !!! La doc du PIC est assez peu claire sur ces instructions dites "Read-Modify-Write", mais on peut très bien avoir un résultat erroné (p. ex. BCF PORTA,0 suivit de BSF PORTA,1 peut fort bien se terminer avec le bit 0 de PORTA qui clignote (passe à 0 lors du BCF, puis repasse à 1 lors du BSF de son voisin). En regardant bien le schéma, on comprend pourquoi: lorsque
Ce problème est présent sur tous les PIC, mais l'avantage avec la famille 18Fxxxx est que
En déclarant les bits comme c’est la cas ici, et contrairement à la pratique Pinguino qui consiste à utiliser la procédure DigitalWrite(), on améliore l’efficacité du code de manière drastique (au moins 1 à 20) et on est très proche de l'assembleur, mais du coup, on s'expose à ce problème !!! Il faut donc bien déclarer les IOs
Ligne 49 :
== Allumage d'une LED ==
Si on regarde le schéma, on voit que le fil de la LED0 est connecté à la patte RA0 du processeur et cette patte est elle-même connectée à une variable LATA0 qui se trouve dans le processeur. Pour être exact, le processeur a une variable LATAbits qui possède dedans 8 petites variables qui ne peuvent avoir que 1 ou 0. Lorsque
Comme la Led est reliée au {{unité|5|V}}, si on met {{unité|0|Volt}} (=un 0 dans RA0), la LED s'allume, car il y a du courant qui peut passer (comme un moulin avec de l'eau en haut d'un côté et de l'eau en bas de l'autre). Par contre si on a {{unité|5|Volts}} d'un côté et {{unité|5|Volts}} de l'autre, la LED ne s'allume pas (comme un moulin noyé dans l'eau)
Ligne 58 :
#define Eteint 1
</source>
Comme cela on peut écrire des choses que
{{clr}}
|