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:
#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.