Ciao a tutti! È estate e mi sto dando da fare con l'SMD! Come da titolo sto usando l'atmega 32u4, anche se non credo che caricherò l'optiboot. Mi stavo chiedendo un paio di cose per la USB: ho visto che nello schema del Leonardo vi sono due nuclei di ferrite, dovrei metterli anche io? poi, per quanto riguarda le alimentazioni, posso collegare tutto al regolatore 5V coi dovuti condensatori di disaccopiamento? Oppure devo tenere separate alimentazioni USB e esterna?
Grazie mille! Nelle prossime puntate altri quesiti che verranno con la progettazione
Se fai le cose low-cost e fatte in casa evita pure le ferriti se non ce le hai e devi ordinarle apposta
L'alimentazione falla come ti pare, in base a come lo collegherai
Grazie flz! Le ferriti credo che le lascerò stare. L'alimentazione è data da un 7805, e credo quindi che si possa attaccare tutto in comune... ma non è un problema lasciarli separati se è meglio. L'unica cosa è che voglio si alimenti sia con la USB sia con la batteria e non so se il Vusb dell'atmega serva anche da alimentazione ma ne dubito.
La ferrite è utile per ridurre il rumore proveniente dai 5V USB, sempre molto alto, sebbene non indispensabile è caldamente consigliato metterla, costano una stupidata.
Molto importanti le due resistenze da 22 ohm su D+ e D-, ometterle può portare a problemi di comunicazione, altamente importante il condensatore da 1 uF su Vcap, deve assolutamente essere di tipo ceramico di buona qualità.
Vbus è sia linea di alimentazione, solo per la parte usb hardware, che sistema di rilevazione connessione al host USB, con conseguente interrupt e avvio della procedura di collegamento alla usb.
Vbus puoi lasciarlo scollegato quando non usi la USB, deve essere collegato al 5V USB, direttamente dal connettore, quando usi la USB, il datasheet consiglia caldamente di mettere un condensatore ceramico da 10 uF su Vbus, questo perché è anche linea di alimentazione.
Se usi l'ADC, sopratutto con alimentazione da USB, è altamente consigliato alimentare il pin Avcc tramite un induttore da 22-33 uH e un condensatore ceramico da 22 uf, questo tra Avcc e gnd, il tutto montato il più vicino possibile al pin Avcc.
Perfetto grazie mille!
ora viene il bello, devo caricare il primo programma. È un semplice blink, l'ho fatto con l'IDE di arduino e ho preso il file .hex dalla cartella temporanea compilandolo per il Leonardo. mi servono delle conferme
-
devo fare un avrdude, essendo la prima volta che scrivo sul chip, dei fuse? poi posso scrivere direttamente sulla flash?
-
il metodo che ho usato per compilare il file hex va bene?
-
ho alimentato il chip, connesso mosi miso e sck, oltre che al reset, è giusto?
-
se qualcosa va storto posso dire delle gran parolacce??
-
c'è altro da sapere/fare?
Come sempre, GRAZIE MILLE!!
EDIT: Aggiungo quindi quello che dovrei scrivere a riga di codice:
avrdude -c arduino -p atmega32u4 -P COMPORT -b 19200 -U flash:w:miofile.hex
(per il comport non sono sicuro, l'arduino è usb ma secondo me bisogna mettere COM perchè è riconosciuto così da windows.
Attento il vostro sì per cominciare!
Senza bootloader non puoi caricare lo sketch da usb. Stai usando quindi un programmatore ISP?
Dici che hai collegato i pin MISO, MOSI, SCK, RESET + alimentazione, a cosa? Un programmatore ISP?
Allora perché invece di fare manovre con avrdude, hex, ecc non ti crei un board in board.txt a fai l'upload dello sketch con "Carica con un programmatore"?
Secondo me senza Bootloader non ti funziona la USB.
Ciao Uwe
Ciao ragazzi! Eccomi ritornato dalle vacanze. Allora, per il bootloader quindi come dovrei fare? Io ci vorrei caricare quello di arduino per avere la possibilità di caricarci i file compilati comodamente dall'IDE (ma tenendo sempre aperta la possibilità di caricare gli hex con l'avrudude, cosa che tra l'altro farò anche più spesso). In mancanza di quello di arduino per l'upload diretto posso caricare quello che fornisce l'atmel per fare anche del semplice debug USB?
Thaankss!!
Il bootloader lo carichi solamente tramite tecnica ISP. Ti serve un secondo Arduino dove caricare lo sketch "Arduino as ISP" oppure un programmatore ISP come l'AVRISP o USBISP.
uwefed:
Secondo me senza Bootloader non ti funziona la USB.
Questa mi era sfuggita.
Senza bootloader sul 32u4 ovviamente non puoi caricare gli sketch da USB, però se li carichi tramite ISP la usb funziona perché il relativo codice è inserito nello sketch altrimenti non potresti usare la comunicazione seriale col pc.
Del resto il bootloader viene usato solo all'avvio, o dopo un reset, poi il controllo viene ceduto al programma caricato e il bootloader non viene più utilizzato.
Basta provare a compilare lo sketch del blink per la UNO e la Leonardo per rendersi conto della cosa, sulla UNO impegna 1k di flash e 15 byte di ram, sulla Leonardo impegna quasi 5k di flash e 157 byte di ram, la differenza è la gestione della USB con i relativi buffer in ram.
Subsea:
Ciao ragazzi! Eccomi ritornato dalle vacanze. Allora, per il bootloader quindi come dovrei fare? Io ci vorrei caricare quello di arduino per avere la possibilità di caricarci i file compilati comodamente dall'IDE
Li carichi sempre dal IDE anche via ISP, basta che usi la voce "carica tramite programmatore", ovviamente a patto di usare un programmatore hardware riconosciuto dal IDE.
uff scusa astro per la tarda risposta! Comunque io i programmi per ora li carico in isp, usando file .hex, mentre volevo caricarli direttamente col pulsante carica di Arduino da USB. Devo creare una nuova board?
come sempre, grazie
No. Puoi usare la Board Arduino Leonardo e caricare tramite ISP il bootloader. A meno che non usi una frequenza diversa da quella standard.
e quindi poi caricare gli sketch da usb? gia fatto ma non funziona...selezionata come scheda Arduino Leonardo, impostato programmatore isp e cliccato su scrivi bootloader. a dire il vero ce una cosa strana non mi riconosce la com sulla usb ne con boot ne senza
dove posso aver sbagliato? USB collegata con le resistenze in serie e alimentata con il pin sull atmega, gnd in comune
Subsea:
e quindi poi caricare gli sketch da usb? gia fatto ma non funziona..
Prova a caricare tramite ISP un qualunque sketch che usa la seriale, p.e. quello demo che invia la tabella ASCII, e vedi se la USB viene riconosciuta come porta com dal pc.
Ma il classico blink funziona?
Hai messo il quarzo da 16 MHz, assolutamente indispensabile per l'USB.
Mi sa che dovresti eseguire i collegamenti come nella Leo (https://www.arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf), ovvero il pin Vbus al Vbus del micro mettendo in serie un fusibile da 500mA (non si sa mai) e i condensatori da 100nF e 10uF.
USBID mi pare sia flottante.
Il blink funziona, caricato da isp ovviamente e anche dei programmi che leggono sensori e scrivono sulla eeprom. È connesso a un quarzo a 16 Mhz con condesatori da 22 pf come norma.
Nel pomeriggio provo a caricare lo scketch che usa la seriale e ad aprire il monitor per vedere se trovo qualcosa.
I Vbus sono connessi come hai detto tu Paolo, non ho solo usato il condensatore da 10, quello di disaccoppiamento da 100 l'ho usato.
Ma vuoi dire che è per un condensatore che proprio non la riconosce? Capirei se riportasse degli errori in lettura/scrittura, ma neanche riconoscerla?
Grazie!!
Subsea:
I Vbus sono connessi come hai detto tu Paolo, non ho solo usato il condensatore da 10, quello di disaccoppiamento da 100 l'ho usato.
Su Vbus il condensatore da 10 uF è altamente consigliato metterlo.
Quello da 1 uF su Ucap, pin 6 del micro, l'hai messo ? Senza la USB non funziona perché serve al regolatore interno da 3V che alimenta il driver usb.
Sisi, messo. Proverò a aggiungere quello da 10uf. Comunque mi è arrivata la scheda stampata, quindi proverò direttamente lì (sperando di non aver fatto errori ) Potrebbe essere anche un falso contatto nelle breadboard o il jumper che è crimpato male (me ne sono capitati parecchi )
Vi faccio sapere appena finisco di saldarla in settimana!