mirror of
https://github.com/jhbruhn/eurorack.git
synced 2025-03-15 02:55:49 +00:00
stereo_mix: adc groups
This commit is contained in:
parent
25160b3c54
commit
765de98f39
3 changed files with 15 additions and 28 deletions
|
@ -73,7 +73,6 @@ void Adc::Init()
|
|||
sConfig.Channel = ADC_CHANNEL_8;
|
||||
HAL_ADC_ConfigChannel(&adc, &sConfig);
|
||||
|
||||
|
||||
dma.Init.Direction = DMA_PERIPH_TO_MEMORY;
|
||||
dma.Init.PeriphInc = DMA_PINC_DISABLE;
|
||||
dma.Init.MemInc = DMA_MINC_ENABLE;
|
||||
|
@ -88,13 +87,7 @@ void Adc::Init()
|
|||
HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
|
||||
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
|
||||
|
||||
/*NVIC_InitTypeDef NVIC_InitStructure;
|
||||
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;
|
||||
NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
*/
|
||||
HAL_ADC_Start_DMA(&adc, (uint32_t*)values_, ADC_CHANNEL_NUM_DIRECT);
|
||||
HAL_ADC_Start_DMA(&adc, (uint32_t*)values_, ADC_CHANNEL_LAST);
|
||||
}
|
||||
|
||||
void Adc::DeInit()
|
||||
|
@ -104,16 +97,16 @@ void Adc::DeInit()
|
|||
|
||||
void Adc::OnDMATransferComplete()
|
||||
{
|
||||
this->values_[ADC_CHANNEL_FIRST_MUXED + this->mux_index_] = this->values_[ADC_CHANNEL_MUX];
|
||||
this->values_[ADC_GROUP_POT + this->mux_index_] = this->values_[ADC_CHANNEL_MUX];
|
||||
|
||||
this->mux_index_ = (this->mux_index_ + 1) % ADC_CHANNEL_NUM_MUXED;
|
||||
this->mux_index_ = (this->mux_index_ + 1) % (ADC_CHANNEL_LAST - 1);
|
||||
uint8_t address = this->mux_index_;
|
||||
|
||||
// Write the mux address.
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, static_cast<GPIO_PinState>(address & 1));
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, static_cast<GPIO_PinState>(address & 2));
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, static_cast<GPIO_PinState>(address & 4));
|
||||
HAL_ADC_Start_DMA(&adc, (uint32_t*)values_, ADC_CHANNEL_NUM_DIRECT);
|
||||
HAL_ADC_Start_DMA(&adc, (uint32_t*)values_, ADC_CHANNEL_LAST);
|
||||
}
|
||||
|
||||
} // namespace rings
|
||||
|
|
|
@ -16,22 +16,16 @@ enum AdcChannel {
|
|||
ADC_CHANNEL_CV_PAN_3,
|
||||
ADC_CHANNEL_CV_PAN_4,
|
||||
ADC_CHANNEL_MUX,
|
||||
ADC_CHANNEL_POT_VOL_1,
|
||||
ADC_CHANNEL_POT_VOL_2,
|
||||
ADC_CHANNEL_POT_VOL_3,
|
||||
ADC_CHANNEL_POT_VOL_4,
|
||||
ADC_CHANNEL_POT_PAN_1,
|
||||
ADC_CHANNEL_POT_PAN_2,
|
||||
ADC_CHANNEL_POT_PAN_3,
|
||||
ADC_CHANNEL_POT_PAN_4,
|
||||
ADC_CHANNEL_LAST,
|
||||
|
||||
ADC_CHANNEL_FIRST_DIRECT = ADC_CHANNEL_CV_PAN_4,
|
||||
ADC_CHANNEL_LAST_DIRECT = ADC_CHANNEL_MUX,
|
||||
ADC_CHANNEL_FIRST_MUXED = ADC_CHANNEL_POT_VOL_1,
|
||||
ADC_CHANNEL_LAST_MUXED = ADC_CHANNEL_POT_PAN_4,
|
||||
ADC_CHANNEL_NUM_DIRECT = ADC_CHANNEL_MUX + 1,
|
||||
ADC_CHANNEL_NUM_MUXED = ADC_CHANNEL_LAST - ADC_CHANNEL_FIRST_MUXED,
|
||||
ADC_CHANNEL_COUNT = (ADC_CHANNEL_LAST * 2) - 1
|
||||
};
|
||||
|
||||
enum AdcGroup {
|
||||
ADC_GROUP_CV = 0,
|
||||
ADC_GROUP_POT = ADC_CHANNEL_LAST,
|
||||
|
||||
ADC_GROUP_COUNT
|
||||
};
|
||||
|
||||
class Adc {
|
||||
|
@ -55,7 +49,7 @@ class Adc {
|
|||
ADC_HandleTypeDef adc;
|
||||
|
||||
private:
|
||||
uint16_t values_[ADC_CHANNEL_LAST];
|
||||
uint16_t values_[ADC_CHANNEL_COUNT];
|
||||
uint8_t mux_index_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(Adc);
|
||||
|
|
|
@ -115,8 +115,8 @@ int main(void)
|
|||
uint32_t value_l;
|
||||
uint32_t value_r;
|
||||
|
||||
uint16_t pan_pot = adc.value(ADC_CHANNEL_POT_PAN_1 + i) >> (16 - 12); // adc is only 12 bit anyways
|
||||
uint16_t vol_pot = adc.value(ADC_CHANNEL_POT_VOL_1 + i) >> (16 - 12);
|
||||
uint16_t pan_pot = adc.value(ADC_GROUP_POT + i) >> (16 - 12); // adc is only 12 bit anyways
|
||||
uint16_t vol_pot = adc.value(ADC_GROUP_CV + i) >> (16 - 12);
|
||||
int16_t pan_cv = (adc.value(ADC_CHANNEL_CV_PAN_1 + i) - 32768) >> (16 - 12);
|
||||
uint16_t vol_cv = adc.value(ADC_CHANNEL_CV_VOL_1 + i) >> (16 - 12);
|
||||
int32_t pan = pan_pot + pan_cv;
|
||||
|
|
Loading…
Reference in a new issue