Go Down

Topic: Le Seriali di Leonardo (Read 950 times) previous topic - next topic

bul

Salve
da alcuni giorni sto usando "leonardo"
ho visto che è molto diverso dagli altri nel modo di interfacciarsi con il PC.
Su ognuno dei miei pc si comporta in modo diverso (nei messaggi di windows che compaiono tipo:nuovo HW..)
alla fine della compilazione spesso non trova la seriale su cui caricare.
sopratutto il problema è nella console seriale
se quardo in risorse computer USB   vedo la comxx che va e viene ,cambia numero
e non riesco a comunicare.
Non mi è ben chiaro il funzionamento
Leonardo parla con il pc in USB x caricare scaricare il software (bootloader)?
poi se il software scritto da me usa la seriale verso la consolle delll' IDE cosa succede??
genera una seriale virtuale o cosa??
morale non mi va.
chi ha esperienza mi puo' spiegare ??
grazie
Bul


leo72

L'USB della Leonardo è gestita direttamente dal microcontrollore senza chip aggiuntivi come sulle UNO e MEGA.
Questi chip aggiuntivi non solo servono come convertitori seriali/Usb per far dialogare le schede col PC ma resettano anche il microcontrollore quando l'IDE spedisce un nuovo sketch in modo da attivare il bootloader che scrive il programma in arrivo dalla seriale sulla memoria interna.
Avendo tolto il convertitore esterno il team di Arduino si è studiato un nuovo modo per eseguire il reset del microcontrollore, necessario a far partire il bootloader: ogni volta che viene aperta una comunicazione a 1200 bps verso la scheda e poi chiusa, questa azione viene genera un reset da parte del modulo USB interno ed il microcontrollore entra in modalità programmazione. L'effetto collaterale di questo comportamento è che il sistema vede sganciarsi e riagganciarsi il dispositivo, col risultato che alla Leonardo viene assegnata una nuova porta ogni volta.

PaoloP

Alimenti la scheda solo dall'USB o anche con un alimentatore esterno?

bul

alimento la scheda solo con usb
Grazie per le spiegazioni il concertto ora mi è più chiaro
Situazione attuale  PC Nuovo w7 64bit i5
dopo aver caricato uno sketch che usa seriale per test
in Gestione dispositivi : senza Leonardo nessuna seriale
connetto a usb leonardo
led arancio acceso modulato compare: Arduino Leonardo (COM6) circa 10 secondi
poi Led arancio spento e COM6 Scompare compare: Arduino Leonardo (COM7)

se con qualsiasi terminale  cerco di aprire  la COM7  mi stampa il messaggiodi benvenuto  contenuto nello sketch 
poi  questa sparisce da gestione risorse e non torna neanche la COM6 e il terminale dà errore porta COM7 non trovata
pigiando il tato reset il ciclo si ripete





PaoloP

Ma la porta ti scompare e riappare anche se non apri l'IDE di Arduino e non fai upload di sketch?
Perché se non esegui l'upload di uno sketch, quindi non apri e chiudi la seriale, quel comportamento non è normale.
Prova a cambiare il cavo USB.
Prova ad alimentare la Leonardo anche tramite un alimentatore esterno (tra i 7V e i 12V).
Se il problema persiste contattare il medico!!  :smiley-mr-green:
Scherzo, se risolvi in questo modo dipende dall'alimentazione tramite USB. Se invece non risolvi bisognerà effettuare altre prove e cercare altre soluzioni.

bul

#5
Oct 25, 2012, 08:53 pm Last Edit: Oct 25, 2012, 09:01 pm by bul Reason: 1
Penso di avere scoperto dove sbagliavo
con un solo sketch che stampa su seriale tutto è ok.
Il mio shoftware comandava un modulo RF12 librerie Jeelabs su Arduino Duemilanove
attraverso SCK-MISO-MOSI e irq pin2 (dig13-12-11-2) e li tutto ok.
io lo ho caricato pari pari su Leonardo e non funzionava
poi leggendo bene le specifiche vedo che Leonardo ha un diverso layout di questi pin
per cui il programma va a scrivere in posti sbagliati e mi fa quello scherzo
per cui io vedo nel pc Leonardo 2 volte contemporaneamente
cancellando  lo sketch tutto è tornato normale.
quindi immagino che gli sketch scritti per arduino duemilanove Uno che usano  quei pin vadano rivisti
grazie per l'aiuto
da qualche parte ho trovato questa tabella:

Segnale I2c-  DuemilaNove      Leonardo
SCK----------->DIG13------------>DIG15
MISO---------->DIG12------------>DIG14
MOSI---------->DIG11------------>DIG16
IRQ------------>DIG2------------->DIG3


bul


Federico Vanzati

Ciao,

vedi due seriali perchè ci sono due implementazioni di seriale virtuale (CDC) caricate sulla scheda, quella nel bootloader, che serve per caricare lo sketch e una volta terminato il bootloader, nell'esecuzione dello sketch vengono attivati i descrittori della seriale, di un mouse e di una tastiera, per cui oltre a veder comparire una nuova porta seriale vedrai anche due nuovi dispositivi tra le periferiche HID.

La seriale dello sketch ha un numero di enumerazione più basso della seriale del bootloader, perchè la prima volta che hai collegato la leonardo al PC la scheda era in modalità sketch. La Leonardo quando la colleghi al PC non si resetta come fa una Arduino Uno, si resetta solo quando apri e poi richiudi la seriale a 1200 baud.
F

Go Up