Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Serial RAM capricciosa...

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[1] Serial RAM capricciosa...

Messaggioda Foto Utentericello9 » 9 giu 2013, 15:45

Ciao a tutti, è ormai da giorni che sto cercando di far comunicare il modulo Sram della microchip siglato 23CL1024 con il PIC18f45k20.
Leggendo le application note AN1287e AN1484 ho preso spunto sia per il codice che per i collegamenti fra i due dispositivi.
Nella fase successiova ho settato tutti i registri del mo PIC per abilitare la comunicazione SPI.
Testando con l'oscilloscopio la comunizaione mi sono accorto che il modulo sram, una volta interrogato, mi risponde ma il segnale non è preciso; sembrano sbalgiati i livelli di tensione.
Vi riporto una foto della misura così riesco a farmi capire:
NewFile0.jpg
SRAM --> PIC
NewFile0.jpg (55.28 KiB) Osservato 4430 volte

mentre la comunicazione dal PIC al modulo Sram sembra corretta:
NewFile1.jpg
PIC --> SRAM
NewFile1.jpg (66.71 KiB) Osservato 4430 volte


Avete qualche suggerimento.

Grazie
Marcello
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

0
voti

[2] Re: Serial RAM capricciosa...

Messaggioda Foto UtenteCandy » 9 giu 2013, 15:50

Dalla descrizione del problema, non si capisce nulla.
Dalla prima immagine postata, sembra che un dispositivo tenti di comunicare, mentre un altro sta forzando un livello logico anomalo.
Quanti nodi ci sono sul BUS? Quando il master attende la risposta, porta la linea dati in lettura?
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

0
voti

[3] Re: Serial RAM capricciosa...

Messaggioda Foto Utentemarioursino » 9 giu 2013, 15:51

Pare che lo stadio d'uscita della ram abbia bisogno di un pull-down in fase di comunicazione. Hai letto bene il datasheet?

edit: in effetti quello non è proprio un comportamento da alta impedenza. Non ha molto senso, il ds cosa dice?
Avatar utente
Foto Utentemarioursino
5.687 3 9 13
G.Master EY
G.Master EY
 
Messaggi: 1598
Iscritto il: 5 dic 2009, 4:32

1
voti

[4] Re: Serial RAM capricciosa...

Messaggioda Foto UtenteTardoFreak » 9 giu 2013, 15:56

Serve uno schema elettrico.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[5] Re: Serial RAM capricciosa...

Messaggioda Foto Utentericello9 » 9 giu 2013, 22:11

Quanti nodi ci sono sul BUS? Quando il master attende la risposta, porta la linea dati in lettura?

Il bus è composta dal master (il PIC) e un solo modulo slave (l'SRam).
Questo è lo schema:



Preso dal datasheet del modulo ram:

OK1.jpg
OK1.jpg (71.86 KiB) Osservato 4397 volte


Quando il master attende la risposta, porta la linea dati in lettura?


Da quello che ho capito leggendo il datasheet la porta seriale del micro denominata SPI è sempre in fase di lettura; una volte abilitato il modulo SPI nel micro e impostato i relativi registri tristato il pin rimane sempre abilitato alla lettura.

17.3.3 ENABLING SPI I/O
To enable the serial port, SSP Enable bit, SSPEN of
the SSPCON1 register, must be set. To reset or reconfigure
SPI mode, clear the SSPEN bit, reinitialize the
SSPCON registers and then set the SSPEN bit. This
configures the SDI, SDO, SCK and SS pins as serial
port pins. For the pins to behave as the serial port function,
some must have their data direction bits (in the
TRIS register) appropriately programmed as follows:
• SDI is automatically controlled by the SPI module
• SDO must have corresponding TRIS bit cleared
• SCK (Master mode) must have corresponding
TRIS bit cleared
• SCK (Slave mode) must have corresponding
TRIS bit set
• SS must have corresponding TRIS bit set
Any serial port function that is not desired may be
overridden by programming the corresponding data
direction (TRIS) register to the opposite value.



Pare che lo stadio d'uscita della ram abbia bisogno di un pull-down in fase di comunicazione. Hai letto bene il datasheet?

edit: in effetti quello non è proprio un comportamento da alta impedenza. Non ha molto senso, il ds cosa dice?


Il datasheet non riporta nessuna resistenza di pull-down sulle linee di comunicazione.
Avrei in mente l'ennesimo tentativo ma correggetemi se dico cavolate.
Posso provare a scollegare la linea in uscita dalla ram dal PIC,
e collegarci una resistenza di pull-down per vedere se la misura con l'oscilloscopio rientra nella norma.

Grazie per l'aiuto.
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

0
voti

[6] Re: Serial RAM capricciosa...

Messaggioda Foto UtenteTardoFreak » 9 giu 2013, 22:18

Uhm :-k
Sei sicuro che il pin d' ingresso dati (del PIC) sia effettivamente configurato come un ingresso?
A giudicare dal segnale da te postato sembra proprio che la RAM cerchi di rispondere ma "faccia a testate" con un pin che, invece di essere un ingresso, è un' uscita.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[7] Re: Serial RAM capricciosa...

Messaggioda Foto Utentericello9 » 9 giu 2013, 22:35

Sei sicuro che il pin d' ingresso dati (del PIC) sia effettivamente configurato come un ingresso?


IL pin con la funzione SDI è il numero 23 che corrisponde alla porta RC4.

Senza titolo-1.jpg
Senza titolo-1.jpg (153.86 KiB) Osservato 4388 volte


e l'impostazione che ho usato per definire il pin come ingresso è:
Codice: Seleziona tutto
 
   LATB = 0x00;
   TRISB = 0b00000000;

   LATC = 0x00;
   TRISC = 0b11010000;

   Init_SPI();


Sembra corretta!
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13


Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 57 ospiti