[Taranis] No more audio freeze!

This commit is contained in:
Bertrand Songis
2014-01-05 13:57:11 +01:00
committed by Andre Bernet
parent 499092b479
commit 0f242f5565
2 changed files with 5 additions and 1 deletions
+2 -1
View File
@@ -325,8 +325,9 @@ void AudioQueue::pushBuffer(AudioBuffer *buffer)
{
buffer->state = AUDIO_BUFFER_FILLED;
if (dacQueue(buffer))
if (dacQueue(buffer)) {
buffer->state = AUDIO_BUFFER_PLAYING;
}
bufferWIdx = nextBufferIdx(bufferWIdx);
}
+3
View File
@@ -95,8 +95,10 @@ void dacInit()
bool dacQueue(AudioBuffer *buffer)
{
__disable_irq();
if (dacIdle) {
dacIdle = false;
__enable_irq();
DMA1_Stream5->CR &= ~DMA_SxCR_EN ; // Disable DMA channel
DMA1->HIFCR = DMA_HIFCR_CTCIF5 | DMA_HIFCR_CHTIF5 | DMA_HIFCR_CTEIF5 | DMA_HIFCR_CDMEIF5 | DMA_HIFCR_CFEIF5 ; // Write ones to clear bits
DMA1_Stream5->M0AR = CONVERT_PTR(buffer->data);
@@ -107,6 +109,7 @@ bool dacQueue(AudioBuffer *buffer)
return true;
}
else {
__enable_irq();
return false;
}
}