Vai al contenuto
PLC Forum


Pic16f627 - Dubbio Banale


matteonogare

Messaggi consigliati

Scusate la domandona banale ma ho un dubbio momentaneo...

poniamo di avere configurato i pin 0-3 di portB come INGRESSI

e 4-7 di portB come USCITE

cosa succede se faccio:

movlw 255

movwf PORTB

?

Non ricordo se l'azione ha effetto solo sui pin settati come uscite ed

è indolore per gli altri o se effettivamente

vengono variati anche i bit impostati come ingresso.

Grazie mille per qualsiasi risposta.

Link al commento
Condividi su altri siti


Vanno a 1 solo i pin settati come uscita. Quelli settati come ingressi ovviamente restano ingressi, ma i latch interni memorizzano comunque gli 1 rimanenti, e nel caso che gli ingressi vengano subito dopo trasformati in uscite questi sarebbero i valori che assumerebbero le nuove uscite.

Si usa spesso precaricare i bit nei latch interni prima di convertire gli ingressi in uscite proprio per evitare glitch nei livelli.

ciao Claudio F

Link al commento
Condividi su altri siti

Grazie per la risposta:

quindi supponendo di avere:

Rb0-rb3 come ingressi con valori degli ingressi (imposti dall'esterno) 1,1,1,1

rb4-rb7 come uscite

al termine delle seguenti istruzioni:

movlw b'(1010)(0000)'

movwf PORTB

...

movf PORTB,0

il valore assunto da W è il seguente:(1010)(1111)

uscite-ingressi

Quindi per risparmiare in istruzioni e velocità si può

imporre il valore di tutta la portaB anche se parte di questa è settata come ingresso

senza influenzare il valore degli ingressi imposto dall'esterno.

Corretto?

Altra domandina:

qual'è l'utilità dei pull-up disponibili sulla portaB?

Link al commento
Condividi su altri siti

quindi se non erro...

supponendo di avere

RB0-RB3 -> INGRESSI forzati dall'esterno ai valori es. 1010

RB4-RB7 -> USCITE

le seguenti istruzioni:

movlw b'10110000'

movwf PORTB

movf PORTB

impostano il valore di W a :1011 1010

ovvero una scrittura di TUTTO il registro PORTB non influenza

la successiva lettura di quei pin che sono impostati come INGRESSI,

in quanto tra il latch delle uscite e il latch degli ingressi è interposto un

buffer 3-state pilotato dal registro TRISB.

Corretto?

Altra domandina:

l'utilità dei pull-up attivabili su PORTBin un PIC 16F62x?

Link al commento
Condividi su altri siti

Continuo con le domande da principiante ma mentre con il 16f84

non ho mai avuto problemi il 16f627 mi da qualche problema

(premetto che mi sono letto il DS, errata compresa)

- innanzitutto chiedo conferma delle mia ultima considerazione

(mi scuso per il doppio invio ma per un disguido di rete pensavo

di aver perso il mio primo invio).

- sul 18f627 avevo la seguente sequenza di istruzioni

bsf PORTA,2

mainloop

delay500ms

bcf PORTA,3

delay500ms

bsf PORTA,3

goto mainloop

RISULTATO

il segnale sull'uscita 3 varia correttamente

ma il segnale sull'uscita 2 è inchiodato a 0

Ho quindi testato la funzionalità dell'uscita 2

con il seguente codice:

mainloop

delay500ms

bcf PORTA,2

bcf PORTA,3

delay500ms

bsf PORTA,2

bsf PORTA,3

goto mainloop

RISULTATO

l'uscita 2 varia correttamente ma ora l'uscita 3 è inchiodata a 0!

Il pic è da buttare o c'è qualche altro motivo?

Ringrazio per qualsiasi risposta.

Matteo

Link al commento
Condividi su altri siti

Quindi per risparmiare in istruzioni e velocità si può

imporre il valore di tutta la portaB anche se parte di questa è settata come ingresso

senza influenzare il valore degli ingressi imposto dall'esterno.

ovvero una scrittura di TUTTO il registro PORTB non influenza

la successiva lettura di quei pin che sono impostati come INGRESSI,

in quanto tra il latch delle uscite e il latch degli ingressi è interposto un

buffer 3-state pilotato dal registro TRISB

Link al commento
Condividi su altri siti

ho trovato l'errore.

avevo inserito l'istruzione per disabilitare i comparatori...

ma non avevo selezionato il banco di memoria giusto

e quindi non andavo a scrivere su CMCON.

Adesso funziona tutto.

Grazie e ciao.

Teo

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...