Browse Source

Fix compile errors on Teensy LC

dds
PaulStoffregen 4 years ago
parent
commit
7179fcee28
6 changed files with 17 additions and 10 deletions
  1. +2
    -0
      output_pt8211.cpp
  2. +5
    -9
      output_spdif.cpp
  3. +2
    -0
      output_tdm.cpp
  4. +4
    -0
      synth_karplusstrong.cpp
  5. +2
    -1
      synth_simple_drum.cpp
  6. +2
    -0
      synth_wavetable.cpp

+ 2
- 0
output_pt8211.cpp View File

audio_block_t *blockL, *blockR; audio_block_t *blockL, *blockR;
uint32_t saddr, offsetL, offsetR; uint32_t saddr, offsetL, offsetR;


#if defined(KINETISK) || defined(__IMXRT1062__)
saddr = (uint32_t)(dma.TCD->SADDR); saddr = (uint32_t)(dma.TCD->SADDR);
#endif
dma.clearInterrupt(); dma.clearInterrupt();
if (saddr < (uint32_t)i2s_tx_buffer + sizeof(i2s_tx_buffer) / 2) { if (saddr < (uint32_t)i2s_tx_buffer + sizeof(i2s_tx_buffer) / 2) {
// DMA is transmitting the first half of the buffer // DMA is transmitting the first half of the buffer

+ 5
- 9
output_spdif.cpp View File

DMAMEM __attribute__((aligned(32))) DMAMEM __attribute__((aligned(32)))
static uint32_t SPDIF_tx_buffer[AUDIO_BLOCK_SAMPLES * 4]; //2 KB static uint32_t SPDIF_tx_buffer[AUDIO_BLOCK_SAMPLES * 4]; //2 KB



#if defined(KINETISK) || defined(__IMXRT1052__) || defined(__IMXRT1062__)
#if defined(KINETISK) || defined(__IMXRT1062__)


#define PREAMBLE_B (0xE8) //11101000 #define PREAMBLE_B (0xE8) //11101000
#define PREAMBLE_M (0xE2) //11100010 #define PREAMBLE_M (0xE2) //11100010


uint32_t AudioOutputSPDIF::vucp = VUCP_VALID; uint32_t AudioOutputSPDIF::vucp = VUCP_VALID;


#endif


FLASHMEM FLASHMEM
void AudioOutputSPDIF::begin(void) void AudioOutputSPDIF::begin(void)


I2S0_TCSR |= I2S_TCSR_TE | I2S_TCSR_BCE | I2S_TCSR_FRDE | I2S_TCSR_FR; I2S0_TCSR |= I2S_TCSR_TE | I2S_TCSR_BCE | I2S_TCSR_FRDE | I2S_TCSR_FR;
dma.attachInterrupt(isr); dma.attachInterrupt(isr);
#elif defined(__IMXRT1052__) || defined(__IMXRT1062__)


#if defined(__IMXRT1052__)
CORE_PIN6_CONFIG = 3; //1:TX_DATA0
#elif defined(__IMXRT1062__) #elif defined(__IMXRT1062__)
CORE_PIN7_CONFIG = 3; //1:TX_DATA0 CORE_PIN7_CONFIG = 3; //1:TX_DATA0
#endif
const int nbytes_mlno = 2 * 4; // 8 Bytes per minor loop const int nbytes_mlno = 2 * 4; // 8 Bytes per minor loop


dma.TCD->SADDR = SPDIF_tx_buffer; dma.TCD->SADDR = SPDIF_tx_buffer;
uint32_t saddr, offset; uint32_t saddr, offset;
uint16_t sample, lo, hi, aux; uint16_t sample, lo, hi, aux;


#if defined(KINETISK) || defined(__IMXRT1062__)
saddr = (uint32_t)(dma.TCD->SADDR); saddr = (uint32_t)(dma.TCD->SADDR);
#endif
dma.clearInterrupt(); dma.clearInterrupt();
if (saddr < (uint32_t)SPDIF_tx_buffer + sizeof(SPDIF_tx_buffer) / 2) { if (saddr < (uint32_t)SPDIF_tx_buffer + sizeof(SPDIF_tx_buffer) / 2) {
// DMA is transmitting the first half of the buffer // DMA is transmitting the first half of the buffer
CORE_PIN11_CONFIG = PORT_PCR_MUX(6); // pin 11, PTC6, I2S0_MCLK 11.43MHz CORE_PIN11_CONFIG = PORT_PCR_MUX(6); // pin 11, PTC6, I2S0_MCLK 11.43MHz
#endif #endif


#elif defined(__IMXRT1052__) || defined(__IMXRT1062__)
#elif defined(__IMXRT1062__)


CCM_CCGR5 |= CCM_CCGR5_SAI1(CCM_CCGR_ON); CCM_CCGR5 |= CCM_CCGR5_SAI1(CCM_CCGR_ON);
//PLL: //PLL:
#endif #endif
} }


#endif // KINETISK || __IMXRT1062__


#if defined(KINETISL) #if defined(KINETISL)



+ 2
- 0
output_tdm.cpp View File

const uint32_t *src1, *src2; const uint32_t *src1, *src2;
uint32_t i, saddr; uint32_t i, saddr;


#if defined(KINETISK) || defined(__IMXRT1062__)
saddr = (uint32_t)(dma.TCD->SADDR); saddr = (uint32_t)(dma.TCD->SADDR);
#endif
dma.clearInterrupt(); dma.clearInterrupt();
if (saddr < (uint32_t)tdm_tx_buffer + sizeof(tdm_tx_buffer) / 2) { if (saddr < (uint32_t)tdm_tx_buffer + sizeof(tdm_tx_buffer) / 2) {
// DMA is transmitting the first half of the buffer // DMA is transmitting the first half of the buffer

+ 4
- 0
synth_karplusstrong.cpp View File

#include <Arduino.h> #include <Arduino.h>
#include "synth_karplusstrong.h" #include "synth_karplusstrong.h"


#if defined(KINETISK) || defined(__IMXRT1062__)
static uint32_t pseudorand(uint32_t lo) static uint32_t pseudorand(uint32_t lo)
{ {
uint32_t hi; uint32_t hi;
lo = (lo & 0x7FFFFFFF) + (lo >> 31); lo = (lo & 0x7FFFFFFF) + (lo >> 31);
return lo; return lo;
} }
#endif




void AudioSynthKarplusStrong::update(void) void AudioSynthKarplusStrong::update(void)
{ {
#if defined(KINETISK) || defined(__IMXRT1062__)
audio_block_t *block; audio_block_t *block;


if (state == 0) return; if (state == 0) return;


transmit(block); transmit(block);
release(block); release(block);
#endif
} }





+ 2
- 1
synth_simple_drum.cpp View File



void AudioSynthSimpleDrum::update(void) void AudioSynthSimpleDrum::update(void)
{ {
#if defined(KINETISK) || defined(__IMXRT1062__)
audio_block_t *block_wav; audio_block_t *block_wav;
int16_t *p_wave, *end; int16_t *p_wave, *end;
int32_t sin_l, sin_r, interp, mod, mod2, delta; int32_t sin_l, sin_r, interp, mod, mod2, delta;


transmit(block_wav, 0); transmit(block_wav, 0);
release(block_wav); release(block_wav);
#endif
} }



+ 2
- 0
synth_wavetable.cpp View File

* *
*/ */
void AudioSynthWavetable::update(void) { void AudioSynthWavetable::update(void) {
#if defined(KINETISK) || defined(__IMXRT1062__)
// exit if nothing to do // exit if nothing to do
if (env_state == STATE_IDLE || (current_sample->LOOP == false && tone_phase >= current_sample->MAX_PHASE)) { if (env_state == STATE_IDLE || (current_sample->LOOP == false && tone_phase >= current_sample->MAX_PHASE)) {
env_state = STATE_IDLE; env_state = STATE_IDLE;


transmit(block); transmit(block);
release(block); release(block);
#endif
} }

Loading…
Cancel
Save