14 comments on “Loading bootloader on standalone Arduino – Arduino UNO ISP

  1. Ciao Toggio ottima guida.

    Ho seguito passo passo ma ho sempre lo stesso errore e non capisco come procedere.
    Ecco l’errore:

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

    Ho provato ad utilizzare sia la versione arduino IDE 1.0, 0022 e 0023 ma non cambia nulla. Ho inserito anche il condensatore da 22micro F. I passi che seguo sono:

    Eseguo l’upload di ArduinoISP selezionando Arduino UNO come scheda.
    Scollego il cavo USB e procedo coi collegamenti come da figura (senza crystal).
    A questo punto, lasciando l’integrato sulla scheda arduino UNO e collegando su breadboard il resto seleziono Tools –> Board –> ATmega328 on a breadboard (8 MHz internal clock) poi Burn Bootloader –> w/ Arduino as ISP.

    Niente da fare. Non capisco dove sia l’errore.

    • Caro Michele,
      sapessi quanto ho tribulato anche io all’inizio a riuscire a farlo funzionare ‘sto cavolo di Atmega328… ore ed ore con quell’errore senza capire dove stava il problema…
      Allora, innanzitutto il problema è abbastanza generico (se non colleghi del tutto l’Atmega328 ti da lo stesso errore!!!).
      Detto questo, ti consiglio di effettuare le seguenti verifiche:
      1 – Lo sketch ArduinoIsp contenuto nell’IDE 1.0 non funziona!!! Non tanto l’IDE in se, ma proprio lo sketch contenuto in esso, quindi indipendentemente da quali IDE usi, l’upload di ArduinoISP fallo aprendo l’esempio contenuto nella versione 0022 o 0023
      2 – Prova innanzitutto a lanciare il “Burn Bootloader” usando come board “Arduino Duemilanove or Nano w/ ATmega328” con cristallo e condensatori (clock a 16Mhz) e verifichiamo se così funziona. Questo perchè se l’Atmega328 non è “vergine” ma è già programmato con il bootloader di Arduino, funziona a 16Mhz e quindi non puù comunicare senza oscillatore esterno
      3 – Se la prova seguente è andata a buon fine, allora riprova a programmare l’Atmega328 a 8Mhz, ma LASCIA L’OSCILLATORE ESTERNO LA PRIMA VOLTA CHE ESEGUI QUESTA PROCEDURA
      4 – Se invece la prova precedente non è andata a buon fine c’è qualche altro problema. Il problema tipico è quello del condensatore non messo bene che effettua il reset dell’Arduino UNO. Prova a ricollegare tutto da capo, prestando molta attenzione all’ordine del cablaggio. Un trucco potrebbe essere di seguire il seguente ordine: collegare tutto tranne il +5 volts all’Atmega328 da programmare, il condensatore e l’Arduino UNO tramite USB. Collegare Arduino UNO all’USB, collegare i +5 all’Atmega328 e collegare il condensatore
      Fammi sapere se sei riuscito, altrimenti proviamo a rivedere il tutto.
      Saluti

      • Ottimo ci sono riuscito grazie ai consigli. Sono arrivato a caricare su atmega328 il boot 8mhz. Fatto questo ho preso l’atmega pronto in configurazione minimal ho tolto da arduino l’atmega328.
        Poi ho selezionato lo sketch blink e ho tentato l’upload su breadboard aggiungendo anche il condensatore ma nulla mi riporta errori di tipo stk500_getsync not in sync.

        Ciao e grazie

    • Ciao Toggio,
      in effetti avevo scordato il collegamento corretto. Ora però ho un problema. Temo, nei vari giri e tentativi, d’aver caricato su i miei due ATMega328 il bottloader da 8Mhz.
      Ora quando tento di caricare bootloader o altro mi riporta sempre l’errore di sync.

      Sai come posso ripristinare il bootloader inziale?

      Grazie e saluti

      • CIao Michele,
        per ripristinare il bootloader iniziale, il collegamento è lo stesso, solo che se il bootloader attuale e a 8Mhz, devi fare l’upload del bootloader senza utilizzare i cristalli esterni, poichè in questo momento non è programmato per usare l’oscillatore esterno.
        Saluti

  2. Ciao a tutti quando si usa la scheda arduino uno in questa configurazione bisogna togliere il chip atmega che è installato sulla scheda oppure no?

  3. Ovviamente no,
    come spiegato nell’articolo devi caricare lo sketch Arduino ISP che va a finire proprio sul chip atmega che è installato sulla scheda. Se lo togli, non può funzionare. Ti confondi con l’altro sistema, quello che permette di caricare gli sketch su un Arduino Standalone con bootloader (vedi http://arduinoelettronica.wordpress.com/2012/02/06/arduino-standalone-arduino-senza-arduino/), in questo caso Arduino diventa un semplice convertitore usb/seriale e, solo in questo caso, va tolto l’atmega dalla scheda Arduino.
    Spero di essere stato d’aiuto
    A presto
    Luca

  4. Ciao, sto provando a programmare un atmega8 con cristallo interno a 8MHZ. La procedura è la stessa? Cosa dovrei mettere dentro il file boards.txt? Ho trovato della roba sui vari siti web, ma non ci riesco!! Vorrei fare un telecomando IR tascabile, senza il cristallo esterno è abbastanza preciso per inviare segnali a 38kHz, che tu sappia?
    Grazie,
    Daniele

    • Ciao Daniele,
      sull’Atmega8, non è possibile caricare il bootloader di Arduino così com’è.
      Puoi programmare però l’Atmega8 con la procedura descritta nel mio articolo “Atmega328 standalone senza il bootloader di Arduino”, oppure seguire la procedura che trovi qui:
      http://todbot.com/blog/2009/05/26/minimal-arduino-with-atmega8/
      Praticamente va aggiunto il bootloader “ATmegaBOOT.hex” nella cartella bootloader di Arduino.
      In ogni caso in boards.txt devi aggiungere la seguente sezione:

      ##############################################################

      atmega8noxtal.name=ATmega8-noxtal @8MHz
      atmega8noxtal.upload.protocol=stk500
      atmega8noxtal.upload.maximum_size=7168
      atmega8noxtal.upload.speed=38400

      atmega8noxtal.bootloader.low_fuses=0xe4
      atmega8noxtal.bootloader.high_fuses=0xc4
      atmega8noxtal.bootloader.path=atmega8_noxtal
      atmega8noxtal.bootloader.file=ATmegaBOOT.hex
      atmega8noxtal.bootloader.unlock_bits=0x3F
      atmega8noxtal.bootloader.lock_bits=0x0F

      atmega8noxtal.build.mcu=atmega8
      atmega8noxtal.build.f_cpu=8000000L
      atmega8noxtal.build.core=arduino

      ##############################################################

      A presto
      Luca

  5. Pingback: Programming a bare AVR Controller | weathergadget

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s