HCTL-2032 e porta parallela

Buongiorno a tutti, ho una bella grana da risolvere e non riesco a venirne a capo quindi mi appello a voi con la speranza che qualche buona anima possa darmi qualche dritta. Ho costruito una scheda con l'integrato HCTL-2032 della Agilent (Avago) che =E8 un encoder counter. Accetta in ingresso dei segnali provenienti da un encoder (fase A e fase B sfasati di 90=B0) e restituisce in uscita il conteggio dell'encoder sotto forma di 32 bit che possono essere letti sequenzialmente a pacchetti di 8 bit agendo sui due selettori SL1 e SL2. Inoltre c'=E8 un bit chiamato OE (Output Enable) che mette a disposizione sui famosi 32 bit il conteggio attuale. Quindi la sequenza di lettura =E8 :

1) OE=3D0 (rendo disponibile i 32 bit) 2) SL1=3D 1, SL2=3D1 3) leggo 8 bit 3) SL1=3D1, SL2=3D0 4) leggo 8 bit 5) ... n) OE=3D1 (metto in tristate le uscite D0..D7)

Ora veniamo al mio problema... Per andare a leggere gli 8 bit utilizzo la porta parallela in configurazione bidirezionale (EPP)

*** INGRESSI ***

- D0..D7 (pin 2,3,4,5,6,7,8,9 della parallela) [data register =3D BASE]

*** USCITE ***

- Strobe (pin 1 della parallela) [control register =3D BASE+2]: utilizzato come OE

- Linefeed (pin 14 della parallela) [control register =3D BASE+2]: utilizzato come SL1

- Initialize (pin 16 della parallela) [control register =3D BASE+2]: utilizzato come selezione dell'asse X/Y

- Select Printer (pin 17 della parallela) [control register =3D BASE+2]: utilizzato come SL2

il tutto funziona solo che a volte, con l'encoder fermo, vedo cambiare il conteggio dei 32bit. Analizzando meglio il problema vedo che uno (o pi=F9) dei 4 byte effettua una lettura errata. Ad esempio una lettura corretta =E8 :

0xFF, 0xFE, 0x34, 0xC4 che ogni tanto si tramuta in... 0xFF, 0xFE, 0x34, 0xFF
Reply to
Davide
Loading thread data ...

