skect arduino uno

salve, qualcuno potrebbe darmi una mano, ho acquistato un atmega 328p per arduino uno con il bootloader già istallato, mi accade qualcosa di strano, se carico un programma di esempio funziona, ma se carico un programma dove necessita la memoria eprom lui non esegue il programma che funziona benissimo con l'atmega originale di arduino, come posso risolvere questo problema o formattarlo per renderlo vergine... grazie

In che senso non esegue il programma (la MCU comunque qualche cosa esegue) ? Cosa fa esattamente ? Dove riscontri il problema ?

Non esiste il concetto di "formattare", mica sei su un PC ... al limite, avendo un programmatore ISP, puoi ricaricare il bootloader e riprogrammare i fuse o eliminare del tutto il bootloader e caricare solo via IPS.

Guglielmo

grazie di averi risposto, praticamente non mi riconosce parte dello skect che gli carico, esempio non mi riconosce la chiave del rfid che è in memoria, oppure non mi attiva l'allarme, cose che con l'atmega che ho staccato dall'arduino fà..se rimetto l'atmega originale dove c'è istallato lo skect funziona tutto perfettamente... credo sia un problema di bootloader...posso riscrivere sopra il bootloader o non cambia nulla..

Non è che il fuse che protegge la EEPROM (EESAVE) non è settato e quindi, quando riprogrammi il chip ,viene anche cancellata la EEPROM e quindi quando il programma riparte, non trova più nulla in EEPROM ?

Hai modo di leggere i fuse e verificare ? E' il bit 3 del Fuse High Byte.

Guglielmo

credo che hai proprio ragione, togliendo l'alimentazione perde tutto ciò che ho programmato, come posso fare per ripristinare il tutto.

grazie

marcadue: credo che hai proprio ragione, togliendo l'alimentazione perde tutto ciò che ho programmato, come posso fare per ripristinare il tutto.

grazie

Quello che dice Guglielmo è un fuse che protegge i dati della EEPROM ogni volta che carichi un programma sulla MCU. Se l'errore ti appare durante lo spegnimento del dispositivo il problema è un altro.

non mi compare un errore, non mi fà eseguire in parte il programma ed appena tolgo l'alimentazione perde il programma caricato ..

Sì scusa, ho usato la parola errore in modo inappropriato! Tra l'altro tornando al discorso fuse da una recente discussione si è detto che questa cancellazione della EEPROM avviene solamente mediante programmazione ISP. Se non ho capito male carichi lo sketch in seriale, mettendo il 328p sull'arduino al posto dell'originale, giusto?

Ma quindi NON quando carichi un nuovo programma via ISP che hai il problema ... ... lo hai solo quando spegni e riaccendi Arduino ? E solo se monti il nuovo chip che hai comprato e non quello originale ?

Ovvero ... ... se prendi Arduino e sullo zoccolo lasci il chip originale tutto funziona, se togli il chip originale e monti nello zoccolo il chip che hai comprato non funziona ... giusto o ho capito ancora male ?

Guglielmo

si hai capito bene , quello originale funzione perfettamente, quello comprato mi crea questi problemi e perde la memoria appena tolgo l'alimentazione..

A me questa cosa non mi torna. Dici che inserendo l'atmega328 nuovo su Arduino, se carichi uno sketch semplice ( ad esempio il Blink) funziona e se ne metti uno piu' complesso non funziona più ? E che dopo aver programmato il chip, con lo sketch semplice ( blink ), se spegni riaccendi non lo esegue piu' ?

Oddio Brunello, mi sono perso … dove ha detto questo ?

Io ho solo capito che il chip originale funziona, quello che ha comprato no … e lo ha appena confermato … ::slight_smile:

Guglielmo

all'inizio

se carico un programma di esempio funziona, ma se carico un programma dove necessita la memoria eprom lui non esegue il programma che funziona benissimo con l'atmega originale di arduino

Ok, grazie :slight_smile:

Quindi, se il comportamento descritto è quello vero … il chip che ha comprato è difettoso, altrimenti non si spiega la differenza … magari ha solo la parte EEPROM guasta …

@marcadue: per curiosità, DOVE ha comprato quel chip e QUANTO lo hai pagato ?

Guglielmo

comprato su ebay, per un costo di euro 3.20, quindi non c'è modo di renderlo nuovamente vergine e provare a ricaricare il bootloader.

grazie lo stesso...

SI, puoi farlo, ma ti occorre un programmatore ISP o usi Arduino come programmatore ISP ... trovi vari esempi on-line di come fare i collegamenti oppure guarda QUI, poi, basta andare nell'IDE, selezionare la giusta board (nel tuo caso Arduino UNO) e poi dal menu Tools -> Burn Bootloader.

Guglielmo