volatile uint16_t dac1Value = *(runningPTR++) >> 16;
volatile uint16_t dac1Value = *(runningPTR) >> 16; runningPTR++ ;
I guess the default SPI library for the Due is using interrupts for some reason, hence the problem tryingto use it in a timer ISR? If so that's very dumb, the most common things you want to do in an ISR aretalk to external hardware!
Look for another SPI library or for direct register access to the SPI hardware perhaps?
When you tried to drive the DAC from ISR you did guard the SPI bus with a critical section in the main loop?
I'm pretty rusty with the Due I haven't used one for a while, and I know direct register access is prettycomplex (lots of reading of multiple sections of the datasheet seem to be involved for the most basicactions, alas)
Not sure about SPI contention - you are using single-threaded code if talking to both from the main loop(why did you not use loop() for the main loop BTW? You seem to have renamed it 'audioWrite()')
Oh, BTW, the Due can talk I2S I believe through the synchronous serial interface, which is the most obviouschoice for audio DAC/ADCs...
I read somewhere that using a while in setup() is faster than using the loop(), but I'm not sure if that's true.
I'm not going to use I2C DACs I've already ordered SPI DACs, and I think the I2S boards can't output DC or am I wrong?