Le masse come stanno messe? Non è che la parallela ha delle uscite opendrain? la storia dei 2.5V sembrerebbe un conflitto.. oppure un output non pilotato (tipo l'OE e le selezioni).

Reply to
Marco

to

Ciao Marco, innanzitutto grazie per la pronta risposta. Allora le masse sono tutte collegate insieme, praticamente l'alimentatore del PC alimenta tutto, sia il 2032 che l'encoder. La parallela ha delle uscite opendrain? In teoria le uscite pin

1,14,16 e 17 dovrebbero essere open collector... come faccio a verificarlo? La storia del 2.5, si =E8 strano per=F2 non =E8 un output non piliotato perch=E8 sono proprio le 4 uscite che pilota il mio software... ho provato anche a staccare il circuito con il 2032 per verificare che le uscite vengono comandate correttamente ed in quel caso i livelli sono belli (0..5V) e di 2.5 non ne ho visti. Mentre quando attacco il 2032 a volte i segnali (che per la parallela sono uscite) SL1, SL2 vanno a 2,5 e proprio nel medesimo istante in cui un bit (uscita dell'integrato collegata all'ingresso della parallela D0..D7) va a 2,5V... Quindi anche qui non so se l'sucita dell'integrato "disturba" l'ingresso SL1 o SL2 o viceversa.
Reply to
Davide

innews: snipped-for-privacy@s20g2000yqh.googlegroups.com:

Quinde dite che mi basta mettere dei pull-up sulle mie 4 uscite? (pin

1, 14, 16 e 17 della parallela) Domani provo, per intanto grazie di nuovo per l'aiuto.
Reply to
Davide

Davide wrote in news: snipped-for-privacy@s20g2000yqh.googlegroups.com:

Open collector? Non mi risulta che la parallela standard abbia uscite open collector... le schede che sono ancora parzialmente "discrete" hanno il solito 244/245/374 come buffer da/verso il controller e i segnali (sugli altri onestamente non ricordo, ma sullo Strobe sono arcisicuro) sono i classici TTL 0-5V ...

Reply to
Axeman

A vedere qui sembrerebbe ci sia la possibilità che lo siano.

formatting link

Reply to
Marco

Ho inserito dei pull-up da 4K7 sulle uscite della parallela ma non =E8 cambiato molto. Vedo proprio il segnale (onda quadra) da me pilotata che ogni tanto va su bene a 5V ma poi cade a 2,5V. Questo segnale che "balla" =E8 SL1 o SL2, quindi mi compromette la lettura del byte restituito dal 2032 perch=E8 non vado pi=F9 a leggere il byte, ad esempio il terzo ma ne leggo un altro. In pratica =E8 quasi come se le uscite della paralella pin 14 (Line feed) e 17 (Select printer) che sono rispettivamente SL1 e SL2 vengono saltuariamente "tirate gi=F9" da qualcun altro / qualcos'altro. Altri suggerimenti? Ringrazio di nuovo anticipatamente.

Reply to
Davide

Sulle altre linee i segnali sono buoni come tensione? I pin SL1 e SL2 possono essere degli output lato avago? Altre puttanate sui vari pin dell'avago? Puttanate sw?

Reply to
Marco

Marco ha scritto:

La letteratura di cui dispongo è controversa al riguardo... in effetti nella EPP quelle uscite dovrebbero essere OC, anche se in parecchi schemi non ce n'è traccia.

Il fatto è che giusto tre giorni fa ho costruito per testare il sistema di home automation, un accrocchio collegato alla parallela EPP (era un monitor per bus CAN basato sul solito MCP2515) e il segnale di Strobe l'ho usato "brutalmente", senza problemi.

(e la parallela è una di quelle integrate sulla mainboard, di ultima generazione (anzi, PENultima... le ultime non ce l'hanno neanche più :-) ))

Reply to
Axeman

Sbattendo la testa sui segnali vedo che lo scherzetto dei 2.5 avviene esattamente (ma non sempre) nel momento in cui io vado ad abbassare il segnale di OE. Quando abbasso l'OE il 2032 (sul successivo fronte di discesa del clock) mi rende disponibile sul bus i famosi 32 bit che sono il conteggio dell'encoder. Gli altri segnali sono :

- X/Y: anche lui scende a 2.5

- SL1: idem

- SL2: idem (anche se pi=F9 raramente)

In teoria no! Ma a questo punto mi sorge proprio il dubbio che nel momento in cui abbasso OE e lui rende disponibile il conteggio sugli 8 bit... introduce dei disturbi proprio sui suoi ingressi SL1, SL2 e X/ Y.

In teoria no.

No, questo sono abbastanza sicuro perch=E8 se stacco la paralella dal circuitino, i segnali sono belli puliti.

Reply to
Davide

...mi si =E8 accesa una lampadina. (forse) Ma non potrebbe essere che l'integrato HCTL-2032 non ce la fa a pilotare le sue uscite, collegate ai pin D0..D7 della parallela, perch=E8 appunto queste sono "pulluppate" a 5V sulla motherboard ?????? ...e di conseguenza si rompe i maroni da solo sui suoi ingressi ? Perch=E8 facendo varie prove sembra quasi che il problema si presenta principalmente quando il 2032 dovrebbe presentare sugli 8 bit tanti (o tutti) bit a 0. Quindi deve forzarli tutti bassi mentre a vuoto sono tutti a LL1. Potrei provare a metterci in mezzo dei transistor o qualcosa del genere per non forzare le uscite dell'integrato. Potrebbe essere? Ovviamente ogni suggerimento o nota in merito =E8 ben accetto. Grazie, Davide

Reply to
Davide

provere non guasta.. ma più che pullup (che valore dovrebbe avere?) lato motherboard, non è che sei in output lato pc?

Reply to
Marco

Ho provato ad isolare (tramite 4 optoisolatori) le uscite della parallela, quindi i segnali :

- Strobe (pin 1 della parallela) utilizzato come OE

- Linefeed (pin 14 della parallela) utilizzato come SL1

- Initialize (pin 16 della parallela) utilizzato come selezione dell'asse X/Y

- Select Printer (pin 17 della parallela) utilizzato come SL2 ...in questo modo, anche se non ho ben chiaro il motivo, sembra funzionare. Leggendo le varie documentazioni trovate su internet sulla parallela non ho letto nulla di particolare sui suddetti segnali. I pin 1, 14,

16 e 17 sono uscite punto e basta, (anzi a dire il vero, in condizioni particolari si potrebbero utilizzare anche come ingresso ma non =E8 il mio caso) quindi non capisco il perch=E8 se li collego direttamente al 2032 mi appare quel problema dei 2.5V ( l'integrato assorbe praticamente nulla, da specifica al massimo arriva a 10uA) mentre se ci metto in mezzo un opto sembra che il problema non si ripresenti pi=F9. Considerazioni ? Grazie di nuovo, Davide.
Reply to
Davide

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.