Skip to content

Commit 1e2bcdc

Browse files
committed
Support non-USB Serial ports (like Uno WiFi Rev2), with manual reset sequency
1 parent efe9708 commit 1e2bcdc

File tree

1 file changed

+29
-14
lines changed

1 file changed

+29
-14
lines changed

examples/Tools/SerialNINAPassthrough/SerialNINAPassthrough.ino

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ int rts = -1;
3131
int dtr = -1;
3232

3333
void setup() {
34-
SerialUSB.begin(baud);
34+
Serial.begin(baud);
3535

3636
#ifdef ARDUINO_SAMD_MKRVIDOR4000
3737
FPGA.begin();
@@ -46,43 +46,58 @@ void setup() {
4646
pinMode(NINA_GPIO0, OUTPUT);
4747
pinMode(NINA_RESETN, OUTPUT);
4848
#endif
49+
50+
#ifdef ARDUINO_AVR_UNO_WIFI_REV2
51+
// manually put the NINA in upload mode
52+
digitalWrite(NINA_GPIO0, LOW);
53+
54+
digitalWrite(NINA_RESETN, LOW);
55+
delay(100);
56+
digitalWrite(NINA_RESETN, HIGH);
57+
delay(100);
58+
digitalWrite(NINA_RESETN, LOW);
59+
#endif
4960
}
5061

5162
void loop() {
52-
if (rts != SerialUSB.rts()) {
63+
#ifndef ARDUINO_AVR_UNO_WIFI_REV2
64+
if (rts != Serial.rts()) {
5365
#ifdef ARDUINO_SAMD_MKRVIDOR4000
54-
FPGA.digitalWrite(FPGA_SPIWIFI_RESET, (SerialUSB.rts() == 1) ? LOW : HIGH);
66+
FPGA.digitalWrite(FPGA_SPIWIFI_RESET, (Serial.rts() == 1) ? LOW : HIGH);
5567
#else
56-
digitalWrite(NINA_RESETN, SerialUSB.rts());
68+
digitalWrite(NINA_RESETN, Serial.rts());
5769
#endif
58-
rts = SerialUSB.rts();
70+
rts = Serial.rts();
5971
}
6072

61-
if (dtr != SerialUSB.dtr()) {
73+
if (dtr != Serial.dtr()) {
6274
#ifdef ARDUINO_SAMD_MKRVIDOR4000
63-
FPGA.digitalWrite(FPGA_NINA_GPIO0, (SerialUSB.dtr() == 1) ? HIGH : LOW);
75+
FPGA.digitalWrite(FPGA_NINA_GPIO0, (Serial.dtr() == 1) ? HIGH : LOW);
6476
#else
65-
digitalWrite(NINA_GPIO0, (SerialUSB.dtr() == 0) ? HIGH : LOW);
77+
digitalWrite(NINA_GPIO0, (Serial.dtr() == 0) ? HIGH : LOW);
6678
#endif
67-
dtr = SerialUSB.dtr();
79+
dtr = Serial.dtr();
6880
}
81+
#endif
6982

70-
if (SerialUSB.available()) {
71-
SerialNina.write(SerialUSB.read());
83+
if (Serial.available()) {
84+
SerialNina.write(Serial.read());
7285
}
7386

7487
if (SerialNina.available()) {
75-
SerialUSB.write(SerialNina.read());
88+
Serial.write(SerialNina.read());
7689
}
7790

91+
#ifndef ARDUINO_AVR_UNO_WIFI_REV2
7892
// check if the USB virtual serial wants a new baud rate
79-
if (SerialUSB.baud() != baud) {
93+
if (Serial.baud() != baud) {
8094
rts = -1;
8195
dtr = -1;
8296

83-
baud = SerialUSB.baud();
97+
baud = Serial.baud();
8498
#ifndef ARDUINO_SAMD_MKRVIDOR4000
8599
SerialNina.begin(baud);
86100
#endif
87101
}
102+
#endif
88103
}

0 commit comments

Comments
 (0)