Info su Bootloader

Ciao a tutti sto cercando di flashare un ATMega328P stand alone servendomi di un interfaccia USB-TTL e di Bascom ma trovo delle difficoltà nel far riconoscere il Chip al programma. Non credo che sia una questione di configurazione (ho provato di tutto) :) Vorrei piuttosto chiedervi: leggendo qua e la ho visto che è necessario che il bootloader sia precaricato ma ho anche visto che quei chip hanno la siglatura 328P-PU piuttosto che 328P come il mio (quindi già con il bootloader ? che potrei benissimo aver cancellato). Aldilà di questo è necessario nel mio caso che sia "installato" il bootloader sul chip ? Il bootloader non serve solo nel caso si vogliano caricare gli Sketch con Arduino? Mi spiegate per favore in parole semplici quando deve o non deve essere presente. Grazie mille Paolo

Il bootloader non ha niente a che vedere con la sigla del chip

Il chip può essere 328P-PU oppure 328-PU, questo secondo caso è molto particolare e la sua programmazione non è immediata, servono accorgimenti

Se hai cancellato il bootloader o se non c'era all'origine puoi caricarlo mediante programmazione ISP, servendoti di un Arduino funzionante

Il bootloader ti serve solo se poi vuoi caricare lo sketch mediante USB-Seriale, in caso contrario puoi caricare direttamente lo sketch tramite programmazione ISP, sempre mediante un Arduino funzionante.

Il chip deve avere i fuse correttamente impostati per la configurazione alla quale deve lavorare, quindi cambiano a seconda del clock e del fatto che debbano avere o meno il bootloader

Questo Forum non tratta BASCOM, ne io ho esperienza.

Riguardo a Arduino:
Un controler ha bisogno di un bootloader per poter caricare uno sketch attraverso un adattatore USB-seriale. Per mettere un bootloader serve un programmatore ISP.

I controller ATmega328 e ATmega328P hanno un codice di riconoscimento diverso. Nel file Bords.txt deve essere presente.

vedi http://code.google.com/p/arduino/wiki/Platforms

Ciao Uwe

Grazie Michele e grazie Uwe lo so che qui non si tratta Bascom però concedetemi ancora una domanda cosi mi tolgo dall'impasse e dalle.....scatole :) Michele praticamente mi hai detto che non serve il bootloader se voglio caricare uno sketch lontano da Arduino, ho capito bene? (però tu menzioni Arduino e ISP quindi non so se possibile) Nel mio caso posso programmarlo tranquillamente senza Bootloader, e il fatto che non mi venga riconosciuto è solo una questione di settaggi ? Scusate l'uso improprio del forum, ma qui posso di sicuro trovare aiuto :) Grazie

E' un'operazione semplice da fare, devi utilizzare una scheda Arduino UNO, lo sketch ArduinoISP contenuto nell'IDE fra gli esempi, collegare il chip come in questi esempi: http://arduino.cc/en/Tutorial/ArduinoISP

C'è poi un thread corposissimo, è lungo da leggere ma ci sono un sacco di aiuti: http://forum.arduino.cc/index.php?topic=60789.0

Ciao Leo :) ma quale operazione intendi ? Programmare tramite ISP ? Ma la mia domanda veramente era questa, cioè se per programmare un Chip lontano da Arduino serviva il bootloader caricato. Ad ogni modo, ne approfitto perchè nel frattempo che aspettavo la risposta ho provato a caricarlo ugualmente (il bootloader) ma mi restituisce questo errore:

avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check.

Come rimedio ? Intanto vado a spulciare qualcosa. Grazie Paolo

