void BoardInitPeriph( void ) { /* Init the GPIO extender pins */ // GpioInit( &IrqMpl3115, IRQ_MPL3115, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &IrqMag3110, IRQ_MAG3110, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &GpsPowerEn, GPS_POWER_ON, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &NcIoe3, SPARE_IO_EXT_3, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &NcIoe4, SPARE_IO_EXT_4, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &NcIoe5, SPARE_IO_EXT_5, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &NcIoe6, SPARE_IO_EXT_6, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &NcIoe7, SPARE_IO_EXT_7, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &NIrqSx9500, N_IRQ_SX9500, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &Irq1Mma8451, IRQ_1_MMA8451, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &Irq2Mma8451, IRQ_2_MMA8451, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // GpioInit( &TxEnSx9500, TX_EN_SX9500, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); GpioInit( &testInterupt, TEST_INTERUPT, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_DOWN, 0 ); GpioSetInterrupt( &testInterupt, IRQ_RISING_EDGE, IRQ_HIGH_PRIORITY, testIrq[0] ); //GpioInit( &Led3, LED_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); // Switch LED 1, 2, 3 OFF GpioWrite( &Led1, 0 ); GpioWrite( &Led2, 0 ); //GpioWrite( &Led3, 1 ); }
void gps_start() { GPS_UART_PWR_ON; gps_uart.Init(GPS_UART, 9600); gps_uart.SetInterruptPriority(MEDIUM); GpioSetDirection(GPS_EN, OUTPUT); //active high GpioWrite(GPS_EN, LOW); GpioSetDirection(GPS_TIMER, INPUT); //active low, otherwise open-drain GpioSetPull(GPS_TIMER, gpio_pull_up); GpioSetInterrupt(GPS_TIMER, gpio_interrupt1, gpio_falling); GpioSetDirection(GPS_RESET, OUTPUT); //active low GpioWrite(GPS_RESET, LOW); GpioWrite(GPS_EN, HIGH); _delay_ms(10); GpioWrite(GPS_RESET, LOW); _delay_ms(20); GpioWrite(GPS_RESET, HIGH); gps_parser_state = GPS_IDLE; fc.gps_data.valid = false; fc.gps_data.fix = 0; fc.gps_data.fix_cnt = 0; for (uint8_t i = 0; i < GPS_SAT_CNT; i++) { fc.gps_data.sat_id[i] = 0; fc.gps_data.sat_snr[i] = 0; } }
void bt_init() { DEBUG("bt_init\n"); //get module type eeprom_busy_wait(); bt_module_type = eeprom_read_byte(&config_ro.bt_module_type); //init bt_uart bt_uart.InitBuffers(BUFFER_SIZE * 2, BUFFER_SIZE); //pin init GpioSetDirection(BT_EN, OUTPUT); GpioSetDirection(BT_RESET, OUTPUT); GpioSetDirection(BT_RTS, OUTPUT); //power is off GpioWrite(BT_RTS, LOW); GpioWrite(BT_EN, LOW); GpioWrite(BT_RESET, LOW); //IRQ init GpioSetDirection(BT_CTS, INPUT); GpioSetPull(BT_CTS, gpio_pull_down); GpioSetInterrupt(BT_CTS, gpio_interrupt1, gpio_rising); }
void bt_step() { if (bt_module_state == BT_MOD_STATE_OFF) return; if (bt_reset_counter) { if (bt_reset_counter > task_get_ms_tick()) return; DEBUG("BT RESET STEP: %d\n", bt_reset_counter_step); switch(bt_reset_counter_step) { case(0): GpioWrite(BT_EN, HIGH); bt_reset_counter = task_get_ms_tick() + 500; bt_reset_counter_step = 1; break; case(1): //enable bt uart BT_UART_PWR_ON; bt_uart.Init(BT_UART, 115200); bt_uart.SetInterruptPriority(MEDIUM); // while(1) // { // _delay_ms(100); // bt_uart.Write(0x00); // _delay_ms(1); // bt_uart.Write(0xAA); // ewdt_reset(); // } bt_reset_counter = task_get_ms_tick() + 10; bt_reset_counter_step = 2; break; case(2): GpioWrite(BT_RESET, HIGH); bt_reset_counter_step = 0; bt_reset_counter = 0; break; } return; } if (bt_module_type == BT_PAN1322) bt_pan1322.Step(); if (bt_module_type == BT_PAN1026) bt_pan1026.Step(); if (bt_module_type == BT_UNKNOWN) bt_unknown_parser(); }
void BoardInitPeriph( void ) { /* Init the GPIO extender pins */ GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); // Switch LED 1, 2, 3 OFF GpioWrite( &Led1, 1 ); GpioWrite( &Led2, 1 ); }
void bt_module_deinit() { GpioWrite(BT_EN, LOW); GpioWrite(BT_RESET, LOW); bt_irqh(BT_IRQ_DEINIT, 0); bt_uart.Stop(); BT_UART_PWR_OFF; }
void mems_power_off() { GpioWrite(MEMS_EN, LOW); if (hw_revision == HW_REW_1504) { GpioWrite(REV_1504_MEMS_EN_2, LOW); GpioWrite(REV_1504_I2C_EN, LOW); } }
void SX1272SetAntSw( uint8_t opMode ) { switch( opMode ) { case RFLR_OPMODE_TRANSMITTER: if( ( Radio.Read( REG_PACONFIG ) & RF_PACONFIG_PASELECT_PABOOST ) == RF_PACONFIG_PASELECT_PABOOST ) { GpioWrite( &RadioSwitchCtrl1, 1 ); GpioWrite( &RadioSwitchCtrl2, 0 ); } else { GpioWrite( &RadioSwitchCtrl1, 0 ); GpioWrite( &RadioSwitchCtrl2, 1 ); } break; case RFLR_OPMODE_RECEIVER: case RFLR_OPMODE_RECEIVER_SINGLE: case RFLR_OPMODE_CAD: GpioWrite( &RadioSwitchCtrl1, 1 ); GpioWrite( &RadioSwitchCtrl2, 1 ); break; default: GpioWrite( &RadioSwitchCtrl1, 0 ); GpioWrite( &RadioSwitchCtrl2, 0 ); GpioWrite( &RadioPwrAmpCtrl, 0 ); break; } }
void bt_module_reset() { GpioWrite(BT_EN, LOW); GpioWrite(BT_RESET, LOW); _delay_ms(200); GpioWrite(BT_EN, HIGH); _delay_ms(200); GpioWrite(BT_RESET, HIGH); _delay_ms(300); }
void testPCO( void ) { printf("----------------\n"); printf("ON_TEST_INTERUPT\n"); printf("----------------\n"); if(GpioRead( &Led2 ) == 0){ GpioWrite( &Led2, 1 ); }else{ GpioWrite( &Led2, 0 ); } }
void bt_module_reset() { GpioWrite(BT_EN, LOW); GpioWrite(BT_RESET, LOW); bt_uart.Stop(); BT_UART_PWR_OFF; bt_reset_counter = task_get_ms_tick() + 4000; bt_reset_counter_step = 0; }
// the loop routine runs over and over again forever: void loop() { // TODO: Add your code here GpioWrite(led, LOW); // turn the LED off by making the voltage LOW Log(L"LED OFF\n"); delay(1000); // wait for a second GpioWrite(led, HIGH); // turn the LED on by making the voltage HIGH Log(L"LED ON\n"); delay(1000); // wait for a second }
void MotorSet(motor_t * motor, uint8_t pwm, dir_t dir){ pwm =pwm%101; if(dir == FORWARD){ GpioWrite(&motor->dir_pin,GPIO_LOW); SctSetDutyCycle(&motor->pwm_pin,pwm); }else if(dir == BACKWARD){ GpioWrite(&motor->dir_pin,GPIO_HIGH); SctSetDutyCycle(&motor->pwm_pin,100-pwm); } }
void OpenLed(LED_TYPE led, COLOR_TYPE color) { switch(led) { case CONNECT_LED : GpioWrite(APP_CONNECT_LED,on_stat);break; case CONTROL_LED : GpioWrite(PURIFIER_LED_PIN_NO,on_stat);break; case WARN_LED : OpenRGBLed(WARN_LED,color);break; case AQI_LED : OpenRGBLed(AQI_LED ,color);break; default : break; } }
void CloseLed(LED_TYPE led) { switch(led) { case CONNECT_LED : GpioWrite(APP_CONNECT_LED,off_stat);break; case CONTROL_LED : GpioWrite(PURIFIER_LED_PIN_NO,off_stat);break; case WARN_LED : CloseWarnLed();break; case AQI_LED : CloseAQILed();break; case ALL_LED : GpioWrite(APP_CONNECT_LED,off_stat); GpioWrite(PURIFIER_LED_PIN_NO,off_stat); CloseWarnLed();CloseAQILed();break; } }
void SX126xWriteBuffer( uint8_t offset, uint8_t *buffer, uint8_t size ) { SX126xCheckDeviceReady( ); GpioWrite( &SX126x.Spi.Nss, 0 ); SpiInOut( &SX126x.Spi, RADIO_WRITE_BUFFER ); SpiInOut( &SX126x.Spi, offset ); for( uint16_t i = 0; i < size; i++ ) { SpiInOut( &SX126x.Spi, buffer[i] ); } GpioWrite( &SX126x.Spi.Nss, 1 ); SX126xWaitOnBusy( ); }
void bat_en_low(uint8_t mask) { bat_en_mask &= ~mask; if (bat_en_mask == 0) GpioWrite(BAT_EN, LOW); }
void SX126xWakeup( void ) { BoardDisableIrq( ); GpioWrite( &SX126x.Spi.Nss, 0 ); SpiInOut( &SX126x.Spi, RADIO_GET_STATUS ); SpiInOut( &SX126x.Spi, 0x00 ); GpioWrite( &SX126x.Spi.Nss, 1 ); // Wait for chip to be ready. SX126xWaitOnBusy( ); BoardEnableIrq( ); }
/*! * \brief MCPS-Confirm event function * * \param [IN] mcpsConfirm - Pointer to the confirm structure, * containing confirm attributes. */ static void McpsConfirm( McpsConfirm_t *mcpsConfirm ) { if( mcpsConfirm->Status == LORAMAC_EVENT_INFO_STATUS_OK ) { switch( mcpsConfirm->McpsRequest ) { case MCPS_UNCONFIRMED: { // Check Datarate // Check TxPower break; } case MCPS_CONFIRMED: { // Check Datarate // Check TxPower // Check AckReceived // Check NbTrials break; } case MCPS_PROPRIETARY: { break; } default: break; } // Switch LED 1 ON GpioWrite( &Led1, 1 ); TimerStart( &Led1Timer ); } NextTx = true; }
void OnRxDone( uint8_t *payload, uint16_t size, int8_t rssi, int8_t snr ) { static uint8_t ledState = 1; // Toggle LED 1 ledState ^= 1; GpioWrite( &Led1, ledState ); }
void SX1272SetAntSw( uint8_t opMode ) { switch( opMode ) { case RFLR_OPMODE_TRANSMITTER: GpioWrite( &AntRx, 0 ); GpioWrite( &AntTx, 1 ); break; case RFLR_OPMODE_RECEIVER: case RFLR_OPMODE_RECEIVER_SINGLE: case RFLR_OPMODE_CAD: default: GpioWrite( &AntRx, 1 ); GpioWrite( &AntTx, 0 ); break; } }
void SX126xReadCommand( RadioCommands_t command, uint8_t *buffer, uint16_t size ) { SX126xCheckDeviceReady( ); GpioWrite( &SX126x.Spi.Nss, 0 ); SpiInOut( &SX126x.Spi, ( uint8_t )command ); SpiInOut( &SX126x.Spi, 0x00 ); for( uint16_t i = 0; i < size; i++ ) { buffer[i] = SpiInOut( &SX126x.Spi, 0 ); } GpioWrite( &SX126x.Spi.Nss, 1 ); SX126xWaitOnBusy( ); }
void SX1276SetAntSw( uint8_t rxTx ) { if( SX1276.RxTx == rxTx ) { return; } SX1276.RxTx = rxTx; if( rxTx != 0 ) { GpioWrite( &AntSwitch, 0 ); } else { GpioWrite( &AntSwitch, 1 ); } }
void SX126xReadRegisters( uint16_t address, uint8_t *buffer, uint16_t size ) { SX126xCheckDeviceReady( ); GpioWrite( &SX126x.Spi.Nss, 0 ); SpiInOut( &SX126x.Spi, RADIO_READ_REGISTER ); SpiInOut( &SX126x.Spi, ( address & 0xFF00 ) >> 8 ); SpiInOut( &SX126x.Spi, address & 0x00FF ); SpiInOut( &SX126x.Spi, 0 ); for( uint16_t i = 0; i < size; i++ ) { buffer[i] = SpiInOut( &SX126x.Spi, 0 ); } GpioWrite( &SX126x.Spi.Nss, 1 ); SX126xWaitOnBusy( ); }
void SystemInit() { //bt reset default HIGH (bt in reset) //GpioSetInvert(bt_reset, ON); GpioWrite(bt_reset, HIGH); GpioSetDirection(bt_reset, OUTPUT); //bt shdn default HIGH (nrf off) GpioSetInvert(bt_shdn, ON); GpioWrite(bt_shdn, HIGH); GpioSetDirection(bt_shdn, OUTPUT); //button setup (High if pressed) GpioSetPull(user_button, gpio_pull_up); GpioSetInvert(user_button, ON); GpioSetDirection(user_button, INPUT); // }
void BoardInitPeriph( void ) { /* Init the GPIO extender pins */ #if ( USE_POTENTIOMETER == 0 ) GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); #endif GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &Led3, LED_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &Led4, LED_4, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); // Switch LED 1, 2, 3, 4 OFF #if ( USE_POTENTIOMETER == 0 ) GpioWrite( &Led1, 0 ); #endif GpioWrite( &Led2, 0 ); GpioWrite( &Led3, 0 ); GpioWrite( &Led4, 0 ); }
void BoardInitPeriph( void ) { GpioInit( &DcDcEnable, DC_DC_EN, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); /* Init the GPIO extender pins */ GpioInit( &IrqMpl3115, IRQ_MPL3115, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &IrqMag3110, IRQ_MAG3110, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &GpsPowerEn, GPS_POWER_ON, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &RadioPushButton, RADIO_PUSH_BUTTON, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &BoardPowerDown, BOARD_POWER_DOWN, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &NcIoe5, SPARE_IO_EXT_5, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &NcIoe6, SPARE_IO_EXT_6, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &NcIoe7, SPARE_IO_EXT_7, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &NIrqSx9500, N_IRQ_SX9500, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &Irq1Mma8451, IRQ_1_MMA8451, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &Irq2Mma8451, IRQ_2_MMA8451, PIN_INPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &TxEnSx9500, TX_EN_SX9500, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 1 ); GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); GpioInit( &Led2, LED_2, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); GpioInit( &Led3, LED_3, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); GpioInit( &Led4, LED_4, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 ); // Init Temperature, pressure and altitude sensor MPL3115Init( ); // Init Accelerometer MMA8451Init( ); // Init Magnetometer MAG3110Init( ); // Init SAR SX9500Init( ); // Init GPS GpsInit( ); // Switch LED 1, 2, 3, 4 OFF GpioWrite( &Led1, 1 ); GpioWrite( &Led2, 1 ); GpioWrite( &Led3, 1 ); GpioWrite( &Led4, 1 ); }
/******************************************************************************* * PRIVATE FUNCTIONS (STATIC) ******************************************************************************/ void vApplicationIdleHook( void ) { uint32_t rollOverValue; uint8_t appState = LoRaMesh_AppStatus(); if ( appState < ACTIVE ) { rollOverValue = 100000; } else { rollOverValue = 500000; } if ( (heartBeatCntr++ % rollOverValue) == 0 ) { if ( heartBeatLedOn ) GpioWrite(&Led1, 1); else GpioWrite(&Led1, 0); heartBeatLedOn = !heartBeatLedOn; } }
void SX126xWriteCommand( RadioCommands_t command, uint8_t *buffer, uint16_t size ) { SX126xCheckDeviceReady( ); GpioWrite( &SX126x.Spi.Nss, 0 ); SpiInOut( &SX126x.Spi, ( uint8_t )command ); for( uint16_t i = 0; i < size; i++ ) { SpiInOut( &SX126x.Spi, buffer[i] ); } GpioWrite( &SX126x.Spi.Nss, 1 ); if( command != RADIO_SET_SLEEP ) { SX126xWaitOnBusy( ); } }
void SX1272SetAntSw( uint8_t rxTx ) { if( SX1272.RxTx == rxTx ) { return; } SX1272.RxTx = rxTx; if( rxTx != 0 ) // 1: TX, 0: RX { GpioWrite( &AntRx, 0 ); GpioWrite( &AntTx, 1 ); } else { GpioWrite( &AntRx, 1 ); GpioWrite( &AntTx, 0 ); } }