Aperta la confezione del programmatore Atmel noterete subito quanto piccolo è il programmatore e quanto grande è la confezione. Il contenuto della confezione lo vedete in foto, c'è tutto il necessario per iniziare a lavorare.
Il cavo in dotazione è di lunghezza standard, in alcuni casi potrebbe rilevarsi corto, meglio acquistare un cavo più lungo che rimediare con prolunghe.
Attenzione che il programmatore oltre ad essere piccolo e pure leggero e privo di piedini di gomma ed è facile che il peso del cavo lo trascini giù per terra. Il contenitore plastico lascia intravedere l'interno, mentre all'esterno non ci sono tasti, in quanto tutte le funzionalità vengono sfruttate attraverso AVR Studio. L'unica interfaccia con l'utente è affidata a due led smd montati sulla scheda di cui uno portato all'esterno tramite una guida ottica. Il primo e di colore verde è preposto per segnalare lo stato di alimentazione, ma anche il traffico di dati sulla usb, il secondo a tre colori al fine di segnalare la modalità operativa come pure errori.
L'accesso all'interno è facilitato da delle clip plastiche accessibili da sotto, sbloccandole tutte 4, si vede la schedina. Normalmente non è necessario aprire il contenitore, questa operazione è necessaria nel caso si voglia aggiornare il firmware interno, qualora ne venga rilasciata una nuova versione. La versione attuale del firmware in data 22/09/2011 è Firmware Version Master : 1.10. Vedi la sezione “aggiornare il firmware” a fine articolo.
Atmel AVRISP MKII: Quick start
L'installazione è necessaria solo per il sistema operativo Windows, ma solo nel caso non abbiate installato la versione 5 di AVR Studio, perché questa contiene tutto il necessario per riconoscere ed usare AVRISP MKII.
Nel caso non abbiate la possibilità di scaricare la versione 5 di AVR Studio, potete installare la versione 4, contenuta nel CD incluso nella confezione, in ogni caso la minima versione compatibile con AVRISP MKII è la 4.12. Solo per Windows è disponibile il manuale d'uso scaricabile da qui. Per scaricare AVR Studio 5 è necessario registrarsi, si possono fare entrambe le cose cliccando qui
Il CD contenuto nella confezione non contiene solo AVR Studio 4, ma anche molta documentazione Atmel, quali datasheet, application note ecc per microcontroller ad 8 e 32 bit. Questa documentazione viene copiata sul PC durante la procedura di installazione, mentre su sistemi operativi unix like si deve fare la copia manuale per trasferire la documentazione sul PC, operazione consigliata in quanto forniscono una miniera di informazioni dettagliate da usare durante lo sviluppo. Oltre alla documentazione sono presenti dei file compressi in formato .zip che contengono sorgenti software da usare per apprendere e sperimentare. Se per Windows le cose sono così semplici e immediate lo si deve alla presenza di AVR Studio che fornisce uno strumento di sviluppo integrato.
Per GNU/Linux ed in genere per sistemi operativi unix-like, le cose potrebbero essere un pò più complesse e i tempi per essere operativi potrebbero allungarsi un poco. Per usare il programmatore si deve fare ricorso al programma avrdude che potete trovare già pronto da installare avviando il gestore di pacchetti della vostra distribuzione. Tuttavia di recente è stata rilasciata la versione 5.11 che difficilmente troverete nel gestore di pacchetti, più probabilmente troverete la versione 5.10. Nel caso voleste l'ultimo rilascio dovete procedere con la compilazione e installazione manuale. In entrambi i casi ricordate che per funzionare con AVRISP MKII è necessario che avrdude sia stato compilato con supporto alle librerie “libusb”, quindi in caso di compilazione non dimenticate di installare il pacchetto di sviluppo libusb-devel, diversamente avrdude non sarà in grado di comunicare con il programmatore AVRISP MKII.
Collegamenti elettrici
Il programmatore AVRISP MKII fornisce il solo connettore ISP a 6 pin, a differenza del suo predecessore avrisp che dispone anche del connettore a 10 pin. Tuttavia aprendo il coperchio si vede un footprint a 10 pin privo di connettore, non c'è modo si sapere se è possibile sfruttarlo saldandoci un connettore in quanto la documentazione ufficiale non mostra lo schematico. Due pin di questo footprint vengono usati per porre il programmatore in modalità aggiornamento.
In mancanza di informazione più dettagliate l'unico connettore sfruttabile e quello ISP standard a 6 pin da collegare alla board (target board) che ospita la MCU su cui si vuole trasferire il programma. La posizione dei pin per questo tipo di connettori è standard, tuttavia il connettore sulla target board solitamente non ha inserimento obbligato, quindi bisogna fare attenzione a fare corrispondere il pin 1 con il filo rosso del flat cable.
In ogni caso il programmatore è protetto da corto circuiti e da inversione di polarità, tuttavia e sempre bene prestare un minimo di attenzione per andare sul sicuro. In caso di dubbio controllate che ogni singolo pin si trovi nella stessa posizione a quella mostrata nell'immagine accanto, specie se avete preparato una board su millefori per ospitare il micro-controllore che volete programmare, ma anche se sfruttare le bread board. In rete trovate molti esempi per collegare un MCU Atmel basta cercare “stand-alone” seguito dalla sigla della MCU.
Il manuale d'uso consigli di seguire il seguente ordine per connettere il programmatore:
-
- Connetti il programmatore al PC tramite il cavo usb in dotazione. Il led dovrebbe lampeggiare brevemente per poi rimanere acceso fisso, questo indica una condizione normale.
-
- Alimenta la target board.
- Connetti il cavo del programmatore alla target board.
Se il programmatore rimane disconnesso dalla target board per x tempo il led tricolore da verde diventa rosso ad indicare che non vi è collegamento alla target board. Connettendo la target board il led diventa verde ad indicare che tutto è connesso come si deve. Terminata questa fase si passa al software che comanda il programmatore.
Avrdude & C
Il programma avrdude è un programma a riga di comando, questo tipo di programmi eseguono alcune operazioni in base agli argomenti forniti dall'utente, diciamo che possiamo modificare il comportamento del programma e/o selezionare delle funzionalità anziché altre in base agli argomenti specificati sulla riga di comando. Quindi gli esempi devono essere digitati su un terminale virtuale come ad es Terminale di Gnome o kterminal di KDE. Inoltre gli esempi si riferiscono al programmatore connesso ad una board Arduino 2009 con a bordo il microcontrollore ATmega328p originale. Dopo avere effettuato la connessione la prima cosa che possiamo fare è leggere lo stato dei fuse tramite il seguente comando:
Se il comando va a buon fine avrdude risponde così:
avrdude: Version 5.11, compiled on Sep 21 2011 at 22:46:11 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is "/etc/avrdude.conf" User configuration file is "/home/mauro/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : usb Using Programmer : avrispmkii avrdude: usbdev_open(): Found AVRISP mkII, serno: 000200064003 AVR Part : ATMEGA328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : STK500V2 Description : Atmel AVR ISP mkII Programmer Model: AVRISP mkII Hardware Version: 1 Firmware Version Master : 1.10 Vtarget : 4.9 V SCK period : 8.00 us avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x1e950f avrdude: safemode: lfuse reads as FF avrdude: safemode: hfuse reads as DA avrdude: safemode: efuse reads as 5 avrdude: safemode: lfuse reads as FF avrdude: safemode: hfuse reads as DA avrdude: safemode: efuse reads as 5 avrdude: safemode: Fuses OK avrdude done. Thank you.
Questa riga: avrdude: usbdev_open(): Found AVRISP mkII, serno: 000200064003, può tornare utile nel caso abbiate più di un programmatore connesso al pc, in tal caso dovete specificare a avrdude quale programmatore avete intenzione di usare. L'argomento -P serve ad indicare il dispositivo hardware che si vuole usare, nel comando precedente è seguito da “usb” perchè c'è solo un programmatore connesso al pc e avrdude non ha scelta. Per specificare il dispositivo è sufficiente prendere gli ultimi 4 numeri del “serno:” (serial number) usandoli in questo modo: -P usb:40:03. Gli ultimi dati visualizzati riguardano i fuse byte, come si vede ci sono 3 byte dedicati ai fuses. lfuse, hfuse, efuse sono nominati nel datasheet rispettivamente Low Fuse, High Fuse, Extended Fuse.
Quanto detto è il minimo indispensabile per mettere in funzione il programmatore AVR ISP MKII usando avrdude, sia su GNU/Linux che su Windows. Tuttavia il prodotto nasce per essere usato con AVR Studio e con questo si riesce a sfruttare a pieno tutte le funzionalità in modo semplice ed immediato, purtroppo AVR Studio può essere eseguito nativamente solo su piattaforma Windows.
Aggiornamento firmware
L'aggiornamento è gestito solitamente in modo automatico da AVR Studio, quando questo contiene una versione più recente del firmware contenuto nel memoria del programatore. Una interruzione forzata della procedura di aggiornamento può compromettere il funzionamento del programmatore, quindi eseguire la procedura su PC portatile con batterie cariche o con PC fisso sotto gruppo di continuità.
La procedure manuale di aggiornamento prevede l'apertura del contenitore al fine di realizzare un ponte provvisorio come visibile nell'immagine sottostante.
Tale ponte deve essere fatto con alimentazione disconnessa, cioè senza connessione usb e senza connettere il cavo ISP alla target board. A connessione effettuata riconnettere il cavo usb al pc, dovreste vedere il led lampeggiare alternando i colori rosso, arancione. Ora eseguire le seguenti fasi:
-
- Avviare l'applicazione “AVRISP mkII Upgrade....” presente nel menù Tools di AVR Studio.
-
- Premi il pulsante “Start Upgrading”.
-
- Attendere la fine dell'aggiornamento e rimuovere il ponte tra i pin 1 e 3.
-
- Togliere e reinserire il connettore usb.
- Premere il pulsante “Done”.
Il programmatore è stato aggiornato e ora lo si può utilizzare.
Nota che questa operazione mi risulta sia possibile solo su Windows.

