Leonardo Serial1

Ciao a tutti,

Sto utilizzando un a board Leonardo per comunicare con RS485. La comunicazione su Serial1, pin 0 e 1 non parte finchè non apro la com su porta usb. Girando un po' ho trovato che altri hanno avuto il mio stesso poblema. ma non ho capito come hanno fatto a risolvere. In pratica quando si apre la Serial via USB invia un segnale DTE che abilita anche la Serial1.

Come posso fare per far partire la Serial1 senza arrivare la Serial..?

La Serial (USB) vien inizializzata nel setup, insieme alla Serial1 e le due sono indipendenti.

Nel loop ti conviene inserire l'istruzione if (Serial) prima di inviare qualcosa al serial monitor, mentre per la Serial1 la cosa non è richiesta.

La seriale la inizializzo correttamente e nel ciclo loop verifico con un if serial se ci sono byte in arrivo. Ciò nonostante non ricevo nessun byte finché non apro anche il monitor su serial.

On the Leonardo, if (Serial) indicates wether or not the USB CDC serial connection is open. For all other instances, including if (Serial1) on the Leonardo, this will always returns true.

Quindi if(Serial) serve solo ad Arduino Leonardo, Micro, Beetle ed altri che usano lo stesso microprocessore e solo per sapere se la porta di comunicazione USB è in funzione, cioè se l'emulazione seriale è stata attivata.

Per la comunicazione seriale vera e propria per entrambe devi usare Serial.available() oppure Serial1.available(), che indica la presenza di byte nel buffer di ricezione.

Togli il While(Serial); (se c'è)
Serve solo in fase di debug della scheda.
Non è spiegato nella documentazione, ma quel while serve solo per simulare il comportamento della UNO che resetta al momento dell'apertura della seriale.
Con la UNO se apri la seriale la scheda si resetta e sul monitor vedi lo sketch che parte dall'inizio. Con la Leonardo lo sketch parte alla fine del caricamento e non si resetta all'apertura della seriale. Come risultato non vedresti lo sketch partire dall'inizio.
Per evitare ciò si include il while che blocca l'esecuzione fino a che non si collega la Serial sulla USB.
Ma per un uso senza seriale quel comando va tolto.

Grazie a tutti. Era proprio il ciclo while all'inizio. Lo avevo tolto ma non funzionava. Riprovato funziona. Misteri.