NRF52_esb

Committer:
joshuajnoble
Date:
Mon Mar 23 04:09:41 2015 +0000
Revision:
0:a01a54c0dc90
Child:
1:66f95e364222
trying esb

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joshuajnoble 0:a01a54c0dc90 1 #include "mbed.h"
joshuajnoble 0:a01a54c0dc90 2
joshuajnoble 0:a01a54c0dc90 3 DigitalOut myled(LED1);
joshuajnoble 0:a01a54c0dc90 4
joshuajnoble 0:a01a54c0dc90 5 #include <stdbool.h>
joshuajnoble 0:a01a54c0dc90 6 #include <stdint.h>
joshuajnoble 0:a01a54c0dc90 7 #include <string.h>
joshuajnoble 0:a01a54c0dc90 8 //#include "nrf.h"
joshuajnoble 0:a01a54c0dc90 9 #include "micro_esb.h"
joshuajnoble 0:a01a54c0dc90 10 #include "uesb_error_codes.h"
joshuajnoble 0:a01a54c0dc90 11 #include "nrf_delay.h"
joshuajnoble 0:a01a54c0dc90 12 //#include "nrf_gpio.h"
joshuajnoble 0:a01a54c0dc90 13
joshuajnoble 0:a01a54c0dc90 14 static uesb_payload_t tx_payload, rx_payload;
joshuajnoble 0:a01a54c0dc90 15
joshuajnoble 0:a01a54c0dc90 16 void uesb_event_handler()
joshuajnoble 0:a01a54c0dc90 17 {
joshuajnoble 0:a01a54c0dc90 18 static uint32_t rf_interrupts;
joshuajnoble 0:a01a54c0dc90 19 static uint32_t tx_attempts;
joshuajnoble 0:a01a54c0dc90 20
joshuajnoble 0:a01a54c0dc90 21 uesb_get_clear_interrupts(&rf_interrupts);
joshuajnoble 0:a01a54c0dc90 22
joshuajnoble 0:a01a54c0dc90 23 if(rf_interrupts & UESB_INT_TX_SUCCESS_MSK)
joshuajnoble 0:a01a54c0dc90 24 {
joshuajnoble 0:a01a54c0dc90 25 }
joshuajnoble 0:a01a54c0dc90 26
joshuajnoble 0:a01a54c0dc90 27 if(rf_interrupts & UESB_INT_TX_FAILED_MSK)
joshuajnoble 0:a01a54c0dc90 28 {
joshuajnoble 0:a01a54c0dc90 29 uesb_flush_tx();
joshuajnoble 0:a01a54c0dc90 30 }
joshuajnoble 0:a01a54c0dc90 31
joshuajnoble 0:a01a54c0dc90 32 if(rf_interrupts & UESB_INT_RX_DR_MSK)
joshuajnoble 0:a01a54c0dc90 33 {
joshuajnoble 0:a01a54c0dc90 34 uesb_read_rx_payload(&rx_payload);
joshuajnoble 0:a01a54c0dc90 35 NRF_GPIO->OUTCLR = 0xFUL << 8;
joshuajnoble 0:a01a54c0dc90 36 NRF_GPIO->OUTSET = (uint32_t)((rx_payload.data[2] & 0x0F) << 8);
joshuajnoble 0:a01a54c0dc90 37 }
joshuajnoble 0:a01a54c0dc90 38
joshuajnoble 0:a01a54c0dc90 39 uesb_get_tx_attempts(&tx_attempts);
joshuajnoble 0:a01a54c0dc90 40 NRF_GPIO->OUTCLR = 0xFUL << 12;
joshuajnoble 0:a01a54c0dc90 41 NRF_GPIO->OUTSET = (tx_attempts & 0x0F) << 12;
joshuajnoble 0:a01a54c0dc90 42 }
joshuajnoble 0:a01a54c0dc90 43
joshuajnoble 0:a01a54c0dc90 44 int main(void)
joshuajnoble 0:a01a54c0dc90 45 {
joshuajnoble 0:a01a54c0dc90 46 uint8_t rx_addr_p0[] = {0x12, 0x34, 0x56, 0x78, 0x9A};
joshuajnoble 0:a01a54c0dc90 47 uint8_t rx_addr_p1[] = {0xBC, 0xDE, 0xF0, 0x12, 0x23};
joshuajnoble 0:a01a54c0dc90 48 uint8_t rx_addr_p2 = 0x66;
joshuajnoble 0:a01a54c0dc90 49
joshuajnoble 0:a01a54c0dc90 50 //nrf_gpio_range_cfg_output(8, 15);
joshuajnoble 0:a01a54c0dc90 51
joshuajnoble 0:a01a54c0dc90 52 NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
joshuajnoble 0:a01a54c0dc90 53 NRF_CLOCK->TASKS_HFCLKSTART = 1;
joshuajnoble 0:a01a54c0dc90 54 while(NRF_CLOCK->EVENTS_HFCLKSTARTED == 0);
joshuajnoble 0:a01a54c0dc90 55
joshuajnoble 0:a01a54c0dc90 56 uesb_config_t uesb_config = UESB_DEFAULT_CONFIG;
joshuajnoble 0:a01a54c0dc90 57 uesb_config.rf_channel = 5;
joshuajnoble 0:a01a54c0dc90 58 uesb_config.crc = UESB_CRC_16BIT;
joshuajnoble 0:a01a54c0dc90 59 uesb_config.retransmit_count = 6;
joshuajnoble 0:a01a54c0dc90 60 uesb_config.retransmit_delay = 500;
joshuajnoble 0:a01a54c0dc90 61 uesb_config.dynamic_ack_enabled = 0;
joshuajnoble 0:a01a54c0dc90 62 uesb_config.protocol = UESB_PROTOCOL_ESB_DPL;
joshuajnoble 0:a01a54c0dc90 63 uesb_config.bitrate = UESB_BITRATE_2MBPS;
joshuajnoble 0:a01a54c0dc90 64 uesb_config.event_handler = uesb_event_handler;
joshuajnoble 0:a01a54c0dc90 65
joshuajnoble 0:a01a54c0dc90 66 uesb_init(&uesb_config);
joshuajnoble 0:a01a54c0dc90 67
joshuajnoble 0:a01a54c0dc90 68 uesb_set_address(UESB_ADDRESS_PIPE0, rx_addr_p0);
joshuajnoble 0:a01a54c0dc90 69 uesb_set_address(UESB_ADDRESS_PIPE1, rx_addr_p1);
joshuajnoble 0:a01a54c0dc90 70 uesb_set_address(UESB_ADDRESS_PIPE2, &rx_addr_p2);
joshuajnoble 0:a01a54c0dc90 71
joshuajnoble 0:a01a54c0dc90 72 tx_payload.length = 8;
joshuajnoble 0:a01a54c0dc90 73 tx_payload.pipe = 0;
joshuajnoble 0:a01a54c0dc90 74 tx_payload.data[0] = 0x01;
joshuajnoble 0:a01a54c0dc90 75 tx_payload.data[1] = 0x00;
joshuajnoble 0:a01a54c0dc90 76 tx_payload.data[2] = 0x00;
joshuajnoble 0:a01a54c0dc90 77 tx_payload.data[3] = 0x00;
joshuajnoble 0:a01a54c0dc90 78 tx_payload.data[4] = 0x11;
joshuajnoble 0:a01a54c0dc90 79
joshuajnoble 0:a01a54c0dc90 80 while (true)
joshuajnoble 0:a01a54c0dc90 81 {
joshuajnoble 0:a01a54c0dc90 82 if(uesb_write_tx_payload(&tx_payload) == UESB_SUCCESS)
joshuajnoble 0:a01a54c0dc90 83 {
joshuajnoble 0:a01a54c0dc90 84 tx_payload.data[1]++;
joshuajnoble 0:a01a54c0dc90 85 }
joshuajnoble 0:a01a54c0dc90 86 nrf_delay_us(10000);
joshuajnoble 0:a01a54c0dc90 87 }
joshuajnoble 0:a01a54c0dc90 88 }
joshuajnoble 0:a01a54c0dc90 89