static void setup_mux_input_channel_selection(void)
{
ret_code_t err_code;
uint32_t compare_evt_addr_0, compare_evt_addr_1, compare_evt_addr_2, compare_evt_addr_3;
uint32_t compare_evt_addr_4, compare_evt_addr_5;
uint32_t gpiote_task_addr_0, gpiote_task_addr_1, gpiote_task_addr_2, gpiote_task_addr_3, gpiote_task_addr_4;
/* setup timer compare events and gpiote task */
compare_evt_addr_0 = nrf_drv_timer_event_address_get(&m_timer_1, NRF_TIMER_EVENT_COMPARE0);
gpiote_task_addr_0 = nrf_drv_gpiote_out_task_addr_get(MUX_INPUT_2); //12us: M2 high
compare_evt_addr_1 = nrf_drv_timer_event_address_get(&m_timer_1, NRF_TIMER_EVENT_COMPARE1);
gpiote_task_addr_1 = nrf_drv_gpiote_out_task_addr_get(MUX_INPUT_3); //24us: M3 high
compare_evt_addr_2 = nrf_drv_timer_event_address_get(&m_timer_1, NRF_TIMER_EVENT_COMPARE2);
gpiote_task_addr_2 = nrf_drv_gpiote_out_task_addr_get(MUX_INPUT_2); //36us: M2 low
compare_evt_addr_3 = nrf_drv_timer_event_address_get(&m_timer_1, NRF_TIMER_EVENT_COMPARE3);
gpiote_task_addr_4 = nrf_drv_gpiote_out_task_addr_get(MUX_INPUT_3); //48us: M3 low
/* link task and event via ppi channels */
err_code = nrf_drv_ppi_channel_assign(ppi_channel_0, compare_evt_addr_0, gpiote_task_addr_0);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_assign(ppi_channel_1, compare_evt_addr_1, gpiote_task_addr_1);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_assign(ppi_channel_2, compare_evt_addr_2, gpiote_task_addr_2);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_assign(ppi_channel_4, compare_evt_addr_3, gpiote_task_addr_4);
APP_ERROR_CHECK(err_code);
/* enable ppi channels */
err_code = nrf_drv_ppi_channel_enable(ppi_channel_0);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_enable(ppi_channel_1);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_enable(ppi_channel_2);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_enable(ppi_channel_3);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_enable(ppi_channel_4);
APP_ERROR_CHECK(err_code);
}
Hello all, I have question about ppi.
Like code shown above, I'm using ppi.
Here, MUX_INPUT_2 and MUX_INPUT_3 are name of pin.
I'm changing their state: from low to high, or high to low by ppi, automatically.
What I want to ask here is, is there any solution that I can read the state?
For example, after gpiote_task_addr_0, int state = 0 and after gpiote_task_addr_1, int state = 1, ... etc.
I want to read a state by number and read it.
If it is not possible, can you recommend other way for state recognition?
Thanks!