Ragazzi datemi una mano :) Ho guardato in giro anche sul forum ma non credo di aver trovato una soluzione. Mi viene solo da pensare che se via ISP non riesco a flasharlo e che anche con Bascom non riesco a farlo riconoscere, possa essere rotto. Strano comprato nuovo e tenuto nel cassetto fino ad oggi :( Grazie comunque

Per scrivere uno sketch su un chip montato standalone hai due strade: - la via della programmazione ISP - la via della programmazione seriale tramite bootloader

Se usi la seconda, il chip in standalone deve obbligatoriamente avere (ovviamente) il bootloader installato e lo sketch viene spedito sulle linee RX/TX della seriale (connesse ai piedini fisici 2 e 3 del chip) spedendo prima un segnale di reset per far partire il bootloader. Per l'invio dello sketch ti serve un convertitore USB/seriale oppure anche l'Arduino in sé senza il chip montato sulla scheda (altrimenti programmeresti quest'ultimo).

Se invece usi la programmazione ISP devi collegare i pin 10/11/12/13 dell'Arduino rispettivamente ai piedini fisici 1/17/18/19 del chip in standalone ed usare lo sketch ArduinoISP caricato sulla scheda Arduino. Cambia ovviamente la board da selezionare per la programmazione. Ma è tutto scritto nel super-thread che ti ho linkato.

PS: è un argomento molto lungo e trattato tante volte, è dispersivo riscrivere tutte le info in questo thread: se fai una ricerca o leggi quel thread troverai tutto il materiale che ti occorre.

Lo so Leo che è una cosa trattata milioni di volte, eppure ognuno è un caso a se......e comunque io adesso vorrei inserirci dentro il bootloader.

Mi sono letto post a non finire, probabilmente io non sono cosi abile da risolvere la questione, ma con alcuni esempi visti ho modificato la board, ho cambiato la signature al Conf di AvrDude.................boh sicuramente sbaglio qualcosa.

Se cerco di flashare il bootloader via ISP ottengo: avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. (qui il chip di Arduino deve restare inserito no?)

Poi sono passato a inserire il nuovo chip direttamente su Arduino (togliendo dallo zoccolo l'originale) giusto per vedere cosa succedeva ma ottengo un errore Stk500_Getsync(); not in sync rep 0x00 immagino perchè non ci sia dentro il bootloader, che dovrei riuscire a caricare e che invece non ne vuole sapere :( Vabbeh Leo grazie lo stesso della pazienza, come sempre del resto :) Naturalmente ci riproverò bye

Ricordo anche che il bootloader standard di Arduino UNO è scritto per funzionare a 16Mhz e il chip in stand alone deve avere il quarzo a 16Mhz corredato da i due condensatori da 22pF. Va bene anche un risonatore ceramico, quelli con 3 piedini, anche se meno preciso.

EDIT. Ma per la programmazione ISP stai usando un convertitore USB? O hai un programmatore?

Grazie PaoloP fai conto che ho solo Arduino e un Chip Vergine. Il circuito è corretto e munito del quarzo da 16Mhz e da i due condensatori come si vede nel tutorial ISP e nei vari tutorial sparsi per internet. :)

Ragazzi ho risolto :) Ho perso due giorni ad impazzire quando evidentemente quell'unico forellino della mia Breadboard non faceva bene contatto. (immagino dove c'era il quarzo visto che i piedini sono sottili) Me ne sono accorto solo perchè per scrupolo ho voluto rifare il circuito spostando i posti ai componenti grrrrrrrrrrrrrrrrrrrrrrrrrr. Mi spiace avervi fatto perdere tempo, forse avrei dovuto pensarci prima ma se non altro l'errore servirà a qualcun'altro :) Grazie ancora a tutti.

Sì servirà a quello cui venderai la tua breadboard difettosa :grin:

Scusate, ma c'è un sistema per capire se il bootloader è stato caricato sul Chip? La procedura con Arduino in veste ISP sembra andata a buon fine, però lontano da Arduino il chip non mi viene riconosciuto e con altro software di programmazione ho errore avrdude:stk500_getsync():not in sync:resp=0X00

