1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-25 17:25:13 +03:00

companion9x compilation

This commit is contained in:
bsongis 2012-06-26 12:30:46 +00:00
parent 7911dd927f
commit d46c65c8fd
3 changed files with 33 additions and 20 deletions

View file

@ -73,6 +73,7 @@ void audioTimerHandle(void)
// TODO Should be here! // TODO Should be here!
extern uint16_t Sine_values[]; extern uint16_t Sine_values[];
#define WAV_HEADER_SIZE 36
void audioTask(void* pdata) void audioTask(void* pdata)
{ {
@ -88,26 +89,35 @@ void audioTask(void* pdata)
#ifndef SIMU #ifndef SIMU
if (toneWavFile[0]) { if (toneWavFile[0]) {
FRESULT result = FR_OK; FRESULT result = FR_OK;
UINT read;
uint16_t bufsize = 2*WAV_BUFFER_SIZE; uint16_t bufsize = 2*WAV_BUFFER_SIZE;
uint16_t * bufdata = wavSamplesBuffer; uint16_t * bufdata = wavSamplesBuffer;
if (toneWavFile[1]) { if (toneWavFile[1]) {
result = f_open(&wavFile, toneWavFile, FA_OPEN_EXISTING | FA_READ); result = f_open(&wavFile, toneWavFile, FA_OPEN_EXISTING | FA_READ);
toneWavFile[1] = '\0'; if (result == FR_OK) {
bufdata = wavSamplesArray; uint8_t wavHeader[WAV_HEADER_SIZE];
bufsize = 4*WAV_BUFFER_SIZE; result = f_read(&wavFile, (uint8_t *)wavHeader, WAV_HEADER_SIZE, &read);
register Dacc *dacptr = DACC; if (result == FR_OK && read == WAV_HEADER_SIZE && !memcmp(wavHeader, "RIFF", 4)) {
dacptr->DACC_TPR = (uint32_t)wavSamplesArray; bufdata = wavSamplesArray;
wavSamplesBuffer = wavSamplesArray + WAV_BUFFER_SIZE; bufsize = 4*WAV_BUFFER_SIZE;
dacptr->DACC_TNPR = (uint32_t)wavSamplesBuffer; register Dacc *dacptr = DACC;
dacptr->DACC_TCR = WAV_BUFFER_SIZE/2; dacptr->DACC_TPR = CONVERT_PTR(wavSamplesArray);
dacptr->DACC_TNCR = WAV_BUFFER_SIZE/2; wavSamplesBuffer = wavSamplesArray + WAV_BUFFER_SIZE;
setFrequency(12000); dacptr->DACC_TNPR = CONVERT_PTR(wavSamplesBuffer);
toneStart(); dacptr->DACC_TCR = WAV_BUFFER_SIZE/2;
dacptr->DACC_TNCR = WAV_BUFFER_SIZE/2;
setFrequency((wavHeader[24] << 8) + wavHeader[25]);
toneStart();
}
else {
result = FR_DENIED;
}
}
} }
UINT read;
if (result != FR_OK || f_read(&wavFile, (uint8_t *)bufdata, bufsize, &read) != FR_OK || read != bufsize) { if (result != FR_OK || f_read(&wavFile, (uint8_t *)bufdata, bufsize, &read) != FR_OK || read != bufsize) {
f_close(&wavFile);
toneWavFile[0] = '\0'; toneWavFile[0] = '\0';
f_close(&wavFile);
toneStop(); toneStop();
} }
#if 1 #if 1
@ -125,9 +135,9 @@ void audioTask(void* pdata)
CoSetTmrCnt(audioTimer, toneTimeLeft, 0); CoSetTmrCnt(audioTimer, toneTimeLeft, 0);
toneTimeLeft = 0; toneTimeLeft = 0;
// TODO function for that ... // TODO function for that ...
DACC->DACC_TPR = (uint32_t) Sine_values ; DACC->DACC_TPR = CONVERT_PTR(Sine_values);
DACC->DACC_TCR = 50 ; // words, 100 16 bit values DACC->DACC_TCR = 50 ; // words, 100 16 bit values
DACC->DACC_TNPR = (uint32_t) Sine_values ; DACC->DACC_TNPR = CONVERT_PTR(Sine_values);
DACC->DACC_TNCR = 50 ; // words, 100 16 bit values DACC->DACC_TNCR = 50 ; // words, 100 16 bit values
setFrequency(toneFreq * 6100 / 2); setFrequency(toneFreq * 6100 / 2);
toneStart(); toneStart();

View file

@ -43,8 +43,11 @@
#include "AT91SAM3S4.h" #include "AT91SAM3S4.h"
#endif #endif
#ifndef SIMU #ifdef SIMU
#define CONVERT_PTR(x) ((uint32_t)(uint64_t)(x))
#else
#include "core_cm3.h" #include "core_cm3.h"
#define CONVERT_PTR(x) ((uint32_t)(x))
#endif #endif
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------

View file

@ -163,8 +163,8 @@ void initDac()
#endif #endif
dacptr->DACC_CDR = 2048 ; // Half amplitude dacptr->DACC_CDR = 2048 ; // Half amplitude
// Data for PDC must NOT be in flash, PDC needs a RAM source. // Data for PDC must NOT be in flash, PDC needs a RAM source.
dacptr->DACC_TPR = (uint32_t) Sine_values ; dacptr->DACC_TPR = CONVERT_PTR(Sine_values);
dacptr->DACC_TNPR = (uint32_t) Sine_values ; dacptr->DACC_TNPR = CONVERT_PTR(Sine_values);
dacptr->DACC_TCR = 50 ; // words, 100 16 bit values dacptr->DACC_TCR = 50 ; // words, 100 16 bit values
dacptr->DACC_TNCR = 50 ; // words, 100 16 bit values dacptr->DACC_TNCR = 50 ; // words, 100 16 bit values
dacptr->DACC_PTCR = DACC_PTCR_TXTEN ; dacptr->DACC_PTCR = DACC_PTCR_TXTEN ;
@ -182,11 +182,11 @@ extern "C" void DAC_IRQHandler()
CoSetFlag(audioFlag); CoSetFlag(audioFlag);
CoExitISR(); // Exit the interrupt CoExitISR(); // Exit the interrupt
wavSamplesBuffer = (wavSamplesBuffer == wavSamplesArray) ? wavSamplesArray+WAV_BUFFER_SIZE : wavSamplesArray; wavSamplesBuffer = (wavSamplesBuffer == wavSamplesArray) ? wavSamplesArray+WAV_BUFFER_SIZE : wavSamplesArray;
DACC->DACC_TNPR = (uint32_t)wavSamplesBuffer; DACC->DACC_TNPR = CONVERT_PTR(wavSamplesBuffer);
DACC->DACC_TNCR = WAV_BUFFER_SIZE/2; DACC->DACC_TNCR = WAV_BUFFER_SIZE/2;
} }
else { else {
DACC->DACC_TNPR = (uint32_t) Sine_values ; DACC->DACC_TNPR = CONVERT_PTR(Sine_values);
DACC->DACC_TNCR = 50 ; // words, 100 16 bit values DACC->DACC_TNCR = 50 ; // words, 100 16 bit values
} }
} }