/** * 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); } }
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); }
/** * \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 }
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); }