Ejemplo n.º 1
0
/**
 ****************************************************************************************
 * @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);
}
Ejemplo n.º 2
0
void pal_startTimers(void) {
	// Initialize the hardware to drive the
	// signal processing layers.
	ctimer_set_callback(pal_captureTimerFn);

	comparator_enablePin(LEFT_PORT, LEFT_PIN);
	comparator_enablePin(VREF_PORT, VREF_PIN);

	comparator_init();
	comparator_setup(
		comparator_getChannel(LEFT_PORT, LEFT_PIN),
		comparator_getChannel(VREF_PORT, VREF_PIN)
	);
	comparator_on();

	ctimer_init();
	ptimer_init();

	ptimer_start(TIMER_TICKS, pal_periodicTimerFn);
	// Wait 100ms for everything to stabalize.
	//util_delayMs(100);
}
Ejemplo n.º 3
0
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 */
    {

    }
}