tttapa / Control-Surface

Arduino library for creating MIDI controllers and other MIDI devices.
GNU General Public License v3.0
1.19k stars 134 forks source link

Pi Pico Software Serial Rx pin issue #909

Open kizimka opened 1 year ago

kizimka commented 1 year ago

Hi Pieter, thank you so much for your efforts with this great library!

So, the issue that I am facing, that is a whole program freeze when receiving MIDI on Software Serial RX pin on Pi Pico board. TX pin works perfectly.

Have to use SoftwareSerial as I ran out of all hardware serial communications I am using Raspberry Pi Pico Arduino core by Earle F. Philhower, III

#include <Control_Surface.h>
#include <SoftwareSerial.h>

// Set up a new SoftwareSerial object (rx, tx)
SoftwareSerial Serial3(3 , 2);

// Create MIDI interfaces
HardwareSerialMIDI_Interface midi2{ Serial3, MIDI_BAUD };
//I also tried SerialMIDI_Interface - same behavior

void setup() {
    Serial3.begin(); //without this, even output(tx pin) not working, but whole loop still freezes on incoming MIDI

    // Initialize
    Control_Surface.begin();
    midi2.begin();
}

void loop() {
      Control_Surface.loop();
      midi2.update();
}

Thank you in advice!

kizimka commented 1 year ago

Any suggestions?:(

Trickster-git commented 1 year ago

include

UART Serial2 (8, 9, NC, NC); USBMIDI_Interface usbmidi; HardwareSerialMIDI_Interface serialmidi = {Serial2 , 31250}; MIDI_PipeFactory<6> pipes; serialmidi >> pipes >> usbmidi; serialmidi << pipes << usbmidi; // serialmidi << pipes << serialmidi; // if maine usb interface need coment void setup(){ Control_Surface >> pipes >> usbmidi; Control_Surface << pipes << usbmidi; Control_Surface >> pipes >> serialmidi; Control_Surface << pipes << serialmidi; usbmidi.begin(); serialmidi.begin(); Control_Surface.begin();} void loop(){ usbmidi.update(); serialmidi.update(); Control_Surface.loop(); }

it works on arduino mbed os rp2040 boards