-
.
Salve a tutti, volevo vedere se riesco a capire il perché di un comportamento strano di un'uscita Open Drain del PIC in oggetto.
Il contesto è il computer Z80 presentato da Nuova Elettronica a partire dal 1979, di cui sto facendo una replica compatta e leggermente migliorata.
Il PIC mi serve per collegare una tastiera AT/PS2 al posto della tastiera ASCII parallela originariamente prevista dal progetto, e questa funzione lavora correttamente.
Già che c'ero ho voluto usare la tastiera per dare un comando di Reset allo Z80 tramite una combinazione di tasti, e per l'uscita avevo scelto il pin RA4 della porta A, che a differenza di tutti gli altri offre un'uscita Open Drain così da poterla collegare all'elettrolitico del circuito di reset originale per scaricarlo.
Il circuito iniziale che avevo impostato era questo:
Il pulsante di reset è quello sul tastierino esadecimale.
Il circuito non funziona perché l'uscita RA4 resta forzata a zero anche se la progrmmo a 1
Facendo varie prove ho scoperto che se qualcosa forza a zero l'uscita, poi questa resta fissa a zero.
Infatti togliendo l'elettolitico funziona come mi aspettavo, cioè l'uscita resta flottante finché non la programmo a zero.
Però se premo il pulsante di reset del tastierino esadecimale poi l'uscita del PIC resta fissa a zero.
Facendo un'ulteriore prova ho isolato il PIC dal resto e sulla RA4 ci ho messo un led con resistenza verso il +5V
Se da tastiera premo i tasti per il reset, vedo il led regolarmente accendersi per un impulso e poi spegnersi di nuovo, ma se simulo il pulsante reset del tastierino esadecimale, o il condensatore elettrolitico scarico all'accensione, mettendo manualmente a massa il pin RA4 vedo che il led si accende e resta acceso anche quando tolgo il collegamento di massa.
Ora potrei anche aver sbagliato qualcosa nella programmazione quindi chiedo a chi conosce bene il PIC cosa dovrei eventualmente controllare. Posso dire che il parametro TRISA è a 0 quindi il pin è configurato come uscita e non come ingresso, e il CMCON l'ho messo a 7 per rendere tutti i pin della PortA digitali, disattivando le funzioni analogiche.
Nel datasheet del PIC ho letto un riquadro in cui si avvisa di un problema credo simile ma riferito al solo pin RA5/MCLR, che se viene collegato direttamente a massa, o se ci sono dei picchi negativi rispetto a VSS può verificarsi un "latchup", quindi consigliano di usare una resistenza da almeno 100 ohm in serie, ma questo è un altro pin e funziona solo come ingresso.
Per cercare di risolvere il problema ho sostituito la resistenza da 100 ohm (aumentata inutilmente per prova fino anche a 10 K) con un diodo collegato così:
Ciononostante il circuito non funziona ancora. A quanto pare il pin vuole una resistenza di pullup per funzionare, anche se mi sembra illogico, e così ho dovuto fare in questo modo:
Così funziona ma non ne capisco il motivo.
Io mi sarei aspettato che l'uscita Open Drain restasse flottante, permettendo così all'elettrolitico di caricarsi, e solo su comando andasse a zero.
Chi ci capisce qualcosa? :-). -
.
Hai provato così?
. -
.
Sì, come R16 ho provato valori fra 100 ohm e 10K, compreso 1K . -
.
Con 100 ohm quando RA4=TRUE circola il doppio della sink max e la capacità è oltre le specifiche di carico capacitivo.
Se abbassi a 20k la R17?
Curioso, dovrei avere un 16F628, appena ho un attimo faccio la prova.
Le porte OD le uso sui bus di comunicazione e non ho mai avuto problemi del genere. -
.
Mistero RISOLTO!
Ho provato con un po' di pic che hanno la porta OD come quella del tuo, ma non ho esattamente quello che stai usando tu.
L'ultimo che ho provato è un 16F877A che una simile configurazione di RA4
Ho realizzato questo circuito:
Il pic genera un clock 1" True 5" False e viene visualizzato dal led verde.
Con tutti i PIC si verifica quanto hai segnalato.
La cosa divertente è che il problema non è generato dal PIC, ma dall'aver usato una porta CMOS.
Se sostituisci la HCT con una LS il problema non si pone, se invece diminuisci C4 a 10uF funziona anche con la HCT pur con una R4 da 68k
Lo spieghi tu a Livio Orsini? Sono curioso di sapere cosa ne pensa
. -
.
Mistero...., capirai, solo voi due non siete al corrente che la serie HCT ha un proto-processore embedded, inserito per spiarci.
Casualmente col il Pic avete attivato la funzione di trasferimento dati, di cui non vi siete accorti in quanto la portante é su i 55,3GHz.
Erano i primi test di IA che hanno condotto sulla nostra pelle.
Stefano quanti cortocircuiti sono avvenuti sul tuo tavolaccio degli esperimenti?. -
.
"..quante interurbane
per dire "come stai?"
raccontare dei successi
e dei fischi non parlarne mai"
. -
."..quante interurbane
per dire "come stai?"
raccontare dei successi
e dei fischi non parlarne mai"
..bellissimo brano di Ron partorito dalla mente di Lucio Dalla...è lo stesso che scriveva
"vorrei entrare dentro i fili di una radio E volare sopra i tetti delle città.."
..almeno molti di noi ci provano ad entrare dentro i fili delle radio...poi ognuno libera la sua fantasia per volare!!. -
.
Mistero RISOLTO!
Lo spieghi tu a Livio Orsini? Sono curioso di sapere cosa ne pensa
Non ti sfugge niente :-)
Comunque grazie!
Non avrei immaginato dipendesse dalla porta HCT, anche perché nella prova del diodo fra PIC e condensatore non dovrebbe esserci la possibilità di portare RA4 a zero da parte del pulsante.
Alla fine penso metterò una LS, le HCT erano più per un discorso energetico :-)
Ma deve essere una LS originale d'epoca, sennò chissà quali nanodispositivi ci saranno dentro in quelle nuove.. -
.
Sono iscritto a quel forum dalla sua nascita ma ormai lo frequento poco per via della troppa e dilagante rissosità.. -
.
Ora però non posso smontare il circuito fino a che non ho capito...
...Perchè. -
.
Ok ho capito, la risposta è qui
Ho tolto R3, abbassato R4 a 27k: Funziona anche con la HCT e un condensatore da 33uF.
Con 47k non va nemmeno con 22uF
E' preferibile rimanere nell'intorno dei 18k.
Con 15k-22u l'impulso è di durata sufficientemente anche per uno Z80 a 2,5MHz
. -
.
Studio interessante grazie. Le LS hanno praticamente una specie di pullup già integrato, però quello che almeno per me è incomprensibile è perché il pin RA4 come uscita OD è sensibile a quello che succede fuori, come se fosse anche un ingresso. A me sembrerebbe logico che dovrebbe essere in due stati a scelta fra flottante o zero. Invece è fissa a zero se non c'è un "uno" fuori.
Forse dobbiamo scrivere alla Microchip :-)
Fra l'altro è così anche se non è collegata a niente. Se misuro la resistenza fra RA4 e massa a PIC spento vedo un circuito aperto, ma se accendo il PIC vedo circa 100 ohm anche se la programmo a 1 (dovendo in tal caso risultare flottante). -
.
100 ohm non è plausibile.
Se collegassi un led allora si dovrebbe accendere, ma invece ciò non accade; perché?
In ogni caso è tutto normale. E' la celeberrima "Conduzione di sotto soglia". -
.100 ohm non è plausibile.
Se collegassi un led allora si dovrebbe accendere, ma invece ciò non accade; perché?
Penso dipenda dal fatto che l'insieme led+resistenza sia in pratica come un pullup e quendi l'uscita si sblocca da zaro.
Comunque ho provato anche con il sistema di tenere il pin come ingresso finché non serve come uscita, e funziona anche così.CITAZIONEIn ogni caso è tutto normale. E' la celeberrima "Conduzione di sotto soglia"
Non conosco :-).