Ciao fra83, grazie per il commento positivo. Approfitto dell’occasione per chiederti qualcosa in più sul prodotto riguardo al debugger.
Io sono un’utente GNU/Linux e non posso usare AVR Studio quindi non ho potuto vedere il debugger in azione. Mi puoi dare altre informazioni in merito?
Ad esempio quale tipo di debugger posso fare?; Jtag, OneWire o altro.
La cosa mi interessa principalmente perchè il programma che sto sviluppando in C++/Qt non prevede una modalità debugger. Il programma è un front-end per avrdude tuttavia considerando la possibilità offerte da Qt sto considerando l’idea di abbandonare avrdude ed usare invece la libreria statica che questo produce durante la fase di compilazione ovviamente portandola in C++. Il porting in C++ serve più che altro per creare delle API in modo che terzi possano sviluppare un plugin per il proprio programmatore.
Il programma in questione è scaricabile da https://gitorious.org/avrdudequi/pages/Home
Nota che il commento nel wiki non è aggiornato, la gui è stata testata con AVRISP mkii a cui e connessa Arduino 2009 e legge/scrive i fuse, e scrive sulla flash il programma selezionato, ma ancora la lettura da flash non è stata implementata.
Ciao.
Ho avuto modo di utilizzare l’ AVR mkII e devo dire che è un ottimo programmatore e in-circuit debugger, un po’ costoso ma molto performante. Ottimo articolo chiaro e completo di link.
Una curiosità personale quale CMS chi usi per il tuo sito?
È gratuito?
Ciao, penso ti riferisci a https://gitorious.org/, bè non è il mio, mi limito ad usarlo.
Si è gratuito, ma credo lo sia solo per i progetti Open Sources, come il mio.
Come vedi c’è http://qt.gitorious.org/qt il framework Nokia doppia licenza GPL e proprietaria, che uso per AvrDudeQui.
C’è ne sono altri come https://github.com/, http://www.atlassian.com/.
Però non ho idea di quale CMS usino.