Gast
#3922246
Hallo,
ich habe eine Frage bezüglich dem AD-Wanlder vom MCB4300-Controller.
Der Controller hat zwei AD-Wandler (AD0 und AD1 mit je 8 Kanälen).
Und zwar wenn ich nur den AD0-Wandler - Channel 0 programmiere,
funktioniert es einwandfrei.
Jedoch möchte ich den AD0-Wandler - Channel 1 zeitgleich nutzen bzw.
überhaupt nutzen können.
Hat jemand eventuell eine Ahnung wie man das realisieren kann oder
eventuell eine Erfahrungen mit dem AD-Wandler vom MCB4300?
Ich bin noch neu in dieser Sache und bräuchte Hilfe in dieser
Angelegenheit.
Das sind die verwendeten Funktionen:
int32_t ADC_Initialize (void) {
/* Enable ADC0 clock */
LPC_CCU1->CLK_APB3_ADC0_CFG = CCU_CLK_CFG_AUTO | CCU_CLK_CFG_RUN;
while (!(LPC_CCU1->CLK_APB3_ADC0_STAT & CCU_CLK_STAT_RUN));
/* Configure ADC0_0 */
LPC_ADC0->CR = (1 << 1) | /* Select ADC0_1 pin for
conversion */
(2 << 8) | /* 12MHz / (2+1) = 4MHz */
(1 << 21) ; /* ADC is operational */
return 0;
}
int32_t ADC_StartConversion (void) {
LPC_ADC0->CR |= (1 << 24); /* Start conversion */
return 0;
}
int32_t ADC_GetValue (void) {
if (AD_done) {
AD_done = 0;
return AD_last;
}
return -1;
}
void ADC0_IRQHandler (void) {
LPC_ADC0->GDR; /* Clear IRQ request flag */
AD_last = (LPC_ADC0->DR[1] >> 6) & 0x3FF; /* Read value and clear IRQ
*/
AD_done = 1;
}