Pages: 1 [2]   Go Down
Author Topic: Rilevare porta seriale  (Read 3664 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22924
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 134
Posts: 9644
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22924
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 134
Posts: 9644
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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,
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 134
Posts: 9644
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley
Tra parentesi sul reference c'è pure errore ortografico, wether (montone) al posto di whether (se) smiley-grin
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22924
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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....  smiley-twist
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.
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 134
Posts: 9644
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho usato un alimentatore.... guasto....  smiley-twist

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

Selvazzano Dentro - Padova
Offline Offline
Edison Member
*
Karma: 45
Posts: 1496
"Chi sa fa, chi non sa insegna"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22924
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-wink

PS:
cyberhs, anche tu comunque vedo che sei molto preparato, sei un altro buon acquisto per il forum  smiley-wink
Logged


MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Ho usato un alimentatore.... guasto....  smiley-twist
Svista mia.


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

 smiley-cool
Logged

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

Pages: 1 [2]   Go Up
Jump to: