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
}
}
/** @} */
