Имеем STM8S105. Есть необходимость считать несколько каналов ADC, конкретно AIN2, AIN3, AIN4, AIN5.
в main.c пишу:
Код: Выделить всё
ADC1_DeInit();
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_SCHMITTTRIG_CHANNEL5, ADC1_PRESSEL_FCPU_D8, ADC1_EXTTRIG_GPIO, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_ALL, DISABLE);
ADC1_ITConfig(ADC1_IT_EOCIE ,ENABLE);
ADC1_DataBufferCmd(ENABLE);
ADC1_Cmd(ENABLE);
ADC1_ScanModeCmd(ENABLE);
ADC1_StartConversion();
enableInterrupts();
в stm8s_it.c
Код: Выделить всё
INTERRUPT_HANDLER(ADC1_IRQHandler, 22)
{
adc1_0=ADC1_GetBufferValue(ADC1_CHANNEL_0);
adc1_1=ADC1_GetBufferValue(ADC1_CHANNEL_1);
adc1_2=ADC1_GetBufferValue(ADC1_CHANNEL_2);
adc1_3=ADC1_GetBufferValue(ADC1_CHANNEL_3);
adc1_4=ADC1_GetBufferValue(ADC1_CHANNEL_4);
adc1_5=ADC1_GetBufferValue(ADC1_CHANNEL_5);
ADC1_ClearITPendingBit(ADC1_IT_EOC);
}
Не считывается AIN5, до него все ОК, 5 нет!
в main.c делаю замену ADC1_PRESSEL_FCPU_D8 -> ADC1_PRESSEL_FCPU_D6 - могу читать и 5 канал?!
Путем несложный переборов выяснил, что AIN5 читается при ADC1_PRESSEL_FCPU_D3 и ADC1_PRESSEL_FCPU_D6, во всех остальных случаях нет.
Собственно вопрос - почему так?!
