Autor Tema: 25LC256 y 30f4013. No hay comunicacion -> Solucionado  (Leído 2771 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado irukza

  • PIC12
  • **
  • Mensajes: 87
25LC256 y 30f4013. No hay comunicacion -> Solucionado
« en: 24 de Junio de 2011, 20:21:38 »
Hola a todos

Hace dias que estoy tratando de poner en marcha el modulo spi de este bicho para comunicarme con una memoria 25LC256, uso C30.
Para manejar la memoria transcribi una libreria que uso cotidianamente en C18 sin problemas, pero me parece que el problema esta en la configuracion del modulo SPI.
Lo que noto es que aunque ponga a masa la entrada SPI siempre leo "unos", y no veo nada en el buffer de recepcion. Cuando transmito puedo ver que los valores van al buffer y luego salen, al menos veo actividad en el osciloscopio, igual para el ck.
bueno pongo algo del codigo a ver si ahi esta el problema, si necesitan algo mas solo pidan.

fuses
/* Device configuration register macros for building the hex file */
_FOSC(CSW_FSCM_OFF & HS);          /* XT with 8xPLL oscillator, Failsafe clock off */
_FWDT(WDT_OFF);                         /* Watchdog timer disabled */
_FBORPOR(PBOR_OFF & MCLR_EN);           /* Brown-out reset disabled, MCLR reset enabled */
_FGS(CODE_PROT_OFF);                    /* Code protect disabled */

// ********** Definicion de pines de control ******************
#define   SPI_trisCS   TRISFbits.TRISF4            
#define   SPI_CS      PORTFbits.RF4               
#define   SPI_trisDO   TRISFbits.TRISF3
#define   SPI_trisDI   TRISFbits.TRISF2
#define   SPI_trisCK   TRISFbits.TRISF6

/*  25Cxxx EEPROM instruction set */
#define   SPI_WREN          0x0006 //6              // write enable latch
#define   SPI_WRDI          0x0004 //4              // reset the write enable latch
#define   SPI_RDSR          0x0005 //5             // read status register
#define   SPI_WRSR          0x0001 //1             // write status register
#define   SPI_READ          0x0003 //3             // read data from memory
#define   SPI_WRITE         0x0002 //2             // write data to memory

Inicializacion del SPI desde el main

SPI_trisCS=0;         // CS -> Salida            
SPI_trisDO=0;         // SDO -> Salida
SPI_trisDI=1;         // SDI -> Entrada
SPI_trisCK=0;         // SCK -> Salida
SPI_CS = 1;

OpenSPI1(FRAME_ENABLE_OFF & ENABLE_SDO_PIN & SPI_MODE16_OFF& SPI_SMP_OFF & SPI_CKE_ON & CLK_POL_ACTIVE_HIGH & MASTER_ENABLE_ON & SEC_PRESCAL_8_1 & PRI_PRESCAL_16_1, SPI_ENABLE & SPI_IDLE_STOP & SPI_RX_OVFLOW_CLR);

Si les parece que esto esta bien sigo subiendo codigo.
Ya estoy tocando por tocar, a ver si anda...
Gracias por la ayuda
« Última modificación: 27 de Junio de 2011, 19:45:31 por irukza »

Desconectado irukza

  • PIC12
  • **
  • Mensajes: 87
Re: 25LC256 y 30f4013. No hay comunicacion -> Solucionado
« Respuesta #1 en: 27 de Junio de 2011, 19:48:32 »
Ya anduvo  :-/

Un bit mal configurado  :oops: y una memoria defectuosa  :5]

Si alguien necesita el codigo me avisa.

Desconectado irukza

  • PIC12
  • **
  • Mensajes: 87
Re: 25LC256 y 30f4013. No hay comunicacion -> Solucionado
« Respuesta #2 en: 27 de Septiembre de 2011, 19:56:13 »
Subo el ejemplo para los que lo pidieron por privado.
Suerte