ANT HRM interrupt and sdcard ?

Dear Members,

I want to log my ANT+ HRM into SDcard,
I tried with flag, but it never goes to main loop,

I'm using nRF52840
Code ANT HRM interrupt :

void ant_hrm_page_0_decode(uint8_t const        * p_page_buffer,
                           ant_hrm_page0_data_t * p_page_data)

//set flag for SDCARD writing 1 December 2021 Rixtronix LAB  
   SDCARD_Flag=1; 

on the main loop :

//wait for SDCARD_FLAG=1
       if (SDCARD_Flag==1)
       {
          printf("\rWRITE SDCARD.. \r\n"); 
          SDCA

I'm using softdevice S340, how can I send a flag in softdevice, than the flag will be processed in main loop ?

Thanks

Parents
  • Hi Jorgen, thanks for the reply

    Here's how the flag defined, in main :

    extern volatile uint8_t SDCARD_Flag; //SDCARD interrupt flag 1 Dec 21 Rixtronix LAB

    in ant_hrm_page_0_decode file :

    volatile uint8_t SDCARD_Flag; //SDCARD interrupt flag 6 Dec 21 Rixtronix LAB

    I haven't put breakpoints yet,

    It's not stuck, it keeps running on ant_hrm_page_0_decode(), never returns to main loop...and the Flag is updated,

    Any clues

Reply
  • Hi Jorgen, thanks for the reply

    Here's how the flag defined, in main :

    extern volatile uint8_t SDCARD_Flag; //SDCARD interrupt flag 1 Dec 21 Rixtronix LAB

    in ant_hrm_page_0_decode file :

    volatile uint8_t SDCARD_Flag; //SDCARD interrupt flag 6 Dec 21 Rixtronix LAB

    I haven't put breakpoints yet,

    It's not stuck, it keeps running on ant_hrm_page_0_decode(), never returns to main loop...and the Flag is updated,

    Any clues

Children
  • Some screenshots :

    it stuck and made error somewhere here :

    E:\nRF5_SDK_17.0.2_d674dde\components\softdevice\common\nrf_sdh_ant.c Line 135 Stuck here...
     for (nrf_section_iter_init(&iter, &sdh_ant_observers);
                 nrf_section_iter_get(&iter) != NULL;
                 nrf_section_iter_next(&iter))
            {
                nrf_sdh_ant_evt_observer_t * p_observer;
                nrf_sdh_ant_evt_handler_t    handler;

                p_observer = (nrf_sdh_ant_evt_observer_t *) nrf_section_iter_get(&iter);
                handler    = p_observer->handler;

                handler(&ant_evt, p_observer->p_context);
            }   

    Debug screen :

    Debug screen video

    Thanks

Related