diff --git a/src/machine/machine_atsamd21.go b/src/machine/machine_atsamd21.go index 92f21b0a..9b18a313 100644 --- a/src/machine/machine_atsamd21.go +++ b/src/machine/machine_atsamd21.go @@ -1742,6 +1742,7 @@ type USBCDC struct { waitTxc bool waitTxcRetryCount uint8 sent bool + configured bool } var ( @@ -1923,6 +1924,13 @@ func (usbcdc *USBCDC) Configure(config UARTConfig) { // enable IRQ intr := interrupt.New(sam.IRQ_USB, handleUSB) intr.Enable() + + usbcdc.configured = true +} + +// Configured returns whether usbcdc is configured or not. +func (usbcdc *USBCDC) Configured() bool { + return usbcdc.configured } func handlePadCalibration() { diff --git a/src/machine/machine_atsamd51.go b/src/machine/machine_atsamd51.go index ba556c6a..3ba5ea5b 100644 --- a/src/machine/machine_atsamd51.go +++ b/src/machine/machine_atsamd51.go @@ -1965,6 +1965,7 @@ type USBCDC struct { waitTxc bool waitTxcRetryCount uint8 sent bool + configured bool } var ( @@ -2149,6 +2150,13 @@ func (usbcdc *USBCDC) Configure(config UARTConfig) { interrupt.New(sam.IRQ_USB_SOF_HSOF, handleUSBIRQ).Enable() interrupt.New(sam.IRQ_USB_TRCPT0, handleUSBIRQ).Enable() interrupt.New(sam.IRQ_USB_TRCPT1, handleUSBIRQ).Enable() + + usbcdc.configured = true +} + +// Configured returns whether usbcdc is configured or not. +func (usbcdc *USBCDC) Configured() bool { + return usbcdc.configured } func handlePadCalibration() { diff --git a/src/runtime/runtime_atsamd21.go b/src/runtime/runtime_atsamd21.go index 3f66ad2f..8888a711 100644 --- a/src/runtime/runtime_atsamd21.go +++ b/src/runtime/runtime_atsamd21.go @@ -30,6 +30,9 @@ func init() { // connect to USB CDC interface machine.Serial.Configure(machine.UARTConfig{}) + if !machine.USB.Configured() { + machine.USB.Configure(machine.UARTConfig{}) + } } func putchar(c byte) { diff --git a/src/runtime/runtime_atsamd51.go b/src/runtime/runtime_atsamd51.go index ed2aa9c3..a2438bac 100644 --- a/src/runtime/runtime_atsamd51.go +++ b/src/runtime/runtime_atsamd51.go @@ -30,6 +30,9 @@ func init() { // connect to USB CDC interface machine.Serial.Configure(machine.UARTConfig{}) + if !machine.USB.Configured() { + machine.USB.Configure(machine.UARTConfig{}) + } } func putchar(c byte) {