Condivisione lcd

Salve ragazzi, credo che quello che sto per chiedere è al quanto strano, tenetevi forte!
Sto facendo una scheda con a bordo due atmega8 in standalone e non sono collegati tra di loro in nessun modo in quanto dovranno svolgere funzioni del tutto indipendenti, sono in realtà due circuiti separati che condividono la stessa scheda; per entrambi è previsto l'uso di un display lcd ma visto che non staranno mai accesi contemporaneamente chiedo se c'è qualche modo di poter usare solo un lcd e "switcharlo" sul circuito attivo. Il display lo vorrei collegare con uno shift register in modo da usare solo 3 pin degli atmega (e qui non ho problemi), l'alimentazione dei circuiti potrei anche farla comune e commutarla con relè o quant'altro... rimane il problema di poter collegare lo shift register su entrambi gli atmega, ovviamente un circuito pe volta senza fastidi!
Si potrà fare?
Saluti

ti chiedo una cosa, io ho messo su uno standalone un display 16*2, di norma il display non mi servira' quasi mai quindi e' su una strip femmina, pero' se lo tolgo e lo rimetto a circuito funzionante il display non "parte" e servirebbe un reset

c'e' un reset solo per i display?

se la risposta e' si, allora si puo' fare anche da te con 2 arduino, ma se ti funziona come a me quando lo switchi dall'at8uno all'at8due temo non ti vada, tu hai ma provato a togliere e ricollegare a circuito attivo?

Bella domanda... non ho mai provato a toglierlo e a rimetterlo quindi non saprei.
Comunque credo che se tu lo scolleghi fisicamente è normale che poi non funziona, in qualche modo ti perdi l'inizializzazione del display; nel mio caso invece potrei lasciare la logica sempre alimentata e provare con un lcd.clear oppure un lcd.init, ma non sono certo su come si comporterà il display
Comunque è una bella prova da sperimentare!

Vedo questa soluzione:
Uno dei due atmega8 fa da master e riceve dal altro tramite I2C i dati da visualizzare e li visualizza oppre negli altri momenti visualizza i suoi dati.

d' altra parte spiegaci con quale logica é attivo uno o l' altro atmega8?

Ciao Uwe

Ciao Uwe, il circuito ancora è in via di progettazione, non ho nemmeno steso uno schema.
Premesso che non ho mai studiato elettronica a scuola quindi potrei dire delle enormi stupidaggini... potrei usare un pulsante per commutare le prime due uscite di un cd4017 per azionare un relè dove sul suo contatto comune avrà 5V; a prima accensione il relè sarà a riposo e aziona il primo circuito mentre premendo il pulsante il cd4017 porterà a livello alto la seconda uscita dove c'è la bobina del relè commutando i 5V sull'altro circuito. Ovviamente ad un'altra pressione del pulsante (terza uscita del cd4017) la porterò al reset del contatore in modo da ritrovarmi alla situazione di partenza. Il display lcd lo alimento sin dall'inizio visto che deve stare comunque attivo... cercavo un modo per separare i tre pin degli atmega che vanno allo shift register.
Forse dei cd4066 (4 interruttori bilaterali) potrebbero funzionare ma non saprei se è fattibile come opzione.
Spero di non aver fatto collassare nessuno se ho ucciso l'elettronica con quanto detto sopra :slight_smile:

mi si e' cancellato il mess scritto asll'invio....

chiedevo, un hex buffer non invertente tipo i 4503

http://www.bucek.name/pdf/4503.pdf

si potrebbe usare? con 2 integrati abiliti le uscite di uno o dell'altro, e' fattibile?

Potresti provare (se ho capito bene il tuo problema) con delle porte 3-state

Pelletta:
ma visto che non staranno mai accesi contemporaneamente chiedo se c'è qualche modo di poter usare solo un lcd e "switcharlo" sul circuito attivo.

