MickMad
Well-known member
Hi there,
I'm going to port the Audio Library to work on the new SAMD21 based Arduinos and Arduino-compatible boards.
Since the SAMD21 family has I2S it makes sense to try and port this lib to work with those MCUs as well.
Major caveats:
SAMD21 family does not have the hardware DSP instructions, so those are going to be emulated in software (with very fast ASM routines maybe).
SAMD21 family does not have a Software ISR, unlike the Kinetis K20 family; the main object behind the Audio lib, that is the AudioStream object (defined in the Teensy core) makes use of this software ISR to update all the audio packets at the same time; in fact whenever you call AudioInterrupts() and AudioNoInterrupts() you are actually enabling or disabling that ISR.
Other than that, the SAMD21 has a pretty cool DMAC system so it won't be that much of a problem to port DMA code (most objects, especially the main controls - I2S i/o, DAC, PMW - use DMA to reduce CPU usage during data transfers).
So... who wants to jump in?
I'm going to port the Audio Library to work on the new SAMD21 based Arduinos and Arduino-compatible boards.
Since the SAMD21 family has I2S it makes sense to try and port this lib to work with those MCUs as well.
Major caveats:
SAMD21 family does not have the hardware DSP instructions, so those are going to be emulated in software (with very fast ASM routines maybe).
SAMD21 family does not have a Software ISR, unlike the Kinetis K20 family; the main object behind the Audio lib, that is the AudioStream object (defined in the Teensy core) makes use of this software ISR to update all the audio packets at the same time; in fact whenever you call AudioInterrupts() and AudioNoInterrupts() you are actually enabling or disabling that ISR.
Other than that, the SAMD21 has a pretty cool DMAC system so it won't be that much of a problem to port DMA code (most objects, especially the main controls - I2S i/o, DAC, PMW - use DMA to reduce CPU usage during data transfers).
So... who wants to jump in?