Arduino Stand-alone e programmazione con cavo ISP

Messo a punto un progetto con Arduino, potrei decidere di montare l’ATMega 328 (il chip di Arduino) stand-alone, e recuperare Arduino per i prossimi studi/esperimenti.

Si trovano diverse guide online a riguardo, ed io qui riassumerò la mia esperienza, inserendo anche qualche link e qualche documento.

Primo:

ARDUINO Stand-alone

L’ATMega 328, per funzionare, ha bisogno di un quarzo, due condensatori, una resistenza. Nulla altro.

– ATMega 328;

– 1x quarzo da 16 MHz

– 2 x condensatore ceramici da 22 pF;

– 1 x resistenza da 10 k ohm.

Cercando su ebay: “ATMega 328” e spulciando tra i risultati è possibile trovare qualcosa del genere:

cioè il nostro microcontrollore, un quarzo e 2 condensatori.

Questi sono link utili per iniziare a leggere qualcosa a riguardo:

http://arduino.cc/en/Main/Standalone

http://arduino.cc/en/Tutorial/ArduinoToBreadboard

e questo è lo schema ATMega328 essential:

Questa è la corrispondenza tra i PIN dei ATmega168/328 e quelli della scheda Arduino

Questa invece è una bellissima guida, adatta anche a i principianti di Arduino:

GUIDA alle
Tecniche di Programmazione dei
microcontrollori ATMEL
(Versione 4.00 – 23 Agosto 2012)

Realizzata dal Prof. Michele Menniti (27/03/2011)
[Download not found]

La guida spiega tutto molto bene ed io ho voluto provare la tecnica con cavo ISP

“…la … tecnica, definita ISP, è … comoda e potente… uno su tutti il fatto di NON dover togliere il chip dall’Arduino usato come programmatore. NOTA IMPORTANTE: Questo metodo permette di programmare il nostro chip stand alone inviandogli un bootloader… oppure uno sketch; ma quando si manda lo sketch l’eventuale bootloader viene cancellato. Se si vuole creare un chip che contenga entrambi il caricamento dello sketch deve avvenire col metodo seriale oppure mettendo il chip direttamente su Arduino”.

Scelgo il metodo ISP in alternativa al metodo seriale, nonostante sia un po’ più laborioso, per evitare di smontare e rimontare l’ATMEGA328 da Arduino per chissà quante volte. La mia intenzione infatti è quella di montare il chip sul PCB definitivo, e di mantenere la possibilità, il più semplicemente possibile, di ritoccare in qualsiasi momento il software .

Costruisco il connettore ISP, ed il risultato è questo:

Il cavetto che si vede nelle foto viene connesso alla porta ISP di Arduino ed alla porta ISP dell’ATMega destinatario, lasciando però fuori il pin RESET, che deve essere collegato al PIN10 dell’Arduino “programmatore”.

Il tutto è spiegato meglio nella guida.

Visto che ho iniziato i test quando il mio ATMega 328 era ancora sulla breadboard, ho costruito il connettore qui sotto:

Il significato dovrebbe essere chiaro. Uso lo stesso cavo per lavorare sulla breadboard.

ATTENZIONE ad allineare il PIN1 segnato sul vostro cavo con il PIN1 della porta ISP di Arduino.

Sulla breadboard il cavo ISP deve essere collegato al chip ATMega (destinatario) in questo modo:

ed alla scheda Arduino (con funzione di programmatore) in questo modo:

Nota: in alcuni casi, leggo dalla guida, deve essere usato un condensatore al tantalio da 10μF, solo per la fase di programmazione, ed ha funzione di anti-autoreset.

PROGRAMMAZIONE

Per la programmazione seguo con attenzione le istruzioni della guida:

– creo un Arduino Virtuale modificando il file board.txt che si trova nella cartella dell’IDE di Arduino;

– carico su Arduino lo sketck “Arduino ISP”;

– clicco su Strumenti -> Programmatore ->Arduino as ISP

– seleziono l’Arduino virtuale creato prima;

– clicco su File -> Carica con un programmatore.

Ho elencato in pochissime righe ciò che la guida spiega bene e in alcune pagine.

A me il metodo ha funzionato, e non ho avuto bisogno di montare il condensatore anti-autoreset.

Abbiamo imparato a caricare uno sketch su un ATMel standalone.

Alla prossima.

3 replies to Arduino Stand-alone e programmazione con cavo ISP

  1. Salve, grazie per i suggerimenti molto utili. Mi trovo a dover programmare un atmega328p a 20mhz di clock e ho un main.c d compilare. Chiedo cortesemente se è rilevante il fatto di non poter scrivere l’hex in cui ovviamente risulta una f-cpu di 20000000L con l’hardware della board di arduino uno che come sappiamo ha 16mhz di clock. Come posso procedere? È il caso di acquistare un avr programmer e usare avr studio come alternativa più semplice? Grazie.

    • Io non ti so rispondere. Attendiamo qualcuno di più esperto al riguardo..

  2. Buongiorno, sono alle prime armi con arduino uno, ho letto la guida di Menniti e non capendo il collegamento isp tra arduino e standalone 328P-PU, ho letto il suo studio per avere maggiori ragguagli.
    Purtroppo resto lo stesso indeciso su un particolare:
    il reset del connettore arduino dove va collegato?;
    il pin uno del micro dove va collegato?
    Sullo scema elettrico si vede che si collega al pin 5 del connettore ISP mentre dalle foto vedo che si collega (almeno credo) al pin 10 di arduino…..
    Potrebbe darmi delucidazioni.
    Grazie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

wp-puzzle.com logo

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.