Différence entre PORT et loquet sur PIC 18F

j'ai déjà lu la fiche technique et google mais je ne comprends toujours pas quelque chose.

Dans mon cas, j'ai mis des BROCHES RC6 d'un PIC18F26K20 en mode de SAISIE:

TRISCbits.TRISC6 = 1;

puis j'ai lu la valeur avec le PORT et le loquet et j'ai une valeur différente!

v1 = LATCbits.LATC6;

v2 = PORTCbits.RC6;

v1 me donne 0 où v2 donne 1.

Est-ce normal? Où cas où nous devons utiliser le PORT et dans quel cas le loquet?

22
demandé sur acemtp 2010-04-12 20:00:10

7 réponses

Le loquet est l' sortie verrouillez sur les valeurs qui sont écrites. Le port est la tension sur la broche.

il y a quelques situations où elles peuvent être différentes. Celui que j'ai rencontré le plus souvent est si vous avez une broche (accidentellement) court-circuité au sol. Si vous réglez le loquet haut, le loquet se lira haut, mais le port se lira bas parce que la tension sur la goupille est encore à peu près au sol.

une autre situation conduisant à ce que vous avez décrit est quand le port pin n'a pas été configuré correctement. J'AI (et tous ceux avec qui je travaille) passé de nombreuses heures à essayer de comprendre pourquoi notre PIC ne fonctionne pas comme prévu, pour finalement découvrir que nous avons glissé sur le fait de désactiver les modules analogiques, par exemple. Assurez-vous de parcourir la section I/O Ports - > PORT? TRIS? et LAT? registres dans la fiche technique. Vous pouvez obtenir plus d'infos dans le Microchip wiki page ce qui explique la lecture de la mauvaise valeur immédiatement après l'écriture d'une sortie sur une broche connectée à une charge capacitive.

cette page wiki explique aussi:

une lecture du registre de verrouillage du port renvoie les paramètres des pilotes de sortie, tandis qu'une lecture du registre du port renvoie les niveaux logiques vus sur les pins.

en outre, voici un extrait de la section I / O Ports sur le 18F14K50 (qui devrait être le même que le reste de la série 18F):

Chaque le port dispose de trois registres pour son opération. Ces registres sont les suivants:

  • TRIS register (data direction Direction register)
  • PORT register (lit les niveaux sur les pins de l'appareil)
  • LAT registre (sortie le loquet)

ainsi, dans la plupart des situations, vous écrirez au verrou et vous lirez à partir du port.

30
répondu Mark Rushakoff 2016-01-24 17:28:21

je vais adapter ma réponse de L'électrotechnique.

utilisons l'image du manuel:

Generic I/O Port Operation

quand vous écrivez un bit dans une pin I/O, vous stockez ce bit depuis le Bus de données vers le Registre de données (D-FlipFlop