#include <p18F4620.h>
#include <delays.h>
#include <spi.h>
#include <sicc.h> //creada por mi para la declaracion de las funciones de mi proyecto
//definicion de los pines del RF
#define TX_CE PORTBbits.RB7
#define TX_CS PORTBbits.RB6
#define CONFIG_READY PORTBbits.RB0
//definicion para configuracion del RF
#define PAYLOAD_SIZE 232
#define ADDR1 11
#define ADDR_CRC_SIZE 0b00100011
#define CH_SHOCK_250_FP 0b01001111
#define RF_CH2_RXEN 0b00010100 //2410MHz
unsigned char data_TX[7] = "HELLO!";
void config_rf_tx(void){
unsigned char config_wd[14];
//valores a la configuration word en ShockBurst
config_wd[0]= PAYLOAD_SIZE; //payload 29Bytes * 8 = 232bits de data
config_wd[1]= 0;
config_wd[2]= 0;
config_wd[3]= 0;
config_wd[4]= 0;
config_wd[5]= 0;
config_wd[6]= 0;
config_wd[7]= 0;
config_wd[8]= 0;
config_wd[9]= 0;
config_wd[10]= ADDR1; // direccion
config_wd[11]= ADDR_CRC_SIZE; // 8 bits direccion & 16 bits CRC habilitado
config_wd[12]= CH_SHOCK_250_FP; // 1 canal de recepcion & ShockBurst & 250kbps & full power
config_wd[13]= RF_CH2_RXEN; // RF_CH canal 2 RXEN de transmision
Delay1KTCYx(15); // (tpd2stby) 5msec
TX_CE = 0; TX_CS = 1; CONFIG_READY = 0;
Delay10TCYx(40); // (tcs2data) 10usec
trasmitiendo_datos(config_wd,14);
Delay100TCYx(100);
TX_CE = 0; TX_CS = 0; CONFIG_READY = 1;
Delay10TCYx(40);
}
void Transmision(unsigned char data[],unsigned char rf_address)
{
TX_CE = 1;
Delay10TCYx(40); // (tce2data) 10usec
trasmitiendo_datos(rf_address,1);
trasmitiendo_datos(data,7);
TX_CE = 0; //Inicio de la transmision
}
void inicio_TX(void)
{
config_rf_tx();
}
void main(void){
unsigned char rf_address = 10;
TRISAbits.TRISA6 = 0;
TRISAbits.TRISA7 = 0;
ADCON1 = 0b00001111;
TX_CS = 0;
TX_CE = 0;
CONFIG_READY = 0;
//configuro pines como salida CE y CS
TRISBbits.TRISB7 = 0;
TRISBbits.TRISB6 = 0;
//configuro el pin RB0 como salida
//ente indica que la configuracion ha sido realizada
TRISBbits.TRISB0 = 0;
config_SPI();
inicio_TX();
while(1){
Transmision(data_TX,rf_address);
Delay1KTCYx(30);
}
}