« Kidule Dé/PIC Entrées Sorties » : différence entre les versions
Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (-\b(S|s)i il +\1'il) |
m Robot : Remplacement de texte automatisé (-\b(moi|Moi|eux|Eux|lui|Lui|elles?|Elles?) m[êe]me(s?)\b +\1-même\2) |
||
Ligne 31 :
{{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 l'on écrit, la donnée que l'on veut est mise dans le Data Latch à la fin de l'écriture. Or la lecture d'une pin est "gelée" durant toute la lecture. Si deux instructions "Read-Modify-Write" se suivent, la première met la donnée sur la pin à la fin du Write. Comme il s'agit d'une pin, qui a un consommateur au bout, la tension ne va pas monter instantanément. Or l'instruction suivante est un "read-modify-write", qui
Ce problème est présent sur tous les PIC, mais l'avantage avec la famille 18Fxxxx est que l'on peut lire et écrire le registre LAT. Dans les premiers PIC, ce registre existe aussi, mais on ne peut pas le lire, on ne peut que l'écrire via PORT... le risque est alors grand, et il faut faier attention en écrivant le soft de ne pas faire 2 "read-modify-write" de suite.
Ligne 41 :
== Allumage d'une LED ==
[[Fichier:Kidule Pilotage Led.png|left]] 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
Comme la Led est reliée au 5V, si on met 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 5Volts d'un côté et 5Volts de l'autre, la LED ne s'allume pas (comme un moulin noyé dans l'eau)
|