USBtiny su Linux

Oggi mi è arrivato il programmatore USBTiny di Adafruit.
Dopo il montaggio ho voluto sperimentare il prodotto per verificare che lo avessi montato bene e che fosse in grado di programmare un Atmega.

Premessa:
SO: Ubuntu 10.10
Arduino: Uno
Programmatore: Adafruit USBTiny

Dopo aver connesso il programmatore al PC tramite un cavetto USB, ho montato l'Atmega "vergine" sulla Uno e poi ho collegato l'USBTiny all'Arduino tramite il cavettino a 6 pin. Risultato: sia da terminale che da IDE di Arduino, NON sono riuscito a programmare il chip. Il messaggio era:
avrdude: initialization failed, rc=-1

Ho quindi lanciato l'IDE come root e magicamente sono riuscito ad usare il programmatore caricando correttamente il bootloader dell'Uno sull'Atmega.

Ho cercato con Google e sono giunto a questa pagina:
http://www.ladyada.net/make/usbtinyisp/avrdude.html
dove si spiega come dare i permessi permanenti ai normali utenti per poter accedere all'USBTiny.

  1. premete ALT+F2 e digitate "gksudo gedit" per Gnome o "kdesudo kedit" se usate KDE. Inserite la password di root o la vostra password personale (a seconda delle distro)
  2. copiate nell'editor il seguente comando:
SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"
  1. salvate il file come "usbtiny-perms.rules" nella cartella "/etc/udev/rules.d"
  2. riavviate

A questo punto avete i permessi per poter programmare con l'USBTiny.

PROGRAMMAZIONE
Connessioni:
0) disconnettete ogni cosa dalle alimentazioni!

  1. prendete l'Arduino Uno e togliete il chip di serie;
  2. montate l'Atmega "vergine"
  3. collegate il cavetto a 6 pin dell'USBtiny al connettore ICSP sull'Arduino tenendo bene a mente che il connettorino di aggancio deve avere il dentino rivolto verso l'interno della scheda Arduino e la fettuccia deve avere il cavettino rosso dalla parte del led "on" dell'Arduino. In pratica, deve essere montato "alla rovescia", col cavetto che fa una curva prima di tornare indietro.
  4. collegate un cavetto USB all'USBtiny e lasciate il ponticello dell'USBTiny (quello accanto ai 2 cavetti di connessione) inserito. NON alimentate l'Arduino con un proprio cavetto USB o tramite alimentatore: ci pensa il programmatore.
  5. Avviate l'IDE di Arduino
  6. scegliete da "Tools/Burn bootloader" la voce "w/ USBTinyISP".
  7. Aspettate (circa 1 minuto)
  8. quando la luce rossa dell'USBTiny si spegne e l'IDE segnala l'avvenuta programmazione, potete disconnettere tutto e collegare il cavetto USB all'Arduino.
  9. Per prova caricate lo sketch di esempio "Basic/Blink" per verificare che l'Atmega accetti gli sketch tramite Arduino.

In sintesi:
se usate Linux e state smadonnando con l'USBtiny (o qualche altro programmatore), forse potrebbero essere solo problemi di permessi. Provate come root.

EDIT:
post riveduto con la soluzione permanente pubblicata su Adafruit

Spero che serva a qualcun altro :smiley:

Utilissimo!!
Anche io avevo scoperto qualcosa di simile:
selezionando dall'ide arduino burn bootloader/parallel programmer non si hanno i permessi per usare la parallela
penso si debba fare una procedura analoga alla tua!
ma nel mio caso penso possa bastare lanciare da terminale sudo arduino,anche se in questo caso parte la versione 018 quella scaricata dai repository!
approposito c'è un modo per lanciare la 022 con sudo?
io la faccio partire da una cartella sulla scrivania,ma con sudo anche portandomi da terminale nella cartella e lanciando sudo arduino parte sempre la 018...
PS le mie erano solo prove sto aspettando che mi arrivino gli atmega168
i 328 non sono riuscito a trovarli vergini mica hai qualche link?

Togli quella installata tramite gestore di pacchetti della tua distro, poi ti scarichi la IDE dal sito e lanci l'installer.
Questo ti metterà l'IDE nella tua /home. Crei un link simbolico sulla scrivania e sei a posto.

Sì, funziona anche lanciando con "sudo". Per far ciò basta entrare nella cartella dove hai l'eseguibile "Arduino" e dare:
sudo ./arduino
così lanci l'IDE con i permessi di root.
ATTENTO però che in questo modo puoi in teoria cancellare file di sistema magari sostituendoli con un bello sketch XD
Ecco perché è preferibile dare i permessi all'utente.

scusami ma cosa intendi per lanci l'installer??
io ho scaricato la 0022.tgz
l'ho estratta e messa sulla scrivania ho dato i permessi per eseguire l'eseguibile arduino doppio click ->esegui... la usavo così!
ma l'installer non so proprio dov'è
ho ubuntu 10.10

Mi son confuso con Eagle, che ha un file da lanciare per far partire l'installazione :wink:
E' vero, Arduino è già usabile.

Ottima descrizione ma cercando indietro nella mia memoria non ricordo di aver fatto tutta questa procedura per far funzionare il mio usbTiny, saro' piu' fortunello! :sunglasses:

Scusate se forse non e' la sede ma rilancio con una domanda al volo: da shell come cavolo si fa a compilare un .pde?

Io non lo so.
L'unica che ho trovato è questo script:
http://arkku.com/misc/arduino_make.sh
(post relativo: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1253788114)

Scusate se forse non e' la sede ma rilancio con una domanda al volo: da shell come cavolo si fa a compilare un .pde?

avr-gcc
..ed ottineni l'HEX.
Con avrdude lo puoi poi caricare su Arduino.

Puoi trovare qualche info in più anche su questo playground:
http://www.arduino.cc/playground/Italiano/Avrdude-openwrt
(anche se è orinetato a openwrt, è valido per tutte le altre piattafome *nix; win mi rifiuto anche solo di provare :-X)

L'unica che ho trovato è questo script:
http://arkku.com/misc/arduino_make.sh
(post relativo: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1253788114)

interessante, mi mancava!

Sei sicuro di poter usare avr-gcc su un file .pde?
A me su un file di prova denominato leds.pde ha dato:

/usr/lib/gcc/avr/4.3.5/../../../avr/bin/ld:./leds.pde: file format not recognized; treating as linker script
/usr/lib/gcc/avr/4.3.5/../../../avr/bin/ld:./leds.pde:24: syntax error

In un post sul forum ho letto:

You can't compile the PDE-files directly. The Arduino IDE does some preprocessing of these files, which includes adding prototypes, #includes and - most importantly - a main-function. So to be able to compile a pde-file you need to add these things manually.

So che va scritta parte dell'intestazione del file manualmente, ma probabilmente e' automatizzabile. Guardero' i link! Grazie :slight_smile: