Autor Tema: Como programar en C18 el puerto SPI ??  (Leído 6696 veces)

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

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Como programar en C18 el puerto SPI ??
« en: 04 de Abril de 2011, 16:23:46 »
Para los entendidos de C18 (yo hago mis primeros pinitos en este compilador), hay alguna forma que sea la mas correcta para usar el SPI en este compilador??
Existe alguna librería??
Si es así donde esta y como es la forma de usarla ??
O tengo que escribir mi propia librería ??

Disculpen la ametralladora de preguntas.
Estoy mal acostumbrado por CCS, je..je.. :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como programar en C18 el puerto SPI ??
« Respuesta #1 en: 04 de Abril de 2011, 21:02:40 »
Hola!

Para utilizar el módulo dedicado a SPI existe librería, <spi.h> la cual tiene funciones para configurar y trabajar con el módulo. Información de como se usa en C:\MCC18\doc\periph-lib, el spi.h en C:\MCC18\h, y los archivos fuente en C:\MCC18\src\pmc_common\SPI

Saludos!

No contesto mensajes privados, las consultas en el foro

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Como programar en C18 el puerto SPI ??
« Respuesta #2 en: 04 de Abril de 2011, 21:41:41 »
Muchisimas gracias por la info, Suky !!
Ya te debo varias.
Sabes si habra un ejemplo para practicarlo en un PIC18F ??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como programar en C18 el puerto SPI ??
« Respuesta #3 en: 04 de Abril de 2011, 23:22:45 »
Muchisimas gracias por la info, Suky !!
Ya te debo varias.
Sabes si habra un ejemplo para practicarlo en un PIC18F ??

Mmm... En la ayuda hay un ejemplito... Pero es realmente sencillo, solo hay que seleccionar la velocidad adecuada y el modo que soporta el dispositivo.

Por ejemplo para una memoria Ramtron trabajé de la siguiente manera:

Código: C
  1. CloseSPI();
  2. OpenSPI(SPI_FOSC_4, MODE_11, SMPMID);

Código: C
  1. void vWriteSingleMemoryFM25H20(UINT32 Address,UINT8 Data){
  2.    
  3.     PIN_CS_MEM_FM25H20A=0;
  4.     WriteSPI(MEMORY_SPI_ENABLE_W);
  5.     PIN_CS_MEM_FM25H20A=1;
  6.     Nop();
  7.     PIN_CS_MEM_FM25H20A=0;
  8.     WriteSPI(MEMORY_SPI_WRITE);
  9.     WriteSPI((*((UINT8 *)&Address+2))&0x3);
  10.     WriteSPI(*((UINT8 *)&Address+1));
  11.     WriteSPI(Address);
  12.     WriteSPI(Data);
  13.     PIN_CS_MEM_FM25H20A=1;  
  14. }
  15.  
  16. UINT8 ui8ReadSingleMemoryFM25H20(UINT32 Address){
  17.     UINT8 DataRead;
  18.    
  19.     PIN_CS_MEM_FM25H20A=0;
  20.     WriteSPI(MEMORY_SPI_READ);
  21.     WriteSPI((*((UINT8 *)&Address+2))&0x3);
  22.     WriteSPI(*((UINT8 *)&Address+1));
  23.     WriteSPI(Address);
  24.     DataRead=ReadSPI();
  25.     PIN_CS_MEM_FM25H20A=1;
  26.  
  27.     return(DataRead);
  28. }


Saludos!

No contesto mensajes privados, las consultas en el foro

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Como programar en C18 el puerto SPI ??
« Respuesta #4 en: 04 de Abril de 2011, 23:38:51 »
Gracias, muy ilustrativo el ejemplo, especialmente sabiendo que te funciona.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado irukza

  • PIC12
  • **
  • Mensajes: 87
Re: Como programar en C18 el puerto SPI ??
« Respuesta #5 en: 05 de Abril de 2011, 19:44:54 »
Hola!

Yo trabajo con C18, y antes de abrir el MPLAB abro este archivo :D

C18 Libraries

