Added automatic number of channels initialization for ADCv2.

Implemented IRQ hooks for ADC drivers.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9741 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
Giovanni Di Sirio 2016-08-26 08:41:04 +00:00
parent 5c969f6373
commit 3262155f7d
5 changed files with 20 additions and 4 deletions

View File

@ -114,6 +114,10 @@ OSAL_IRQ_HANDLER(STM32_ADC1_HANDLER) {
adc_lld_serve_interrupt(&ADCD1);
#if defined(STM32_ADC_ADC1_IRQ_HOOK)
STM32_ADC_ADC1_IRQ_HOOK
#endif
OSAL_IRQ_EPILOGUE();
}
#endif

View File

@ -125,6 +125,9 @@ OSAL_IRQ_HANDLER(STM32_ADC_HANDLER) {
_adc_isr_error_code(&ADCD1, ADC_ERR_OVERFLOW);
}
/* TODO: Add here analog watchdog handling.*/
#if defined(STM32_ADC_ADC1_IRQ_HOOK)
STM32_ADC_ADC1_IRQ_HOOK
#endif
#endif /* STM32_ADC_USE_ADC1 */
#if STM32_ADC_USE_ADC2
@ -139,6 +142,9 @@ OSAL_IRQ_HANDLER(STM32_ADC_HANDLER) {
_adc_isr_error_code(&ADCD2, ADC_ERR_OVERFLOW);
}
/* TODO: Add here analog watchdog handling.*/
#if defined(STM32_ADC_ADC2_IRQ_HOOK)
STM32_ADC_ADC2_IRQ_HOOK
#endif
#endif /* STM32_ADC_USE_ADC2 */
#if STM32_ADC_USE_ADC3
@ -153,6 +159,9 @@ OSAL_IRQ_HANDLER(STM32_ADC_HANDLER) {
_adc_isr_error_code(&ADCD3, ADC_ERR_OVERFLOW);
}
/* TODO: Add here analog watchdog handling.*/
#if defined(STM32_ADC_ADC3_IRQ_HOOK)
STM32_ADC_ADC3_IRQ_HOOK
#endif
#endif /* STM32_ADC_USE_ADC3 */
OSAL_IRQ_EPILOGUE();
@ -341,7 +350,7 @@ void adc_lld_start_conversion(ADCDriver *adcp) {
adcp->adc->SR = 0;
adcp->adc->SMPR1 = grpp->smpr1;
adcp->adc->SMPR2 = grpp->smpr2;
adcp->adc->SQR1 = grpp->sqr1;
adcp->adc->SQR1 = grpp->sqr1 | ADC_SQR1_NUM_CH(grpp->num_channels);
adcp->adc->SQR2 = grpp->sqr2;
adcp->adc->SQR3 = grpp->sqr3;

View File

@ -313,6 +313,9 @@ static void adc_lld_serve_interrupt(ADCDriver *adcp, uint32_t isr) {
/* Analog watchdog error.*/
_adc_isr_error_code(adcp, ADC_ERR_AWD3);
}
#if defined(STM32_ADC_IRQ_HOOK)
STM32_ADC_IRQ_HOOK
#endif
}
}

View File

@ -61,7 +61,7 @@ static const ADCConversionGroup adcgrpcfg1 = {
ADC_CR2_SWSTART, /* CR2 */
ADC_SMPR1_SMP_AN11(ADC_SAMPLE_3),
0, /* SMPR2 */
ADC_SQR1_NUM_CH(ADC_GRP1_NUM_CHANNELS),
0, /* SQR1 */
0, /* SQR2 */
ADC_SQR3_SQ1_N(ADC_CHANNEL_IN11)
};
@ -81,7 +81,7 @@ static const ADCConversionGroup adcgrpcfg2 = {
ADC_SMPR1_SMP_AN12(ADC_SAMPLE_56) | ADC_SMPR1_SMP_AN11(ADC_SAMPLE_56) |
ADC_SMPR1_SMP_SENSOR(ADC_SAMPLE_144) | ADC_SMPR1_SMP_VREF(ADC_SAMPLE_144),
0, /* SMPR2 */
ADC_SQR1_NUM_CH(ADC_GRP2_NUM_CHANNELS),
0, /* SQR1 */
ADC_SQR2_SQ8_N(ADC_CHANNEL_SENSOR) | ADC_SQR2_SQ7_N(ADC_CHANNEL_VREFINT),
ADC_SQR3_SQ6_N(ADC_CHANNEL_IN12) | ADC_SQR3_SQ5_N(ADC_CHANNEL_IN11) |
ADC_SQR3_SQ4_N(ADC_CHANNEL_IN12) | ADC_SQR3_SQ3_N(ADC_CHANNEL_IN11) |

View File

@ -103,7 +103,7 @@ static const ADCConversionGroup adcgrpcfg1 = {
ADC_SMPR1_SMP_SENSOR(ADC_SAMPLE_144) |
ADC_SMPR1_SMP_VREF(ADC_SAMPLE_144), /* SMPR1 */
0, /* SMPR2 */
ADC_SQR1_NUM_CH(ADC_GRP1_NUM_CHANNELS), /* SQR1 */
0, /* SQR1 */
0, /* SQR2 */
ADC_SQR3_SQ2_N(ADC_CHANNEL_SENSOR) |
ADC_SQR3_SQ1_N(ADC_CHANNEL_VREFINT) /* SQR3 */