Go Down

Topic: Rilevare porta seriale (Read 3 times) previous topic - next topic

staffani

Leo,
nella tua scheda UNO hai già l'8U2 come convertitore usb/seriale o ancora l'FTDI?

leo72

L'FTDI c'è solo fino alla 2009, su tutte le UNO c'è il nuovo chippino Atmega8U2/16U2 (a seconda delle versioni).

astrobeed


Però allora cos'è che fa lo sketch che ho scritto?


Non so perché da te il tuo sketch apparentemente funziona, però l'ho appena provato su una UNO R1, su una UNO R3, su una MEGA2560 R1, su una Luigino 328 (con FTDI) ottenendo sempre lo stesso risultato, alimentando solo da batteria il led rimane sempre acceso, collegando/scollegando il cavo USB il led rimane sempre acceso.
Ribadisco il concetto, l'ATMEGA328 non ha alcun modo per accorgersi se c'è o meno collegato un device all'UART, non esiste nessun registro che fornisce questa informazione e senza usare i bit aggiuntivi per l'handshake hardware, quelli usati dalla RS232, è impossibile ottenere tale informazione.
Solo sulla Leonardo è possibile sapere se è realmente collegata ad un pc la seriale, esclusivamente tramite USB, per via di come funziona la USB e perché è integrata nel micro stesso.


leo72


Non so perché da te il tuo sketch apparentemente funziona, però l'ho appena provato su una UNO R1,

Dipenderà dal sistema operativo?
Il mio sketch sulla Leonardo non funziona, nel senso che il led è sempre spento. Però ho notato una cosa con questa scheda: nel momento in cui connetto il cavettino USB, il led RX fa 1 lampeggio. Forse c'è uno scambio di dati che l'8U2 rileva ed usa per aprire la seriale verso il 328?

astrobeed


Dipenderà dal sistema operativo?


Leo non so più come dirtelo, la questione è puramente hardware non ha niente a che vedere con il S.O., l'ATMEGA328, ma anche l'ATMEGA2560, non hanno nessun modo per rilevare la connessione di un dispositivo sulla seriale se non c'è un traffico dati, la if(serial) è stata introdotta specificatamente per la Leonardo perché ti permette di sapere se sei connesso tramite USB al pc, in tutti gli altri casi torna sempre true.

Quote

Però ho notato una cosa con questa scheda: nel momento in cui connetto il cavettino USB, il led RX fa 1 lampeggio. Forse c'è uno scambio di dati che l'8U2 rileva ed usa per aprire la seriale verso il 328?


Se stiamo parlando della Leonardo, che non ho, sopra non c'è l'ATMEGA328, c'è l'ATMEGA32u4 che ha la USB onboard,

astrobeed

Sul reference c'è scritto:

Quote

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.


Traduco per quelli che hanno problemi con l'inglese:

Quote

Sulla Leonardo if(serial) indica se una connessione seriale USB CDC è aperta o no.
Per tutti gli altri casi, incluso if(serial1) sulla Leonardo, viene restituito sempre true.


Ritengo che questo chiude definitivamente il discorso  :)
Tra parentesi sul reference c'è pure errore ortografico, wether (montone) al posto di whether (se) :D

leo72


Leo non so più come dirtelo, la questione è puramente hardware non ha niente a che vedere con il S.O., l'ATMEGA328, ma anche l'ATMEGA2560, non hanno nessun modo per rilevare la connessione di un dispositivo sulla seriale se non c'è un traffico dati, la if(serial) è stata introdotta specificatamente per la Leonardo perché ti permette di sapere se sei connesso tramite USB al pc, in tutti gli altri casi torna sempre true.

Astro, lo capisco benissimo. Solo che avevo un comportamento differente dal vostro.... dico "avevo" perché ho capito il motivo per cui sembrava che lo sketch funzionasse!  :smiley-sweat:
Ho usato un alimentatore.... guasto....  ]:D
Quando ho usato quell'alimentatore non ho fatto caso al fatto che anche il led ON fosse spento  :smiley-sweat: :smiley-sweat:
Sorry.... il fatto è che avevo sull'Arduino uno shield che mi copriva la visuale quindi guardavo solo il led "LED"...
Quindi il led si accendeva e spengeva quando collegavo l'USB perché.... l'Arduino riceveva alimentazione  :smiley-sweat:
Stamani provando con la Leonardo, senza shield, al 2° o 3° tentativo (dopo che avevo pubblicato il mio precedente post) ho notato che scollegando il cavettino USB il len ON si spengeva.... figurimm.......

Quote

Se stiamo parlando della Leonardo, che non ho, sopra non c'è l'ATMEGA328, c'è l'ATMEGA32u4 che ha la USB onboard,

Svista mia.

astrobeed


Ho usato un alimentatore.... guasto....  ]:D


Murphy non perdona  :smiley-mr-green:
L'importante è avere capito perché a te apparentemente funzionava, mistero risolto possiamo archiviare il topic.

cyberhs

Astrobed ti faccio i miei complimenti perché non solo sei un luminare in elettronica, ma hai anche una cultura decisamente al di sopra della media!

Non è facile trovare persone del tuo stampo.

leo72


Astrobed ti faccio i miei complimenti perché non solo sei un luminare in elettronica, ma hai anche una cultura decisamente al di sopra della media!

Non è facile trovare persone del tuo stampo.

Fa parte della Santissima Trinità©: Astrobeed, Michele e Uwe (in ordine alfabetico). Senza di loro.... perderemmo un bel po' di sapere  ;)

PS:
cyberhs, anche tu comunque vedo che sei molto preparato, sei un altro buon acquisto per il forum  ;)

niki77



Ho usato un alimentatore.... guasto....  ]:D
Svista mia.



Succede , e serve da lezione, sicuramente un altra volta non ti capiterà più la stessa svista.

8)
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Go Up