Newsgroup: it.hobby.elettronica.digitale
Titolo: Dubbio su segnali digitali - tra tensione e corrente.

Ciao a tutti.
Scusatemi se leggerete delle fesserie, ma sono proprio un autodidatta alla
frutta.
Inoltre il post è abbastanza lungo, ma siete la mia ultima possibilità prima
della camicia di forza! :)))
* Premessa
Ho un dubbio riguardo i segnali digitali.
So che un segnale digitale può essere active Low ed active High, e fin qui
non ci piove.
So che a ciascuno dei due corrispondono precisi valori di V ed I.
*Scenario
Un display per nokia 3310, pilotato via SPI, che funziona perfettamente con
un ATMega8 (AVR) e non vuole funzionare con un AT89C51SND1 (8051).
I sorgenti C per quest'ultimo li ho portati io stesso dalla versione AVR a
quella 8051.
Il BIN è stato simulato all'interno di Keil, e porte e registri contengono
ciò che devono contenere, nella giusta sequenza.
*Caratteristiche elettriche
ATMega8
OL 0.5 10mA
OH 2.2 -10mA
AT89C52SND1
OL 0.45 1.6mA
OH 2.6 -30uA
*Il dubbio.
I livelli di tensione sono compatibili con quelli accettati dal display,
rientrando nei valori accettati come High e Low.
Possibile che la corrente giochi un ruolo determinante per il corretto
riconoscimento del segnale digitale? *__*
Ho visto su uno schema per un AT89C51 che lo stesso display veniva
interfacciato con delle resistenze di pull-up su 3v3 su ciascuna linea di
comunicazione display-micro.
Possibile che debba ricorrere alle pull-up per comunicare correttamente con
il display?
Anche se riduco al minimo la lunghezza dei fili?
Scusatemi se mi sono dilungato, ma è proprio necessario che mi chiarisca
questi dubbi.
Ringrazio anticipatamente.
Gabriele.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Anche se riduco al minimo la lunghezza dei fili?
Non credo che sia un problema di livelli di tensione, nel senso che non
dovrebbe esserci una grande differenza tra i due microcontrollori a livello
pratico, quelli sono valori di tensione minimi/massimi garantiti in
situazioni di lavoro davvero brutti... cmq non ho ben capito, stai
alimentando sia il microcontrollore che l'lcd a 3.3V?
Piuttosto, mi preoccuperei di più della velocità di trasmissione: usi una
SPI hardware o software? l'hai temporizzata opportunamente? I quarzi dei due
microcontrollori sono diversi?
--
...:::Zmaster:::...
zmaster.adsl[ANTISPAMSYSTEM]@
tin.it
www.zmaster.tk

 microcontrollori sono diversi?
ATMega8 4Mhz interno.
AT89C51SND 16Mhz esterno.
Al di là di questo, il micro 8051 mi genera un interrupt SPI, come mi
aspetto, ma non va a mettere ciò che desidero in SPSTAT! :P
Vorrei un gratificante "shift complete" in luogo dell'errore che mi torna.
L'errore a dire il vero è bello strano, in quanto vorrebbe notificarmi un
segnale inaspettato sul pin SS, che ho opportunamente inizializzato come
I/O, in quanto il micro è l'unico master del sistema.
Allora ho provato a non considerare questo tipo di interrupt, continuando ad
attendere lo "shift complete", ma potrei aspettare all'infinito prima di
vedere anche un solo pixel acceso per caso. :-D
Più che altro stavo vedendo che le saldature sui pin del display sono fatte
veramente male, e forse a frequenze più alte c'è parassitanza con la pala!!
:)))
Oggi pomeriggio sono in ferie e ne approfitto per rifare le saldature come
mostra il sito dello Yampp, e cioè rivoltando i pin del display in modo da
mostrare le scanalature interne.
Attualmente ho saldato i fili esternamente, sulla lunghezza dei pin.
Proviamo... ti faccio sapere. ;)
Grazie.
Gabriele.


 vedere anche un solo pixel acceso per caso. :-D
Premettendo che non ho mai usato un C51, leggendo il datasheet direi che
dovresti verificare queste cose:
- bit MSTR = 1 in SPCON
- bit SSDIS = 1 in SPCON
- bit SPR1 e SPR2 = 1, SPR0 = 0 in SPCON (questo fa si che la trasmissione
vada più lentamente possibile)
Quando ho problemi del genre io faccio tutto molto lentamente, ad esempio
butto fuori il dato e aspetto 100ms così sono sicuro che il micro abbia
avuto il tmepo di shiftarlo fuori e la periferica di eseguire l'operazione.


 avuto il tmepo di shiftarlo fuori e la periferica di eseguire
l'operazione.
Purtroppo ho gestito tutto via hardware, e sono riuscito a farlo
funzionare!! :)
Cioè a fargli completare un data shift attraverso la porta MOSI.
Per meglio dire, ho capito il problema.
Lo schema che funziona per l'AVR (preso da microsyl.qualcosa) che ho
replicato pin per pin sul mio sistema, utilizza il segnale MISO per gestire
il reset del display! :)
Con l'AVR si può fare in concomitanza alla gestione HW dello SPI, con l'8051
no!
Ho scoperto che detto pin oscilla continuamente da 0 a 1, il che mi comporta
4-5 reset al secondo del display!! ^___^
Lo so, sono un pollo! :P
Adesso saldo il RST del display su un'altra porta di I/O e vediamo che fa.
:P
Grazie per il supporto. ;)
Gabriele.

 ha scritto nel messaggio
news:151Z39Z223Z27Y1...@usenet.libero.it...


 4-5 reset al secondo del display!! ^___^
Adesso ho capito il problema... ehh si, evidentemente le due architetture
diverse non ti permettono di fare queste cose... cmq puoi collegarti
sull'SS, da quanto ho letto sul datasheet settando l'apposito bit SSDIS si
può utilizzare come I/O.


 può utilizzare come I/O.
Si si, quello l'ho già destinato al CE del display. :)
Però il problema era che mandavo comandi senza attendere l'inizializzazione,
e mi si incasinava tutto. :P
Ad ogni modo, teniamoci in contatto!! :)
Bye.
Gabriele.

Ehm... forse ho usato impropriamente il termine "adattatore". :P
In realtà si tratta di un piccolo pcb su cui ho saldato il chip. Come potrei
definirlo?
Magari sapessi realizzare in casa quelli a cui ti riferivi tu.... :)


A questo punto dato che il problema è risolto credo sia più opportuno
continuare la nostra conversazione in privato.
se mi mandi una mail ne parlerei volentieri (non hai reso publico il tuo
indirizzo).
