Content originally posted in LPCWare by lucamini on Mon Oct 06 07:58:23 MST 2014
I'm searching for the issue in the subject.
I lost the debug usage when my LPC1517 executes this routine, but I'm unable to find which is the problem because no one pins is the debug one (SWD interface):
The routine is:
void Board_analInputInit(void)
{
/* Setup ADC for 12-bit mode and normal power */
Chip_ADC_Init(LPC_ADC0, 0);
/* Setup for maximum ADC clock rate */
Chip_ADC_SetClockRate(LPC_ADC0, ADC_MAX_SAMPLE_RATE);
/* For ADC0, sequencer A will be used without threshold events.
It will be triggered manually by the sysTick interrupt and
only monitor the internal temperature sensor. */
Chip_ADC_SetupSequencer(LPC_ADC0, ADC_SEQA_IDX, ( ADC_SEQ_CTRL_CHANSEL(0) | ADC_SEQ_CTRL_CHANSEL(1) | ADC_SEQ_CTRL_CHANSEL(2) | ADC_SEQ_CTRL_CHANSEL(3) | ADC_SEQ_CTRL_CHANSEL(4) | ADC_SEQ_CTRL_CHANSEL(5) | ADC_SEQ_CTRL_CHANSEL(6) | ADC_SEQ_CTRL_CHANSEL(7) | ADC_SEQ_CTRL_CHANSEL(10) |
ADC_SEQ_CTRL_MODE_EOS));
/* Disables pullups/pulldowns and disable digital mode */
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 0, IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_ADMODE_EN);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 1, IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_ADMODE_EN);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 2, IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_ADMODE_EN);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 3, IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_ADMODE_EN);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 4, IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_ADMODE_EN);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 5, IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_ADMODE_EN);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 6, IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_ADMODE_EN);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 7, IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_ADMODE_EN);
Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 8, IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_ADMODE_EN); // power ctrl
/* Use higher voltage trim for both ADCs */
Chip_ADC_SetTrim(LPC_ADC0, ADC_TRIM_VRANGE_HIGHV);
Chip_SWM_EnableFixedPin(SWM_FIXED_ADC0_0);// pwr ctrl
Chip_SWM_EnableFixedPin(SWM_FIXED_ADC0_1);
Chip_SWM_EnableFixedPin(SWM_FIXED_ADC0_2);
Chip_SWM_EnableFixedPin(SWM_FIXED_ADC0_3);
Chip_SWM_EnableFixedPin(SWM_FIXED_ADC0_4);
Chip_SWM_EnableFixedPin(SWM_FIXED_ADC0_5);
Chip_SWM_EnableFixedPin(SWM_FIXED_ADC0_6);
Chip_SWM_EnableFixedPin(SWM_FIXED_ADC0_7);
Chip_SWM_EnableFixedPin(SWM_FIXED_ADC0_10);
/* Need to do a calibration after initialization and trim */
Chip_ADC_StartCalibration(LPC_ADC0);
while (!(Chip_ADC_IsCalibrationDone(LPC_ADC0)))
{
}
/* Clear all pending interrupts */
Chip_ADC_ClearFlags(LPC_ADC0, Chip_ADC_GetFlags(LPC_ADC0));
/* Enable sequence A completion interrupts for ADC0 */
Chip_ADC_EnableInt(LPC_ADC0, ADC_INTEN_SEQA_ENABLE);
/* Enable related ADC NVIC interrupts */
NVIC_EnableIRQ(ADC0_SEQA_IRQn);
/* Enable sequencers */
Chip_ADC_EnableSequencer(LPC_ADC0, ADC_SEQA_IDX);
}
Thanks,
Luca