Io ho montato il chip sullo zoccolo della Board di ARDUINO (scardinando l'originale :)) e gli sketch vengono caricati, ma non so se serve a stabilire che il bootloader sia funzionante. Qualche altro suggerimento ? Grazie.

Antares62: Io ho montato il chip sullo zoccolo della Board di ARDUINO (scardinando l'originale :)) e gli sketch vengono caricati, ma non so se serve a stabilire che il bootloader sia funzionante. Qualche altro suggerimento ? Grazie.

questo test è garanzia assoluta che il bootloader è caricato sul chip, l'altro errore probabilmente dipende da errori nei collegamenti o da una non corretta gestione del segnale di reset

Forse é colpa dal "altro software". Ciao Uwe

OK Grazie, intanto -1 (inteso come eliminazione di un problema) :)

Ciao Michele, chiedo a te perchè la tua risposta è stata quella che mi ha aiutato di più e avendo letto dei tuoi vecchi post in merito ti vorrei chiedere una cosa. Allora ho trovato il sistema di mettere uno switch per il reset, ma la procedura per caricare uno sketch dalla Board di Arduino è alquanto complicata, nel senso che devo tenere premuto lo switch e dopo fare l'upload dello sketch. Ad un certo punto devo rilasciare lo switch e se sono fortunato lo sketch viene compilato. Però devo stare nelle grazie del signore per azzeccare il momento giusto, inoltre questa procedura sembra funzionare solo dalla Board di Arduino. Con l'interfaccia GUI ARV o AVRDudess sembra non avere effetto. Inoltre come avevo detto nel primo post, sto usando un PL2303 e in una discussione un utente diceva di saldare direttamente sul Chip del PL2303 un condensatore sul pin DTR_N ma a parte l'impresa il mio PL2303 è stato resinato per cui dovrei smadonnare parecchio. C'è un'altro sistema per fare il reset automatico. Grazie ancora..................portate pazienza :)

[OT] Solo se mi prometti di non usare più il verbo sm…are :slight_smile: ci sono tanti sinonimi ugualmente efficaci, purtroppo il significato originale è quello della bestemmia più odiosa, e anche se ora è diventato di uso comune in senso molto meno impegnativo, resta sempre un gran brutto termine. [/OT]
Il reset è un impulso del convertitore USB-Seriale 16u2 che viene pilotato dall’IDE mediante i segnali USB ed inviato in un momento ben preciso al micro 328. Con l’IDE bisogna sudare un po’ a gestirlo manualmente ma alla fine si ci prende la mano, le GUI probabilmente non lo usano perché non ricorrono al bootloader per caricare gli sketch che infatti sono in formato .hex (almeno per AVRDUDESS).
Il PL2303 è un convertitore USB-Seriale e deve uscire con 5 fili: 5V, GND, TX, RX e DTR (altri chip usano l’RTS); il condensatore in serie da 100nF è indispensabile in quanto serve a trasformare il segnale di reset in un impulso molto breve, se non lo metti non ti funziona, ma non è affatto necessario “scavare” fino al pin, lo puoi mettere benissimo sul pin del micro da programmare, quindi a valle del filo dello spinotto. Se invece il DTR non è portato sullo spinotto ed hai solo quattro fili allora non c’è speranza di poter usare quel convertitore, tentare di togliere la resina è decisamente meno intelligente che comprare un nuovo convertitore “completo” a 2-3 euro anche se, personalmente, ho preferito spenderne una decina per il mitico ed infallibile FT232RL (da Sparkfun); inoltre tempo fa ho realizzato anche un bellissimo progetto con l’MCP2200 della Microchip, pubblicato su Elettronica IN.
Non so se la risposta è stata esaustiva, in caso contrario devi postare le foto del materiale che hai e dei collegamenti che effettui, anche perché non capisco perché tu non possa usare l’intero Arduino per caricare questo firmware nel micro, ovvio che mi sfugge qualcosa :grin: