PIC 18f et PORT-B

Essayer d'obtenir un clavier 4x4 fonctionnant avec un PIC 18f4685.

I've turned on weak-pulls ups. Set the appropriate pins to either input/output but when I send a signal out I'm not getting it back on bits 6 & 7. It just gets zeros...

J'ai essayé de déboguer en utilisant le PicKit3 mais il semble qu'il utilise RB7 et plante des choses quand un bouton pour cette rangée est poussé. Bien sûr, cela me dit que les signaux doivent passer, jusqu'à un certain point.

Y a-t-il autre chose en particulier que je dois configurer dans la configuration pour PORT B?

Comme toujours ... votre aide est grandement appréciée.

0
Merci à tous pour les idées supplémentaires de problèmes de configuration possibles à surveiller. J'ai réussi à le faire fonctionner. Ya, ne peut pas utiliser PicKit3 pendant le test de débogage et un de mes joints de soudure était mauvais. Tu es le meilleur forum! TOUJOURS obtenir une réponse amicale rapide!
ajouté l'auteur Chef Flambe, source
Quelles broches sont des entrées et quelles sont les sorties? En supposant que RB4-7 sont des entrées ...
ajouté l'auteur ajs410, source

3 Réponses

Pouvez-vous montrer à l'aide de votre code pour définir les registres à trois états (TRISB) et comment vous lisez. Avez-vous vérifié les tensions aux bornes d'entrée avec un multimètre numérique (DMM) avant et pendant la pression du bouton? Ils sont 10 $ et ça vaut le coup.

Finally, did you disable the analog pins? On PIC24 chips you have to do:

AD1PCFG = 0xFFFF

avant que les lectures d'entrée numériques fonctionnent. Peut-être le même sur votre puce.

Pouvez-vous nous donner le numéro de modèle EXACT de votre puce?

0
ajouté

Puisque le site de l'EE vous a si brutalement fermé avant que vous puissiez obtenir une réponse, je me suis dit que je viendrais ici pour répondre à votre question.

Vérifiez la table 10-3 à la page 135, elle liste toutes les capacités des broches du port B. Notez que RB6 et RB7 sont également les broches de débogage, donc je ne les utiliserais pas.

Also, are you writing to LATx and reading from PORTx? It's important to do this when reading and writing to the same port. If you read and write to PORTx, you can accidentally read a stale value from an output that has not had enough time to change yet, and your next write will obliterate your intended value. This is particularly pernicious on PICs that don't have a LATx register; any operation, even bit-wise operations like BSF/BCF, will do a read-modify-write of the ENTIRE port register, affecting more than the bit that you intended to modify. See the answer to this EE question: https://electronics.stackexchange.com/questions/28744/interfacing-a-keypad-with-a-microcontroller

0
ajouté
Bon point sur les registres LATx.
ajouté l'auteur Adam Casey, source

Vous n'êtes pas sûr de votre schéma (une esquisse peut vous aider), mais une erreur courante dans PIC GPIO ne règle pas les registres ADC sur les entrées numériques. Ils sortent de la réinitialisation en tant qu'entrées analogiques.

Regardez la description du registre 19-2 dans la Fiche technique PIC18F4685 .

ADCON1 comes out of reset as 0x00. To set all the analog pins to digital I/O, PCFG3:0 need to be set to 1.

ADCON1bits.PCFG = 0x0F;
0
ajouté
Merci ... Je vais vérifier cela. Cependant, je pense que cela pourrait en fait être un problème matériel ... un mauvais joint de soudure. Aller à re-flux et également vérifier le reg ADCON1 pour la configuration correcte.
ajouté l'auteur Chef Flambe, source
Vous pouvez également définir le bit de configuration PBADEN pour éviter d'avoir à définir ADCON1.
ajouté l'auteur ajs410, source
Je voudrais answear avec cela à @Adam car c'est une erreur commune :) +1 pour vous.
ajouté l'auteur Diego Garcia, source