viene con la instalacion del C18, creo.
Espero que te sirva.
Saludos

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Como programar en C18 el puerto SPI ??
« Respuesta #6 en: 05 de Abril de 2011, 23:33:55 »
Gracias!!, no sabia de ese archivo!! :lol: :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado irukza

  • PIC12
  • **
  • Mensajes: 87
Re: Como programar en C18 el puerto SPI ??
« Respuesta #7 en: 06 de Abril de 2011, 08:45:49 »
me alegro que sirva.
En la carpeta de instalacion del C18 hay una carpeta que se llama "doc", ahi tenes otra "periph-lib", y adentro de esa vas a encontrar una ayuda de libreria para cada periferico.
Tiene una diferencia importante con el archivo que puse antes, y es que debes incluir una version de libreria distinta segun el micro que usas, aunque sean de la misma familia.
La tabla que te dice cual es la version correcta esta al principio de cada archivo de ayuda.

Desconectado thomas666

  • PIC10
  • *
  • Mensajes: 5
Re: Como programar en C18 el puerto SPI ??
« Respuesta #8 en: 23 de Octubre de 2013, 20:14:57 »
hola me podrian indicar como utilizar la comunicacion spi utilizando directamente los registros y no la libreria....................
la verdad estoy en esto desde hace rato y no doy con el chiste
lo que necesito es saber como configurar los pines de salida para de el reloj  para el modo master si bien la configuracion se realiza en los registros
sspcon1 y sspstat no se si se configura algun registro de mas
gracias por su atencion.... :?

Desconectado seba85

  • PIC10
  • *
  • Mensajes: 28
Re: Como programar en C18 el puerto SPI ??
« Respuesta #9 en: 21 de Noviembre de 2013, 20:35:19 »
Hola  thomas666! yo también estoy empezando con el SPI y quiero usar los registros, ya leí el manual de referencia Section 18 SPI y entiendo como funciona y configurar el SPI
quiero usar un dsPIC como maestro y un PIC como esclavo, pero no se como comenzar la comunicación. También el otro problema que tengo es que el dsPIC es de 16bits y el PIC de 8 y no se como empezar....
Espero su respuesta en cuanto avance algo voy subiendo el código
Saludos!

Desconectado aptato

  • PIC10
  • *
  • Mensajes: 1
Re: Como programar en C18 el puerto SPI ??
« Respuesta #10 en: 25 de Noviembre de 2013, 19:50:43 »
hola me podrian indicar como utilizar la comunicacion spi utilizando directamente los registros y no la libreria....................
la verdad estoy en esto desde hace rato y no doy con el chiste
lo que necesito es saber como configurar los pines de salida para de el reloj  para el modo master si bien la configuracion se realiza en los registros
sspcon1 y sspstat no se si se configura algun registro de mas
gracias por su atencion.... :?

Buenas tardes efectivamente son esos dos registros para la configuración del SPI. Seria bueno que colocaras el codigo para mirarlo. Le dejo un ejemplo que realice con un pic18f4550 en modo maestro 0.0.

configuracion
   
    TRISBbits.RB0=1;// configuracion pin SDI como entrada
    TRISBbits.RB1=0;// configuracion pin SCK como salida
    TRISBbits.RB3=0;// configuracion pin CS como salida "tu escoje cual pin va hacer cs en modo esclavo ya hay uno predeterminado"
    TRISCbits.RC7=0;// configuracion pic SDO como salida
    SSPSTAT=0x40;// en este registro se configura los bits SMP y CKE dependiendo del modo que se quiera utilizar los demás se pueden dejar a 0
    SSPCON1=0x20;// en este registro se configura los bits SSPM3:SSPM0,CKP,SSPEN dependiendo del modo que se desea el bit SSPEN habilita el modulo spi
    TRISBbits.RB3=1;//cs

para enviar datos

    TRISBbits.RB3=0;//cs
    SSPBUF=dato;// enviar dato de 8 bits
    while(PIR1bits.SSPIF==0);
    PIR1bits.SSPIF=0;
    TRISBbits.RB3=1;//cs

Espero que te sirva