Move all MIDI processing to Core 0

Move controller.update() inside midi_task on Core 0 to eliminate
TinyUSB cross-core race condition. Previously:
 - Core 1 (loop()): usb_midi.writePacket() in controller.update()
 - Core 0 (midi_task): usb_midi.available()/readPacket()
This race condition causes crashes on button press.

Now:
 - Core 0 (midi_task): midi_transport.update() + controller.update()
 - Core 1 (loop()): led_driver.update() + serial commands only
This commit is contained in:
ash
2026-07-01 06:51:48 +00:00
parent 762500e227
commit fec2ea1db2
+1 -1
View File
@@ -36,6 +36,7 @@ void midi_task(void* parameter) {
while (true) { while (true) {
midi_transport.update(); midi_transport.update();
ble_midi_transport.update(); ble_midi_transport.update();
controller.update();
vTaskDelay(1); vTaskDelay(1);
} }
} }
@@ -390,7 +391,6 @@ void setup() {
void loop() { void loop() {
led_driver.update(); led_driver.update();
controller.update();
if (Serial.available()) { if (Serial.available()) {
String cmd = Serial.readStringUntil('\n'); String cmd = Serial.readStringUntil('\n');