static void setLED(bool blink) { if(blink) { nrf_drv_gpiote_out_set(PIN_NUMBER_LED); } else { nrf_drv_gpiote_out_clear(PIN_NUMBER_LED); } }
/** * @brief Set the state of the RGB LED * * @param led LED element ID * @param state LED element state True = lit */ void led_rgb_set(uint32_t led, bool state) { if(state) { nrf_drv_gpiote_out_clear(led_rgb_pin[led]); } else { nrf_drv_gpiote_out_set(led_rgb_pin[led]); } }
static void gpiote_event_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action) { if ((qenc_count > 0) && qenc_enable_flag) { qenc_count--; qenc_state = next_pos[qenc_state]; } else if ((qenc_count < 0 ) && qenc_enable_flag ) { qenc_count++; qenc_state = next_neg[qenc_state]; } else if ((qenc_dbl_count > 0 ) && qenc_enable_flag) { qenc_dbl_count--; qenc_state = next_dbl[qenc_state]; } else { qenc_enable_flag = false; } if (qenc_state & 0x01) { nrf_drv_gpiote_out_set(QENC_CONFIG_PIO_B); } else { nrf_drv_gpiote_out_clear(QENC_CONFIG_PIO_B); } if (qenc_state & 0x02) { nrf_drv_gpiote_out_set(QENC_CONFIG_PIO_A); } else { nrf_drv_gpiote_out_clear(QENC_CONFIG_PIO_A); } }
/**@brief Function for application main entry. Does not return. */ int main(void) { unsigned char reg = 0x00; //IC Identity Register nrf_gpio_cfg_output(30); //for the CS pin nrf_drv_gpiote_out_set(30); //This should assert the CS for the SPI peripheral m_transfer_completed = false; // Setup bsp module. bsp_configuration(); nrf_drv_spi_config_t const config = { #if (SPI0_ENABLED == 1) .sck_pin = SPIM0_SCK_PIN, .mosi_pin = SPIM0_MOSI_PIN, .miso_pin = SPIM0_MISO_PIN, .ss_pin = SPIM0_SS_PIN, #elif (SPI1_ENABLED == 1) .sck_pin = SPIM1_SCK_PIN, .mosi_pin = SPIM1_MOSI_PIN, .miso_pin = SPIM1_MISO_PIN, .ss_pin = SPIM1_SS_PIN, #elif (SPI2_ENABLED == 1) .sck_pin = SPIM2_SCK_PIN, .mosi_pin = SPIM2_MOSI_PIN, .miso_pin = SPIM2_MISO_PIN, .ss_pin = SPIM2_SS_PIN, #endif .irq_priority = APP_IRQ_PRIORITY_LOW, .orc = 0xCC, .frequency = NRF_DRV_SPI_FREQ_1M, .mode = NRF_DRV_SPI_MODE_0, .bit_order = NRF_DRV_SPI_BIT_ORDER_MSB_FIRST, .ss_pin = NRF_DRV_SPI_PIN_NOT_USED, //added by DS - if not specified, the nrf_drv_spi_init() will set this to high, which is wrong, CS for AS3911 is active low }; ret_code_t err_code = nrf_drv_spi_init(&m_spi_master, &config, spi_master_event_handler); APP_ERROR_CHECK(err_code); while(1) { SPIWriteReg(0x18,0x27); reg=SPIReadReg(0x18); SEGGER_RTT_printf(0, " r value is %x\n", reg); } }
void SPIWriteReg(uint8_t addr, uint8_t value) { uint8_t temp[2]; uint8_t temp_rec[2]={0}; temp[0] = addr & WRITE_MODE; temp[1] = value; nrf_drv_gpiote_out_clear(30); spi_send_recv(temp, temp_rec, 2); if (m_transfer_completed){ m_transfer_completed=false; nrf_delay_ms(1); nrf_drv_gpiote_out_set(30); } nrf_delay_ms(1); }
uint8_t SPIReadReg(uint8_t addr) { uint8_t temp[2]; uint8_t temp_rec[2]={0}; temp[0] = addr | READ_MODE ; temp[1] = 0; nrf_drv_gpiote_out_clear(30); spi_send_recv(temp, temp_rec, 2); if (m_transfer_completed){ m_transfer_completed=false; nrf_delay_ms(1); nrf_drv_gpiote_out_set(30); } nrf_delay_ms(1); return temp_rec[1]; }
/** * @brief LED消灯 * * @param[in] pin 対象PIN番号 */ void led_off(int pin) { /* アクティブLOW */ nrf_drv_gpiote_out_set(pin); }