Autor Tema: Problemas SPI en CCS: 18f2450 - nrf24L01+  (Leído 3868 veces)

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

Desconectado yopicuo

  • PIC10
  • *
  • Mensajes: 8
Problemas SPI en CCS: 18f2450 - nrf24L01+
« en: 15 de Abril de 2010, 10:02:51 »
Hola, estoy intentando comunicar un transmisor de la casa nordic el nRF24L01+ con el pic 18F2450 mediante SPI. El principal reto es implementar el módulo SPI en el pic mediante software, ya que ese modelo no lo trae de serie en hardware.

Les paso el código que estoy empleando:

Código: [Seleccionar]

#include <18F2450.h>

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV2,VREGEN
#use delay (clock=48000000)

// Configuracion para SPI modo software.
#USE SPI(MASTER,DI=PIN_B1,DO=PIN_B2,CLK=PIN_B3,ENABLE=PIN_B5,BITS=8,LSB_FIRST)

#include <usb_cdc.h>

/*Definición de pines de conexión PIC-NRF*/
#define  CE    PIN_B5         //Definición de Chip Enable PIN  
#define  nSEL  PIN_B4         //Deficición PIN nSEL (chip select)
#define  SCK   PIN_B3         //Deficición PIN SCK
#define  MOSI  PIN_B2         //Deficición PIN MOSI
#define  MISO  PIN_B1         //Deficición PIN MISO
#define  nIRQ  PIN_B0         //Definición PIN nIRQ

//Definiciones
#define   SET_nSEL   ( OUTPUT_HIGH (nSEL) )
#define   CLR_nSEL   ( OUTPUT_LOW  (nSEL) )


/*Definición de Registros del nRF*/
#define  CONFIG      0x00
#define  STATUS      0x07

/*Definición de Modos del nRF*/
#define  POWER_DOWN  0x7C

/*Definición de Comandos del nRF*/
#define  R_REGISTER  0x00
#define  W_REGISTER  0x20
#define  NOP         0xFF

void main()
{
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_2|ADC_TAD_MUL_0);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

int8 datout=0,datoin=0,i;

/*Configuración del SPI PIC*/
setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_CLK_DIV_4);

set_tris_b (0xC3);
usb_cdc_init();
usb_init();

while(!usb_cdc_connected()) {}

do{
   usb_task();
   if (usb_enumerated()){
      printf(usb_cdc_putc,"\n\r Valor a mantar: 0x7C --> 124\r\n");
      datout=0x7C;
      CLR_nSEL;
      spi_write(W_REGISTER|CONFIG);            
      if(datout!=NOP){spi_write(datout);}            
      delay_cycles(2);
      datoin=spi_read(R_REGISTER|STATUS);
      printf(usb_cdc_putc,"\n\r Valor a recibido: %u",datoin);
      SET_nSEL;
      }
   }
  
While (TRUE);

}


El principal problema que tengo es que no compila.. me dice que los identificadores SPI_read(), SPI_write() y setup_SPI(), no han sido identificados.

Si algun@ ha trabajado antes con el nrf24l01 y los pics, le agradecería que me ayudara con este asuntillo.
Bueno un saludo y gracias.
« Última modificación: 15 de Abril de 2010, 10:05:27 por yopicuo »

Desconectado DOMINGO_V

  • PIC10
  • *
  • Mensajes: 14
Re: Problemas SPI en CCS: 18f2450 - nrf24L01+
« Respuesta #1 en: 17 de Abril de 2010, 13:12:46 »
¿No se si te estoy entendiendo bien?.
Estas diciendo que intentas usar SPI en un micro que no lo lleva incluido por Hardware.
Si es así, es normal que las funciones que intentas utilizar no existan ya que las que el compilador tiene no sirven porno sabe porque para ese micro no sabe lo que tiene que hacer.
Por eso te las tendrás que crear tu mismo con tu propio codigo.


Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: Problemas SPI en CCS: 18f2450 - nrf24L01+
« Respuesta #2 en: 17 de Abril de 2010, 13:30:23 »
Puedes usar una de las que define El compilador y adaptarla a tus necesidades. pr ejemplo el de la memoria 9356C que es spi y incluye 2 librerías una spi y otra sin léela y la modificas según tus necesidades.

9356C.c ->directo.
9356spi.c ->spi hardware.
las dos se incluyen en los devices del CCs.
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas SPI en CCS: 18f2450 - nrf24L01+
« Respuesta #3 en: 17 de Abril de 2010, 13:44:48 »
Puedes implementar el SPI por software basándote en este ejemplo:

http://jumptuck.wordpress.com/2008/11/16/3595-lcd-hello-world/

Es simplemente desplazar bits a través de un pin.

A esta técnica se le llama bit-banging.

Otro ejemplo:

http://en.wikipedia.org/wiki/Bit-banging


Desconectado yopicuo

  • PIC10
  • *
  • Mensajes: 8
Re: Problemas SPI en CCS: 18f2450 - nrf24L01+
« Respuesta #4 en: 19 de Abril de 2010, 05:47:50 »
Gracias a todos por responder..

voy a probar primero con las librerías del 9356C, a ver si consigo que funcione... y ya después, si la cosa no avanza, me pondré con los ejemplos que ha propuesto migsantiago..

Un saludo y gracias por la ayuda.

Desconectado Lobo_Azul

  • PIC10
  • *
  • Mensajes: 29
Re: Problemas SPI en CCS: 18f2450 - nrf24L01+
« Respuesta #5 en: 30 de Octubre de 2010, 13:32:16 »
     Saludos a todos, y escribo por que veo que ya no hay más, ni se ven soluciones o algo así sobre el módulo nRFL24L01, quisiera saber si yopicuo, pudiste hecharlo a andar?? o ya no?? o que resultados obtuviste??, gracias.


 

anything