I'm not using softdevice, What is maximum GPIOTE Peripheral clock frequency for Interrupts for nrf52832? [Without PPI]
Thanks
I'm not using softdevice, What is maximum GPIOTE Peripheral clock frequency for Interrupts for nrf52832? [Without PPI]
Thanks
Here is the difference between polling and ISR.. polling is working much better.. What's wrong???
#include <stdbool.h> #include <stdint.h> #include "nrf.h" #include "nrf_drv_timer.h" #include "nrf_drv_clock.h" #include "nrf_drv_gpiote.h" #include "app_error.h" #include "nrf_delay.h" #include "boards.h" #include "app_error.h" #define PIN_TO_TOGGLE 27 #define PIN_TO_TOGGLE2 28 #define PIN_SCL 25 //#define USE_INTERRUPTS #ifdef USE_INTERRUPTS void in_pin_scl_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action) { if(nrf_drv_gpiote_in_is_set(PIN_SCL)) nrf_gpio_pin_set(PIN_TO_TOGGLE2); else nrf_gpio_pin_clear(PIN_TO_TOGGLE2); } #endif static void hfclk_config(void) { ret_code_t err_code = nrf_drv_clock_init(); APP_ERROR_CHECK(err_code); nrf_drv_clock_hfclk_request(NULL); } int main(void) { hfclk_config(); ret_code_t err_code; if(!nrf_drv_gpiote_is_init()) { err_code = nrf_drv_gpiote_init(); APP_ERROR_CHECK(err_code); } #ifdef USE_INTERRUPTS nrf_drv_gpiote_in_config_t in_config2 = GPIOTE_CONFIG_IN_SENSE_TOGGLE(true); in_config2.pull = NRF_GPIO_PIN_PULLUP; err_code = nrf_drv_gpiote_in_init(PIN_SCL, &in_config2, in_pin_scl_handler); APP_ERROR_CHECK(err_code); nrf_drv_gpiote_in_event_enable(PIN_SCL, true); #else nrf_gpio_cfg_input(PIN_SCL,NRF_GPIO_PIN_PULLUP); #endif nrf_gpio_cfg_output(PIN_TO_TOGGLE); nrf_gpio_cfg_output(PIN_TO_TOGGLE2); while (1) { #ifndef USE_INTERRUPTS if(nrf_drv_gpiote_in_is_set(PIN_SCL)) nrf_gpio_pin_set(PIN_TO_TOGGLE); else nrf_gpio_pin_clear(PIN_TO_TOGGLE); #endif } } /** @} */
Here is the difference between polling and ISR.. polling is working much better.. What's wrong???
#include <stdbool.h> #include <stdint.h> #include "nrf.h" #include "nrf_drv_timer.h" #include "nrf_drv_clock.h" #include "nrf_drv_gpiote.h" #include "app_error.h" #include "nrf_delay.h" #include "boards.h" #include "app_error.h" #define PIN_TO_TOGGLE 27 #define PIN_TO_TOGGLE2 28 #define PIN_SCL 25 //#define USE_INTERRUPTS #ifdef USE_INTERRUPTS void in_pin_scl_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action) { if(nrf_drv_gpiote_in_is_set(PIN_SCL)) nrf_gpio_pin_set(PIN_TO_TOGGLE2); else nrf_gpio_pin_clear(PIN_TO_TOGGLE2); } #endif static void hfclk_config(void) { ret_code_t err_code = nrf_drv_clock_init(); APP_ERROR_CHECK(err_code); nrf_drv_clock_hfclk_request(NULL); } int main(void) { hfclk_config(); ret_code_t err_code; if(!nrf_drv_gpiote_is_init()) { err_code = nrf_drv_gpiote_init(); APP_ERROR_CHECK(err_code); } #ifdef USE_INTERRUPTS nrf_drv_gpiote_in_config_t in_config2 = GPIOTE_CONFIG_IN_SENSE_TOGGLE(true); in_config2.pull = NRF_GPIO_PIN_PULLUP; err_code = nrf_drv_gpiote_in_init(PIN_SCL, &in_config2, in_pin_scl_handler); APP_ERROR_CHECK(err_code); nrf_drv_gpiote_in_event_enable(PIN_SCL, true); #else nrf_gpio_cfg_input(PIN_SCL,NRF_GPIO_PIN_PULLUP); #endif nrf_gpio_cfg_output(PIN_TO_TOGGLE); nrf_gpio_cfg_output(PIN_TO_TOGGLE2); while (1) { #ifndef USE_INTERRUPTS if(nrf_drv_gpiote_in_is_set(PIN_SCL)) nrf_gpio_pin_set(PIN_TO_TOGGLE); else nrf_gpio_pin_clear(PIN_TO_TOGGLE); #endif } } /** @} */