Part Number: MSP-EXP430FR5994
Tool/software: Code Composer Studio
Hi, i need some help with my code, i've configured the ADC and the TA1 modules so that the ADC conversion is triggered by the TA1, but it seems to be wrong, the TA1 interrupt works just fine, but the ADC is not been triggered.
for the ADC:
//Configuro pin para ADC
GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P1,GPIO_PIN2,GPIO_TERNARY_MODULE_FUNCTION);
//Parametros de configuracion
ADC12_B_initParam initParam = {0};
initParam.sampleHoldSignalSourceSelect = ADC12_B_SAMPLEHOLDSOURCE_4; //Disparo por TIMER A1 CCR1
initParam.clockSourceSelect = ADC12_B_CLOCKSOURCE_ADC12OSC;
initParam.clockSourceDivider = ADC12_B_CLOCKDIVIDER_1;
initParam.clockSourcePredivider = ADC12_B_CLOCKPREDIVIDER__1;
initParam.internalChannelMap = ADC12_B_NOINTCH;
ADC12_B_init(ADC12_B_BASE, &initParam);
//Activo ADC_12 para inicializacion
ADC12_B_enable(ADC12_B_BASE);
ADC12_B_setupSamplingTimer(ADC12_B_BASE,ADC12_B_CYCLEHOLD_16_CYCLES,ADC12_B_CYCLEHOLD_4_CYCLES,ADC12_B_MULTIPLESAMPLESDISABLE);
//Configuracion de ADCMEM
ADC12_B_configureMemoryParam configureMemoryParam = {0};
configureMemoryParam.memoryBufferControlIndex = ADC12_B_MEMORY_0;
configureMemoryParam.inputSourceSelect = ADC12_B_INPUT_A2;
configureMemoryParam.refVoltageSourceSelect = ADC12_B_VREFPOS_AVCC_VREFNEG_VSS;
configureMemoryParam.endOfSequence = ADC12_B_NOTENDOFSEQUENCE;
configureMemoryParam.windowComparatorSelect = ADC12_B_WINDOW_COMPARATOR_DISABLE;
configureMemoryParam.differentialModeSelect = ADC12_B_DIFFERENTIAL_MODE_DISABLE;
ADC12_B_configureMemory(ADC12_B_BASE, &configureMemoryParam);
ADC12_B_clearInterrupt(ADC12_B_BASE,0,ADC12_B_IFG0);
//Interrupcion para ADC
//ADC12_B_enableInterrupt(ADC12_B_BASE,ADC12_B_IE0,0,0);
//Configuro DMA para ADC
DMA_initParam param = {0};
param.channelSelect = DMA_CHANNEL_0;
param.transferModeSelect = DMA_TRANSFER_SINGLE;
param.transferSize = 10;
param.triggerSourceSelect = DMA_TRIGGERSOURCE_26; //ADC
param.transferUnitSelect = DMA_SIZE_SRCWORD_DSTWORD;
param.triggerTypeSelect = DMA_TRIGGER_RISINGEDGE;
DMA_init(¶m);
MemADC=ADC12_B_getMemoryAddressForDMA (ADC12_B_BASE,ADC12_B_MEMORY_0);
DMA_setSrcAddress(DMA_CHANNEL_0,MemADC,DMA_DIRECTION_UNCHANGED);
DMA_setDstAddress(DMA_CHANNEL_0,&ADCval,DMA_DIRECTION_INCREMENT);
DMA_enableTransfers(DMA_CHANNEL_0);
for the Timer A1 and CCR1
//Configuro TIMER A0 PARA QUE DISPARE MUESTREO
Timer_A_initContinuousModeParam initContParam = {0};
initContParam.clockSource = TIMER_A_CLOCKSOURCE_ACLK; //CLK=32.745Khz
initContParam.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_1;
initContParam.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_DISABLE;
initContParam.timerClear = TIMER_A_DO_CLEAR;
initContParam.startTimer = false;
Timer_A_initContinuousMode(TIMER_A1_BASE, &initContParam);
//Initiaze compare mode
Timer_A_clearCaptureCompareInterrupt(TIMER_A1_BASE,TIMER_A_CAPTURECOMPARE_REGISTER_1);
Timer_A_initCompareModeParam initCompParam = {0};
initCompParam.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_1;
initCompParam.compareInterruptEnable = TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE;
initCompParam.compareOutputMode = TIMER_A_OUTPUTMODE_OUTBITVALUE;
initCompParam.compareValue = 64;
Timer_A_initCompareMode(TIMER_A1_BASE, &initCompParam);
Timer_A_startCounter( TIMER_A1_BASE,TIMER_A_CONTINUOUS_MODE);