//Pins /* IRQ - F0 CE - F4 CLK - A2 CSN - A3 MISO - A4 MOSI - A5 */ void nrfstart(char mode); void NRFwrite(uint8_t adress, uint8_t data); uint8_t NRFread(uint8_t adress); void TXflush(); void RXflush(); void TXwrite(uint8_t data); int RXread(); void TXsend(); int ack(); int receive(); void transmitt(int data) { //TXflush(); //delayu(50); TXwrite(data); TXsend(); } int receive() { int data; if((GPIOF->DATA & 0x01) == 0x00){ //interrupção - pino IRQ data = RXread(); GPIOF->DATA &= (~0x10); delayu(100); NRFwrite(0x27, 0x70); delayu(100); GPIOF->DATA |= (0x10); } else { data = -1; } return data; } void nrfstart(char mode) { SPIstart(0,0,8); uint8_t teste = SYSCTL->RCGCGPIO; teste |= 0x20; SYSCTL->RCGCGPIO |= 0x20; while(SYSCTL->RCGCGPIO != teste); GPIOF->LOCK = 0x4C4F434B; //arrumar os pinos que serao utilizados GPIOF->CR |= 0x13; GPIOF->DIR |= 0x16; GPIOF->DEN |= 0x17; GPIOF->DATA &= (~0x10); GPIOA->DATA |= (0x08); delayu(5000); NRFwrite(0x21, 0x01); //Enable autoacknowlegement para P0 NRFwrite(0x22, 0x01); //Enable data pipe 0 NRFwrite(0x23, 0x03); //5 bytes long address NRFwrite(0x24, 0x00); //Setup of automatic retransmission - 1250us retransmit delay - Up to 15 re-transmissions NRFwrite(0x25, 0x4C); //Channel frequency NRFwrite(0x26, 0x0E); //Setup register - 250kbps - 0dBm NRFwrite(0x27, 0x70); //Status register, cleaning the bits 6:4 NRFwrite(0x31, 0x01); //Number of bytes in RX payload if(mode == 'r'){ NRFwrite(0x20, 0x3F); //Set receiver } else if(mode == 't'){ NRFwrite(0x20, 0x5E); //Set transmissor } } void NRFwrite(uint8_t adress, uint8_t data) { SPIbegin(); SPIwrite(adress); SPIwrite(data); SPIend(); } uint8_t NRFread(uint8_t adress) { uint8_t retorno = SPIread(adress); return(retorno); } void TXwrite(uint8_t data) { SPIbegin(); SPIwrite(0xA0); SPIwrite(data); SPIend(); } int ack() { int retorno = 0; if((GPIOF->DATA & 0x01) == 0x00){ //interrupção - pino IRQ retorno = 1; } return(retorno); } int RXread() { return(SPIread(0x61)); } void TXflush() { SPIwrite(0xE1); } void RXflush() { SPIwrite(0xE2); } void TXsend() { GPIOF->DATA |= 0x10; delayu(25); GPIOF->DATA &= (~0x10); delayu(25); }