Hi I am having trouble setting up a timer and interrupt on the Arduino side & was hoping some one might help
here is my code so far
Thanks so much
// constants won't change. Used here to set a pin number: const int ledPin = LED_BUILTIN;// the number of the LED pin // Variables will change: int ledState = LOW; // ledState used to set the LED volatile int flag = 0; // Generally, you should use "unsigned long" for variables that hold time // The value will quickly become too large for an int to store unsigned long previousMillis = 0; // will store last time LED was updated // constants won't change: const long interval = 1000; // interval at which to blink (milliseconds) void setup() { setupSerial(); // set the digital pin as output: pinMode(ledPin, OUTPUT); digitalWrite(ledPin, HIGH ); start_timer(); } void loop() { // here is where you'd put code that needs to be running all the time. // check to see if it's time to blink the LED; that is, if the difference // between the current time and last time you blinked the LED is bigger than // the interval at which you want to blink the LED. unsigned long currentMillis = millis(); // if (currentMillis - previousMillis >= interval) { // // save the last time you blinked the LED previousMillis = currentMillis; Serial.print("looping"); Serial.println(flag); // // if the LED is off turn it on and vice-versa: // if (ledState == LOW) { // ledState = HIGH; // Serial.println("Going high"); // } else { // ledState = LOW; // } // // // set the LED with the ledState of the variable: // // digitalWrite(ledPin, ledState); } } void start_timer(){ NRF_TIMER2->TASKS_STOP = 1; // Stop timer NRF_TIMER2->MODE = TIMER_MODE_MODE_Timer; // Set the timer in Counter Mode NRF_TIMER2->BITMODE = TIMER_BITMODE_BITMODE_32Bit << TIMER_BITMODE_BITMODE_Pos; NRF_TIMER2->TASKS_CLEAR = 1; // clear the task first to be usable for later NRF_TIMER2->PRESCALER = 8; //Set prescaler. Higher number gives slower timer. Prescaler = 0 gives 16MHz timer NRF_TIMER2->CC[0] = 62500; //Set value for TIMER2 compare register 0 // NRF_TIMER2->CC[1] = 5; //Set value for TIMER2 compare register 1 // Enable interrupt on Timer 2, both for CC[0] and CC[1] compare match events NRF_TIMER2->INTENSET = TIMER_INTENSET_COMPARE0_Enabled << TIMER_INTENSET_COMPARE0_Pos; NRF_TIMER2->SHORTS = (TIMER_SHORTS_COMPARE0_CLEAR_Enabled << TIMER_SHORTS_COMPARE0_CLEAR_Pos); NVIC_EnableIRQ(TIMER2_IRQn); NRF_TIMER2->TASKS_START = 1; // Start TIMER2 Serial.println("Timer configured"); } extern "C" { void TIMER2_IRQHandler(void) { if (NRF_TIMER2->EVENTS_COMPARE[0] == 1) { flag++; NRF_TIMER2->EVENTS_COMPARE[0] = 0; } } } void setupSerial(){ int time_now = millis(); Serial.begin(115200); while (!Serial && (millis() < (time_now + 3000) ) ) { // wait for serial port to connect. Needed for native USB port only } if(Serial){ Serial.println("Serial running setup"); } Serial.println("Make sure to turn on the device."); }