/** **************************************************************************************** * @brief Set analog comparator wakeup * @param[in] acmpch enum ACMP_CH * @param[in] callback Callback function pointer, which is called in IRQHandler. * @description * This function is used to set MCU wakeup by analog comparator. ***************************************************************************************** */ void wakeup_by_analog_comparator(enum ACMP_CH acmpch, void (*callback)(void)) { if (sleep_env.wakeup_by_sleeptimer == 0) { // Disable sleep timer wakeup syscon_SetPGCR2WithMask(QN_SYSCON, SYSCON_MASK_OSC_WAKEUP_EN, MASK_DISABLE); } if (acmpch == ACMP0) { analog_pin_enable(AIN0, MASK_ENABLE); } else { analog_pin_enable(AIN2, MASK_ENABLE); } comparator_init(acmpch, VDD_8, ACMPO_0_GEN_INT, callback); }
int main (void) { SystemInit(); #if ACMP_TEST == TRUE // -------------------------------------------- // analog comparator // -------------------------------------------- acmp_io_config(); #if CONFIG_ENABLE_DRIVER_ACMP0==TRUE analog_pin_enable(AIN0, MASK_ENABLE); analog_pin_enable(AIN1, MASK_ENABLE); acmp0_done = 0; // comparator0 test //comparator_init(ACMP0, VDD_1, ACMPO_0_GEN_INT, acmp0_test_cb); //comparator_init(ACMP0, VDD_8, ACMPO_1_GEN_INT, acmp0_test_cb); //comparator_init(ACMP0, VDD_15, ACMPO_0_GEN_INT, acmp0_test_cb); comparator_init(ACMP0, EXT_REF, ACMPO_1_GEN_INT, acmp0_test_cb); while (acmp0_done == 0); #endif #if CONFIG_ENABLE_DRIVER_ACMP1==TRUE analog_pin_enable(AIN2, MASK_ENABLE); analog_pin_enable(AIN3, MASK_ENABLE); acmp1_done = 0; // comparator1 test //comparator_init(ACMP1, VDD_1, ACMPO_0_GEN_INT, acmp1_test_cb); comparator_init(ACMP1, VDD_8, ACMPO_0_GEN_INT, acmp1_test_cb); //comparator_init(ACMP1, VDD_15, ACMPO_0_GEN_INT, acmp1_test_cb); while (acmp1_done == 0); #endif #endif #if RF_SWEEP_TEST == TRUE // -------------------------------------------- // analog RF // -------------------------------------------- int mask = SYSCON_MASK_DIS_REF_PLL | SYSCON_MASK_DIS_LO_VCO | SYSCON_MASK_DIS_LO_PLL | SYSCON_MASK_DIS_PA; syscon_SetPGCR1WithMask(QN_SYSCON, mask, MASK_DISABLE); rf_enable(RF_TX, MASK_ENABLE, MASK_ENABLE, 0x1F); rf_tx_power_level_set(TX_GAIN_LEVLE10); for (int i = 0; i < 40; i++) { rf_set_freq(RF_TX, i); delay(10000); } #endif while (1) /* Loop forever */ { } }