Hi guys,
I am using the RFduino nrf51822 chip. I am using the TIMER2 interrupt and it works fine. But when I try to use the BLE along with the timer interrupt both don't work. I don't get the advertisement for the connection to be made neither does the timer work.
When I stop the timer the Bluetooth works fine and vice versa. I want both the timer and BLE to work together. Here is the code:
#include<RFduinoBLE.h>
int i = 0;
uint_fast16_t volatile number_of_ms = 10;
void timers(void) // directly pass the value you want the cycle to be in mS
{
NRF_TIMER2->TASKS_STOP = 1; // Stop timer
NRF_TIMER2->MODE = TIMER_MODE_MODE_Timer; // taken from Nordic dev zone
NRF_TIMER2->BITMODE = TIMER_BITMODE_BITMODE_16Bit;
NRF_TIMER2->PRESCALER = 9; // 32us resolution
NRF_TIMER2->TASKS_CLEAR = 1; // Clear timer
// With 32 us ticks, we need to multiply by 31.25 to get milliseconds
NRF_TIMER2->CC[0] = number_of_ms * 31;
NRF_TIMER2->CC[0] += number_of_ms / 4;
NRF_TIMER2->INTENSET = TIMER_INTENSET_COMPARE0_Enabled << TIMER_INTENSET_COMPARE0_Pos;
NRF_TIMER2->SHORTS = (TIMER_SHORTS_COMPARE0_CLEAR_Enabled << TIMER_SHORTS_COMPARE0_CLEAR_Pos);
attachInterrupt(TIMER2_IRQn, TIMER2_Interrupt);
NRF_TIMER2->TASKS_START = 1; // Start TIMER
}
void setup() {
// put your setup code here, to run once:
RFduinoBLE.advertisementData = "abc";
RFduinoBLE.deviceName = "abc";
RFduinoBLE.txPowerLevel = +4;
RFduinoBLE.begin();
Serial.begin(9600);
timers();
}
void loop() {
}
void TIMER2_Interrupt(void)
{
if (NRF_TIMER2->EVENTS_COMPARE[0] != 0)
{
Serial.println(i);
RFduinoBLE.send(i);
i++;
NRF_TIMER2->EVENTS_COMPARE[0] = 0;
}
}