1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| #include "driverlib.h" #include "device.h"
volatile uint16_t adc_result = 0;
__interrupt void adcA1ISR(void) { adc_result = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER0); ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1); Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1); }
void EPWM1_Init_ADCTrigger(void) { EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_UP); EPWM_setClockPrescaler(EPWM1_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1); EPWM_setTimeBasePeriod(EPWM1_BASE, 5000);
EPWM_setADCTriggerSource(EPWM1_BASE, EPWM_SOC_A, EPWM_SOC_TBCTR_ZERO); EPWM_setADCTriggerEventPrescale(EPWM1_BASE, EPWM_SOC_A, 1); EPWM_enableADCTrigger(EPWM1_BASE, EPWM_SOC_A); }
void ADCA_Init_EPWMTrigger(void) { ADC_setPrescaler(ADCA_BASE, ADC_CLK_DIV_4_0); ADC_setMode(ADCA_BASE, ADC_RESOLUTION_12BIT, ADC_MODE_SINGLE_ENDED); ADC_enableConverter(ADCA_BASE); DEVICE_DELAY_US(1000);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_EPWM1_SOCA, ADC_CH_ADCIN0, 15);
ADC_setInterruptSource(ADCA_BASE, ADC_INT_NUMBER1, ADC_SOC_NUMBER0); ADC_enableInterrupt(ADCA_BASE, ADC_INT_NUMBER1); ADC_enableContinuousMode(ADCA_BASE, ADC_INT_NUMBER1); }
void main(void) { Device_init(); Device_initGPIO();
Interrupt_initModule(); Interrupt_initVectorTable();
EPWM1_Init_ADCTrigger(); ADCA_Init_EPWMTrigger();
Interrupt_register(INT_ADCA1, &adcA1ISR); Interrupt_enable(INT_ADCA1);
EINT; ERTM;
while(1) { } }
|