.: HosiriS :.

Informatica e non solo

Burn ATMEL

Posted by hosiris su gennaio 10, 2012

Sono ormai note le vaste possibilità di utilizzo di Arduino, ma i vantaggi offerti da questa piattaforma di prototipazione vengono vanificati dal ricorrente uso di breadboard su cui i circuiti vengono montati e smontati in base al progetto che si sta realizzando.
Purtroppo spesso di questi progetti rimane solo il ricordo e qualche foto…

Così come è possibile leggere sul sito di arduino, esistono varie tecniche per programmare chip ATMEL vergini. Allora perché non sfruttare questa possibilità per realizzare schede reali?

Delle varie tecniche dimostrate in rete, la più semplice risulta essere quella che sfrutta un circuito secondario: lo USBtinyISP.

Purtroppo questa strada mi è risultata ostica perché non riesco a far funzionare il sistema di programmazione… ma sono testardo e quando decido di raggiungere uno scopo nulla può fermarmi. Ho deciso quindi di effettuare queste operazioni tramite una tecnica che sfrutta Arduino ed una breadboard.

Lo schema circuitale è il seguente:

Ed ecco la lista della spesa:

  • Resistenza da 10kOhm
  • Resistenza da 120Ohm
  • 2 Condensatori da 22pF
  • Condensatore da 10uF
  • Quarzo da 16MHz
  • Chip AtMel vergine (io ho usato un ATMEGA328P-PU)
  • Arduino (io ho usato Arduino Uno)
  • Cavetti vari
  • Socket vari

Seguendo lo sketch avremo un risultato simile al seguente:

Da notare la presenza di una coppia resistenza-condensatore, che sarà necessaria qualora si presentino dei problemi con l’autoreset. Per il momento teniamo staccato quel pin e seguiamo i passi successivi.

Colleghiamo Arduino al PC tramite porta USB e apriamo l’IDE (attualmente la versione 0023). I passi da seguire sono semplici, ma vanno eseguiti nel giusto ordine per essere certi del risultato.
Da Tools->Board selezioniamo quale Arduino stiamo utilizzando come programmatore (nel nostro caso Arduino Uno).

Adesso selezioniamo la porta a cui è connesso Arduino da Tools->SerialPorts:

Carichiamo lo sketch di esempio chiamato ArduinoISP da File->Examples ed eseguiamo l’upload su Arduino:

Terminata questa operazione, ritorniamo su Tools->Boards e scegliamo che tipo di bootloader vogliamo caricare sul chip vergine. Io ho scelto di caricare il bootloader di Arduino Uno, per cui non cambierò niente:

Adesso arriva la parte più delicata; da Tools->BurnBootloader scegliamo il corretto metodo di programmazione: w/ Arduino as ISP:

Appena cliccato vedremo che i led RX e TX di Arduino cominceranno a lampeggiare all’impazzata. Se questo lampeggio dura per un 15 secondi: COMPLIMENTI, avete ottenuto ciò che desideravate. Io non sono stato così fortunato e, dopo pochissimi secondi, ho ricevuto un bel messaggio di errore:

"avrdude: stk500_getsync(): not in sync: resp=0x15"

Il problema è noto e dipende dall’autoreset di Arduino, è sufficiente collegare il pin di autoreset nel punto di giunzione tra resistenza e condensatore e ripetere solamente l’ultimo passo.
Vedrete che adesso tutto andrà a buon fine.

Non ancora contento di questa soluzione ho deciso di realizzare un circuito di programmazione da poter utilizzare a piacimento senza dover ogni volta montare il tutto su breadboard.
Di seguito una breve rassegna fotografica sulla realizzazione di questo ultimo circuito:

A questo punto vorrei farvi notare come il circuito così realizzato sia ulteriormente espandibile aggiungendo le connessioni per gli input e gli output e quindi sfruttarlo già come controllore per altri progetti.

Nelle prossime puntate vedremo come inserire gli sketches senza dover sostituire il chip interessato con quello presente sulla board Arduino.

Buon burning

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger cliccano Mi Piace per questo: