PIC 18f și PORT-B

Încercarea de a obține o tastatură 4x4 care să lucreze cu 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...

Am incercat sa depanam folosind PicKit3 dar pare ca foloseste RB7 si blocheaza lucrurile atunci cand un buton pentru acel rand este impins. Desigur, asta îmi spune că semnalele trebuie să treacă, până la un punct.

Mai este ceva în special necesar să configurez pentru PORT B?

Ca întotdeauna ... ajutorul tău este foarte apreciat.

0
Vă mulțumim tuturor pentru ideile suplimentare despre posibilele probleme de configurare pe care să le aveți în vedere. Am reușit să o execut. Ya, nu pot folosi PicKit3 în timpul testelor de depanare și una dintre articulațiile mele lipite a fost rea. Esti cel mai bun forum! Întotdeauna obțineți un răspuns rapid prietenos!
adăugat autor Chef Flambe, sursa
Care sunt acele intrări și care sunt ieșirile? Presupunând că RB4-7 sunt intrări ...
adăugat autor ajs410, sursa

3 răspunsuri

Puteți afișa codul dvs. pentru setarea registrelor tristate (TRISB) și cum citiți. Ați verificat tensiunile de la pinii de intrare cu un multimetru digital (DMM) înainte și în timpul apăsării butonului? Sunt 10 dolari și merită.

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

AD1PCFG = 0xFFFF

înainte de citirile de intrare digitale va funcționa. Ar putea fi aceleași pe cip.

Puteți să ne dați numărul modelului exact al cipului dvs.?

0
adăugat

De vreme ce site-ul EE te-a închis atât de brutal înainte să poți obține un răspuns, m-am gândit că voi veni să răspund la întrebarea ta.

Verificați tabelul 10-3 la pagina 135, listează toate posibilitățile pinilor portului B. Rețineți că RB6 și RB7 sunt și acei de depanare, deci nu le-aș folosi.

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
adăugat
Bun punct despre registrele LATx.
adăugat autor Adam Casey, sursa

Nu sunteți sigur de schematică exactă (o schiță ar putea ajuta), dar o eroare comună în PIC GPIO nu este stabilirea registrelor ADC la intrările digitale. Ele vin din reset ca intrări analogice.

Consultați descrierea înregistrării 19-2 din fișa de date 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
adăugat
Mulțumesc ... Voi verifica asta. Totuși, mă gândesc că ar putea fi de fapt o chestiune de hardware ... îmbinare slabă. Mergând la re-curgere și, de asemenea, verificați ADCON1 reg pentru set-up adecvat.
adăugat autor Chef Flambe, sursa
De asemenea, puteți seta bitul de configurare PBADEN pentru a evita să setați ADCON1.
adăugat autor ajs410, sursa
Aș răspunde cu asta la @Adam, deoarece este o greșeală obișnuită :) pentru tine.
adăugat autor Diego Garcia, sursa