La soluzione è semplicissima, colleghi i pin del display a tutti e due gli ATmega e su quello che non lo usa tieni i pin settati come input, magari prevedi un pin di contatto tra i due ATmega per comunicare quali dei due sta utilizzando il display onde evitare corti indesiderati.
In pratica avrai un ATmega "master" che utilizza un pin in output, con pull up esterna da 22k, per comunicare se vuole usare il display.
Se l'ATmega master è acceso e deve utilizzare il display porta a 0 questo pin che viene letto dallo "slave", se quest'ultimo lo vede a 1 logico (se l'altro ATmega è in sleep o senza alimentazione ci pensa la pull up) sa che può utilizzare il display e setti i vari pin con output, se lo vede a 0 logico sa che il display viene utilizzato dall'altro ATmega e setti i vari pin come input.

Allora Tu hai i ATmega che fanno le cose loro e con un pulsante vuoi scegliere se visualizzare dati del primo o del secondo.

Ma per forza deve essere che i 2 Atmega sono indipendenti al 100% ?

Ciao Uwe

astrobeed:

Pelletta:
ma visto che non staranno mai accesi contemporaneamente chiedo se c'è qualche modo di poter usare solo un lcd e "switcharlo" sul circuito attivo.

La soluzione è semplicissima, colleghi i pin del display a tutti e due gli ATmega e su quello che non lo usa tieni i pin settati come input, magari prevedi un pin di contatto tra i due ATmega per comunicare quali dei due sta utilizzando il display onde evitare corti indesiderati.
In pratica avrai un ATmega "master" che utilizza un pin in output, con pull up esterna da 22k, per comunicare se vuole usare il display.
Se l'ATmega master è acceso e deve utilizzare il display porta a 0 questo pin che viene letto dallo "slave", se quest'ultimo lo vede a 1 logico (se l'altro ATmega è in sleep o senza alimentazione ci pensa la pull up) sa che può utilizzare il display e setti i vari pin con output, se lo vede a 0 logico sa che il display viene utilizzato dall'altro ATmega e setti i vari pin come input.

Se metti una resistenza da 1kOhm tra le uscite del Atmega e il display anche per errore un stato di uscita di tutti due in contemporanea non li rompe.
Ciao Uwe

uwefed:
Se metti una resistenza da 1kOhm tra le uscite del Atmega e il display anche per errore un stato di uscita di tutti due in contemporanea non li rompe.
Ciao Uwe

Si, ottimo suggerimento, mettere R da 560 ohm - 1k su tutti i pin che vanno verso il display non crea nessun problema ai segnali, però salva da eventuali errori di commutazione.

In questo modo deve però creare un dialogo tra i due micro, cosa che mi pare non voglia fare; l'idea dei tristate non sarebbe male. Mettiamo che sta usando 8 pin in tutto, sia da un micro che dall'altro, verso l'LCD; ogni pin va sul proprio tristate, ed i gate dei tristate dello stesso micro vanno collegati tutti assieme e pilotati da un ulteriore pin del micro, che starà su high per tutto il tempo che il micro è attivo; a farla esagerata potrebbe mettere un flip-flop per pilotare con certezza un SOLO gruppo di tristate e sarebbe a posto.
Potrebbero esserci controindicazioni sui segnali?

menniti:
In questo modo deve però creare un dialogo tra i due micro, cosa che mi pare non voglia fare; l'idea dei tristate non sarebbe male. Mettiamo che sta usando 8 pin in tutto, sia da un micro che dall'altro, verso l'LCD; ogni pin va sul proprio tristate, ed i gate dei tristate dello stesso micro vanno collegati tutti assieme e pilotati da un ulteriore pin del micro, che starà su high per tutto il tempo che il micro è attivo; a farla esagerata potrebbe mettere un flip-flop per pilotare con certezza un SOLO gruppo di tristate e sarebbe a posto.
Potrebbero esserci controindicazioni sui segnali?

E' esattamente quello che intendevo.
Con un flip-flop SR che ha come ingressi i pin dei micro (visto che dice che non saranno mai attivi contemporaneamente, non si verifichera' mai S=1 R=1). Quando si mette a SET l'LCD e' di un micro, quando va a RESET e' dell'altro. L'uscita del SR pilota l'enable delle 3state. Spero di essere stato d'aiuto.

Mette un J-K e risolve ogni cosa, in caso di contemporanea attivazione, per errore, comunque solo uno dei due gruppi sarà attivo.

se collega semplicemente entrambe le uscite dei due micro al display e poi fisicamente ne alementa uno o l'altro ? cioe' con un interruttore alimenta o il primo o il secondo, che problemi ci sarebbero ? il pin di un micro senza alimantazione come si comporta ?

non saprei, comunque riceverebbe, seppur tramite le R di UWE, delle tensioni da spento, non so se gli faranno bene :cold_sweat: e se per caso li accende entrambi sull'LCD avrebbe lo schifio, non le vedo eleganti come soluzioni.

infatti alla base di questa connessione brutale ci deve essere un deviatore che non permette di mandare l'alimentazione ad entrambi in nessuna condizione.

cmq mi chiedo: e' veramente necessaria la separazione ? fare tutto con un solo micro e' meglio, se e' un problema di ingressi vai di shift register

Testato:
infatti alla base di questa connessione brutale ci deve essere un deviatore che non permette di mandare l'alimentazione ad entrambi in nessuna condizione.

cmq mi chiedo: e' veramente necessaria la separazione ? fare tutto con un solo micro e' meglio, se e' un problema di ingressi vai di shift register

Forse dovresti riguardarti un attimo il suo post iniziale; Pelletta non è uno sprovveduto, è uno che ha dimostrato di saper fare cose coi czz, se dice che ha bisogno di due micro inutile stare ad insistere, visto che è l'unico punto fermo che mette; proprio per questo ho ripreso il suggerimento dei tri-state, visto che nel ragionamento di Astrobeed e UWE sarebbe stato necessario, in qualche modo, far dialogare i due micro tra loro, o quantomeno avrebbe dovuto implementare del software che forse non vuole.
Vuole provare ad usare un solo display e, vista la situazione dichiarata, è comprensibile; commutare un'alimentazione di due micro tramite un'aggeggio meccanico che più che rimbalzi spara fulmini forse non è una soluzione molto efficiente, da un punto di vista prettamente elettronico.

menniti:
proprio per questo ho ripreso il suggerimento dei tri-state, visto che nel ragionamento di Astrobeed e UWE sarebbe stato necessario, in qualche modo, far dialogare i due micro tra loro, o quantomeno avrebbe dovuto implementare del software che forse non vuole.

Non c'è nessun dialogo a parte un pin che dice chi vuole usare il display, niente protocolli e niente complicazioni strane.

Penso che la soluzione di astro sia la migliore, avevo pensato ad un demux ma richiederebbe solo altra elettronica in più