Beispiel #1
0
/**
 * Enable/Disable audio channels
 */
static void AudioPlayEnable(uint8_t enable)
{
    if (enable == 1) {
        TC_Start(TC0, 0);
        DACC_EnableChannel(DACC, CHANNEL_R);
        DACC_EnableChannel(DACC, CHANNEL_L);
    }
    else if (enable == 0) {
        TC_Stop(TC0, 0);
        DACC_DisableChannel(DACC, CHANNEL_R);
        DACC_DisableChannel(DACC, CHANNEL_R);
    }
}
Beispiel #2
0
void audioInit(void)
{
    PMC_EnablePeripheral(ID_PWM);
    PWMC_ConfigureClocks(0, 0, BOARD_MCK);
    PWMC_ConfigureChannel(PWM, 0, PWM_CMR_CPRE_MCK, 0, 0);
    PWMC_ConfigureEventLineMode(PWM, 0, 1);

    audioSetSample(AUDIO_NULL, DEFAULT_AUDIO_SAMPLERATE);

    PWMC_EnableChannel(PWM, 0);
    PMC_EnablePeripheral(ID_DACC);
    DACC_Initialize(DACC, ID_DACC, 1, 4, 0, 0, BOARD_MCK, 8, DACC_CHANNEL_0, 0, 16 );
    DACC_EnableChannel(DACC, DACC_CHANNEL_0);
}
Beispiel #3
0
/**
 * \brief DAC initialization.
 */
void enc_init(void)
{
	/* initialize amplitude and frequency */
    amplitude = MAX_DIGITAL * 2 / 5;
    frequency = HIJACK_CARRIER_FREQ_CONF;

    /*10 us timer*/
    SysTick_Config( BOARD_MCK / (frequency * SAMPLES) ) ;
	//_ConfigureTc0( HIJACK_CARRIER_FREQ_8KHZ );
	//TC_Start( TC0, 0 ) ;
	
    /* Initialize DACC */
    DACC_Initialize( DACC,
                    ID_DACC,
                    0, /* Hardware triggers are disabled */
                    0, /* External trigger */
                    0, /* Half-Word Transfer */
                    0, /* Normal Mode (not sleep mode) */
                    BOARD_MCK,
                    8, /* refresh period */
                    0, /* Channel 0 selection */
                    0, /* Tag Selection Mode disabled */
                    16 /*  value of the start up time */);

	/* enable NVIC_DACC. */
	NVIC_EnableIRQ( DACC_IRQn ) ;
	NVIC_SetPriority(DACC_IRQn, 5);
	
	/* variable initial. */
	enc.data = 0;
	enc.state = Waiting;
	enc.cur = SET;
	enc.factor = Div1;
	enc.reverse = 0;
	ticker = 0;
	index_sample = 0;
	
	/*Enable  channel for potentiometer*/
    DACC_EnableChannel( DACC, DACC_channel_sine ) ;

    /*initialize the DACC_CDR*/
    DACC_SetConversionData( DACC,sine_data[90]*amplitude/(MAX_DIGITAL/2)+MAX_DIGITAL/2);
	 DACC->DACC_IER = DACC_IER_EOC;	//Enable DACC end-of-convertion interrupt
}
Beispiel #4
0
void stepper_init(void) {
	Pin pins_stepper[] = {PINS_STEPPER};
	PIO_Configure(pins_stepper, PIO_LISTSIZE(pins_stepper));

	Pin stepper_power_management_pins[] = {VOLTAGE_STACK_PIN,
	                                       VOLTAGE_EXTERN_PIN,
	                                       VOLTAGE_STACK_SWITCH_PIN,
	                                       STEPPER_CURRENT_PIN};
	PIO_Configure(stepper_power_management_pins,
	              PIO_LISTSIZE(stepper_power_management_pins));

	// Initialize and enable DACC to set VREF and DECAY pins
    DACC_Initialize(DACC,
                    ID_DACC,
                    0, // Hardware triggers are disabled
                    0, // External trigger
                    0, // Half-Word Transfer
                    0, // Normal Mode (not sleep mode)
                    BOARD_MCK,
                    1, // refresh period
                    0, // Channel 0 selection
                    1, // Tag Selection Mode enabled
                    16); //  value of the start up time
    DACC_EnableChannel(DACC, VREF_CHANNEL);
    DACC_EnableChannel(DACC, DECAY_CHANNEL);


    // Enable peripheral clock for TC
    PMC->PMC_PCER0 = 1 << ID_TC0;

    // Configure and enable TC interrupts
	NVIC_DisableIRQ(TC0_IRQn);
	NVIC_ClearPendingIRQ(TC0_IRQn);
	NVIC_SetPriority(TC0_IRQn, PRIORITY_STEPPER_TC0);
	NVIC_EnableIRQ(TC0_IRQn);

	tc_channel_init(&STEPPER_TC_CHANNEL,
	                TC_CMR_TCCLKS_TIMER_CLOCK5 | TC_CMR_CPCTRG);

    // Interrupt in compare
    tc_channel_interrupt_set(&STEPPER_TC_CHANNEL, TC_IER_CPCS);

    PMC->PMC_PCER0 = 1 << ID_TC1;
	tc_channel_init(&SINGLE_SHOT_TC_CHANNEL,
	                TC_CMR_WAVE |
	                TC_CMR_TCCLKS_TIMER_CLOCK4 |
	                TC_CMR_EEVT_XC0 |
	                TC_CMR_ASWTRG_SET |
	                TC_CMR_ACPC_CLEAR |
	                TC_CMR_WAVSEL_UP |
	                TC_CMR_CPCDIS |
	                TC_CMR_CPCSTOP);

	SINGLE_SHOT_COUNTER = 1;
	tc_channel_start(&SINGLE_SHOT_TC_CHANNEL);

    stepper_set_output_current(VREF_DEFAULT_CURRENT);
    stepper_set_step_mode(STEP_MODE_EIGTH);
    stepper_set_decay(DECAY_DEFAULT_VALUE);

	adc_channel_enable(VOLTAGE_EXTERN_CHANNEL);
	adc_channel_enable(VOLTAGE_STACK_CHANNEL);
	adc_channel_enable(STEPPER_CURRENT_CHANNEL);
}