hi... folks
i am using nrf53832 , i want to merge the uart and timer . i tried my level best but timer is not working
help me
thanks in advance
hi... folks
i am using nrf53832 , i want to merge the uart and timer . i tried my level best but timer is not working
help me
thanks in advance
Hi,
Can you elaborate on what you have done / how you have done it, and how it is not working? Have you done any debugging to see what is going on?
yeah , i merged the timer example program with uart . but i couldn't find , my timer is not running
i have given the timer for one minute , when i debug the program , i am getting the data within the seconds , my timer is not running
Can you upload your code so that we can see how you use the timer?
int main(void)
{
bool erase_bonds;
// Initialize.
uart_init();
log_init();
timers_init();
buttons_leds_init(&erase_bonds);
power_management_init();
ble_stack_init();
gap_params_init();
gatt_init();
services_init();
advertising_init();
conn_params_init();
// Start execution.
printf("\r\nUART started.\r\n");
NRF_LOG_INFO("Debug logging for UART over RTT started.");
advertising_start();
twi_init();
MAX30_set_mode();
while(true)
nrf_delay_ms(5000);
m_xfer_done == false;
uint32_t time_ms = 500; //Time(in miliseconds) between consecutive compare events.
uint32_t time_ticks;
uint32_t err_code = NRF_SUCCESS;
//Configure all leds on board.
bsp_board_init(BSP_INIT_LEDS);
//Configure TIMER_LED for generating simple light effect - leds on board will invert his state one after the other.
nrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG;
err_code = nrf_drv_timer_init(&TIMER_SENSOR, &timer_cfg, timer_sensor_event_handler);
APP_ERROR_CHECK(err_code);
time_ticks = nrf_drv_timer_ms_to_ticks(&TIMER_SENSOR, time_ms);
}
int main(void)
{
bool erase_bonds;
// Initialize.
uart_init();
log_init();
timers_init();
buttons_leds_init(&erase_bonds);
power_management_init();
ble_stack_init();
gap_params_init();
gatt_init();
services_init();
advertising_init();
conn_params_init();
// Start execution.
printf("\r\nUART started.\r\n");
NRF_LOG_INFO("Debug logging for UART over RTT started.");
advertising_start();
twi_init();
MAX30_set_mode();
while(true)
nrf_delay_ms(5000);
m_xfer_done == false;
uint32_t time_ms = 500; //Time(in miliseconds) between consecutive compare events.
uint32_t time_ticks;
uint32_t err_code = NRF_SUCCESS;
//Configure all leds on board.
bsp_board_init(BSP_INIT_LEDS);
//Configure TIMER_LED for generating simple light effect - leds on board will invert his state one after the other.
nrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG;
err_code = nrf_drv_timer_init(&TIMER_SENSOR, &timer_cfg, timer_sensor_event_handler);
APP_ERROR_CHECK(err_code);
time_ticks = nrf_drv_timer_ms_to_ticks(&TIMER_SENSOR, time_ms);
}
It seems you have copied the timer code from the SDK timer example, but you have forgotten to start it (you are not using your calculated time_ticks variable for anything). Referring to the example and assuming that is what you want to do, you are missing the call to nrf_drv_timer_extended_compare(). Your timer code should probably be something similar to this:
//Configure TIMER_SENSOR for generating simple light effect - leds on board will invert his state one after the other.
nrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG;
err_code = nrf_drv_timer_init(&TIMER_SENSOR, &timer_cfg, timer_sensor_event_handler);
APP_ERROR_CHECK(err_code);
time_ticks = nrf_drv_timer_ms_to_ticks(&TIMER_SENSOR, time_ms);
nrf_drv_timer_extended_compare(
&TIMER_SENSOR, NRF_TIMER_CC_CHANNEL0, time_ticks, NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK, true);i didn't get you... can you say me clearly
(you are not using your calculated time_ticks variable for anything).??
In the code you posted you calculate the time_ticks like this:
time_ticks = nrf_drv_timer_ms_to_ticks(&TIMER_SENSOR, time_ms);
but you never actually use it. There is no wonder your timer is not running. Please compare with the timer example or the code snippet I pasted in my previous answer where you see the line you are missing (assuming this is what you want to do).
how to compare ,actually here i want to check the data see the code
void timer_sensor_event_handler(void)
{
uint32_t threshold = 32;
char str[80];
uint32_t length1;
char pavi;
char event;
switch (event)
{
if(m_sample < threshold)
{
length1 = sprintf(str,"%d", m_sample);
ble_nus_data_send(&m_nus,str,sizeof(m_sample), m_conn_handle);
ret_code_t err_code = nrf_drv_twi_rx(&m_twi, 0x48U, &m_sample, sizeof(m_sample));
NRF_LOG_INFO("SUCCESS1");
}
break;
default:
//Do nothing.
break;
}
}I do not follow see how this code relates to what we have been discussing earlier in this thread?