Fixed Bug #803
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/stable_16.1.x@9993 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
ad1a07d42a
commit
0293e7adc2
|
@ -249,24 +249,21 @@ void dac_lld_start(DACDriver *dacp) {
|
||||||
channel = 1;
|
channel = 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* Copying user configuration into cr */
|
|
||||||
dacp->params->dac->CR = dacp->config->cr;
|
|
||||||
|
|
||||||
/* Enabling DAC in SW triggering mode initially, initializing data to
|
/* Enabling DAC in SW triggering mode initially, initializing data to
|
||||||
zero.*/
|
zero.*/
|
||||||
#if STM32_DAC_DUAL_MODE == FALSE
|
#if STM32_DAC_DUAL_MODE == FALSE
|
||||||
dacp->params->dac->CR &= dacp->params->regmask;
|
dacp->params->dac->CR &= dacp->params->regmask;
|
||||||
dacp->params->dac->CR |= DAC_CR_EN1 << dacp->params->regshift;
|
dacp->params->dac->CR |= (DAC_CR_EN1 | dacp->config->cr) << dacp->params->regshift;
|
||||||
dac_lld_put_channel(dacp, channel, dacp->config->init);
|
dac_lld_put_channel(dacp, channel, dacp->config->init);
|
||||||
#else
|
#else
|
||||||
if ((dacp->config->datamode == DAC_DHRM_12BIT_RIGHT_DUAL) ||
|
if ((dacp->config->datamode == DAC_DHRM_12BIT_RIGHT_DUAL) ||
|
||||||
(dacp->config->datamode == DAC_DHRM_12BIT_LEFT_DUAL) ||
|
(dacp->config->datamode == DAC_DHRM_12BIT_LEFT_DUAL) ||
|
||||||
(dacp->config->datamode == DAC_DHRM_8BIT_RIGHT_DUAL)) {
|
(dacp->config->datamode == DAC_DHRM_8BIT_RIGHT_DUAL)) {
|
||||||
dacp->params->dac->CR = DAC_CR_EN2 | DAC_CR_EN1;
|
dacp->params->dac->CR = DAC_CR_EN2 | (dacp->config->cr << 16) | DAC_CR_EN1 | dacp->config->cr;
|
||||||
dac_lld_put_channel(dacp, 1U, dacp->config->init);
|
dac_lld_put_channel(dacp, 1U, dacp->config->init);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dacp->params->dac->CR = DAC_CR_EN1;
|
dacp->params->dac->CR = DAC_CR_EN1 | dacp->config->cr;
|
||||||
}
|
}
|
||||||
dac_lld_put_channel(dacp, channel, dacp->config->init);
|
dac_lld_put_channel(dacp, channel, dacp->config->init);
|
||||||
#endif
|
#endif
|
||||||
|
@ -492,13 +489,13 @@ void dac_lld_start_conversion(DACDriver *dacp) {
|
||||||
|
|
||||||
/* DAC configuration.*/
|
/* DAC configuration.*/
|
||||||
#if STM32_DAC_DUAL_MODE == FALSE
|
#if STM32_DAC_DUAL_MODE == FALSE
|
||||||
cr = DAC_CR_DMAEN1 | (dacp->grpp->trigger << 3) | DAC_CR_TEN1 | DAC_CR_EN1;
|
cr = DAC_CR_DMAEN1 | (dacp->grpp->trigger << 3) | DAC_CR_TEN1 | DAC_CR_EN1 | dacp->config->cr;
|
||||||
dacp->params->dac->CR &= dacp->params->regmask;
|
dacp->params->dac->CR &= dacp->params->regmask;
|
||||||
dacp->params->dac->CR |= cr << dacp->params->regshift;
|
dacp->params->dac->CR |= cr << dacp->params->regshift;
|
||||||
#else
|
#else
|
||||||
dacp->params->dac->CR = 0;
|
dacp->params->dac->CR = 0;
|
||||||
cr = DAC_CR_DMAEN1 | (dacp->grpp->trigger << 3) | DAC_CR_TEN1 | DAC_CR_EN1
|
cr = DAC_CR_DMAEN1 | (dacp->grpp->trigger << 3) | DAC_CR_TEN1 | DAC_CR_EN1 | dacp->config->cr
|
||||||
| (dacp->grpp->trigger << 19) | DAC_CR_TEN2 | DAC_CR_EN2;
|
| (dacp->grpp->trigger << 19) | DAC_CR_TEN2 | DAC_CR_EN2 | (dacp->config->cr << 16);
|
||||||
dacp->params->dac->CR = cr;
|
dacp->params->dac->CR = cr;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -521,15 +518,15 @@ void dac_lld_stop_conversion(DACDriver *dacp) {
|
||||||
|
|
||||||
#if STM32_DAC_DUAL_MODE == FALSE
|
#if STM32_DAC_DUAL_MODE == FALSE
|
||||||
dacp->params->dac->CR &= dacp->params->regmask;
|
dacp->params->dac->CR &= dacp->params->regmask;
|
||||||
dacp->params->dac->CR |= DAC_CR_EN1 << dacp->params->regshift;
|
dacp->params->dac->CR |= (DAC_CR_EN1 | dacp->config->cr) << dacp->params->regshift;
|
||||||
#else
|
#else
|
||||||
if ((dacp->config->datamode == DAC_DHRM_12BIT_RIGHT_DUAL) ||
|
if ((dacp->config->datamode == DAC_DHRM_12BIT_RIGHT_DUAL) ||
|
||||||
(dacp->config->datamode == DAC_DHRM_12BIT_LEFT_DUAL) ||
|
(dacp->config->datamode == DAC_DHRM_12BIT_LEFT_DUAL) ||
|
||||||
(dacp->config->datamode == DAC_DHRM_8BIT_RIGHT_DUAL)) {
|
(dacp->config->datamode == DAC_DHRM_8BIT_RIGHT_DUAL)) {
|
||||||
dacp->params->dac->CR = DAC_CR_EN2 | DAC_CR_EN1;
|
dacp->params->dac->CR = DAC_CR_EN2 | (dacp->config->cr << 16) | DAC_CR_EN1 | dacp->config->cr;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dacp->params->dac->CR = DAC_CR_EN1;
|
dacp->params->dac->CR = DAC_CR_EN1 | dacp->config->cr;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -374,7 +374,7 @@ typedef struct {
|
||||||
/**
|
/**
|
||||||
* @brief DAC control register.
|
* @brief DAC control register.
|
||||||
*/
|
*/
|
||||||
uint32_t cr;
|
uint16_t cr;
|
||||||
} DACConfig;
|
} DACConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue