Ok, I tried this:
Code:
#include <Audio.h>
AudioInputI2S i2s1; //xy=115,136
AudioOutputSPDIF3 spdif3_1; //xy=369,136
AudioConnection patchCord1(i2s1, 0, spdif3_1, 0);
AudioConnection patchCord2(i2s1, 1, spdif3_1, 1);
extern "C" uint32_t set_arm_clock(uint32_t frequency);
uint32_t speed = 24000000;
void setup() {pinMode(13, OUTPUT);}
void loop() {
digitalWrite(13, !digitalRead(13));
set_arm_clock( speed );
Serial.println(speed);
speed += 16000000;
if (speed > 900000000) speed = 24000000;
delay(200);
}
No lock... it changes the speed at intervals of 200ms, from 24MHz to 900MHz. Runs for 15 Minutes now.
Perhaps a problem in your program? At least does does not hardfault with audio.
As this works, I assume the SPDIF-dropouts caused by the program, too.