Header files are already included in your IDE. To update ADC_MR register use the ADC instance:
ADC->ADC_MR = .....;
Here is an example code to trigger ADC conversions with a 3 KHz frequency:
void setup()
{
adc_setup();
tc_setup();
}
void loop()
{
}
/************* Configure ADC function *******************/
void adc_setup() {
PMC->PMC_PCER1 |= PMC_PCER1_PID37; // ADC power on
ADC->ADC_CR = ADC_CR_SWRST; // Reset ADC
ADC->ADC_MR |= ADC_MR_TRGEN_EN // Hardware trigger select
| ADC_MR_TRGSEL_ADC_TRIG3; // Trigger by TIOA2
ADC->ADC_CHER = ADC_CHER_CH7; // Enable ADC CH7 = A0
}
/************* Timer Counter 0 Channel 2 to generate PWM pulses thru TIOA2 ************/
void tc_setup() {
PMC->PMC_PCER0 |= PMC_PCER0_PID29; // TC2 power ON : Timer Counter 0 channel 2 IS TC2
TC0->TC_CHANNEL[2].TC_CMR = TC_CMR_TCCLKS_TIMER_CLOCK3 // MCK/32, clk on rising edge
| TC_CMR_WAVE // Waveform mode
| TC_CMR_WAVSEL_UP_RC // UP mode with automatic trigger on RC Compare
| TC_CMR_ACPA_CLEAR // Clear TIOA2 on RA compare match
| TC_CMR_ACPC_SET; // Set TIOA2 on RC compare match
TC0->TC_CHANNEL[2].TC_RC = 875; //<********************* Frequency = (Mck/32)/TC_RC Hz = 3 KHz
TC0->TC_CHANNEL[2].TC_RA = 400; //<******************** Any Duty cycle in between 1 and 874
TC0->TC_CHANNEL[2].TC_CCR = TC_CCR_SWTRG | TC_CCR_CLKEN; // Software trigger TC2 counter and enable
}