Compilare sketch per ATtiny su IDE 1.5.8

Aggiornamento! Trovate nel sito di Leo la guida per la programmazione dei Tiny con l'IDE 1.5.8 e successivi, con tutti file necessari e le istruzioni per l'inserimento del core nell'IDE. --> http://www.leonardomiliani.com/2014/aggiornato-il-core-attiny-per-lide-1-5-8-di-arduino/

Enjoy! :grin:

Uhm.. domani provo. Tempo fa avevo seguito la stessa procedura ma senza successo. Forse con le ultime versioni dell'IDE hanno cambiato qualcosa. Tu che core Tiny hai usato? Il 100-0017?

Si. l’100-0017. Ma non ho provato l’upload.
Credo ci sia da fare qualche modifica al file board.txt per quanto riguarda il programmatore e l’uso di avrdude.
A meno che se non è specificato, nel file, l’IDE usi i valori di default.

Ho provato (senza fare upload) e funziona anche se tutto il discorso della directory lo fai dentro ad Arduino-IDE
Cioè a me rompe mettere le cose nella cartella dei progetti.
Preferisco fare come per ide 1.0.x e mettere la cartella Tiny sotto IDE
Per me su windows: H:\Arduino\arduino-1.5.4\hardware\Tiny

Ho visto anche un tools che si chiama ArduBlock (in beta, una specie di Scratch per Arduino) e anche li suggeriscono di metterlo sotto Tools dove ci sono i progetti. Anche per questo tools se lo si mette sotto IDE funziona
Per me su windows: H:\Arduino\arduino-1.5.4\hardware\tools\ArduBlockTools

Non ho capito bene... tu dici che l'IDE 1.5.4 vede i nuovi core solo se li installi nel percorso dell'IDE e non nella cartella hardware all'interno di quella degli sketch?

A me piace più la seconda soluzione, perché tengo pulita la cartella dell'IDE ed in caso di cambio di versione non devo preoccuparmi di rimuovere prima le cose importanti ma posso cancellare a colpo sicuro, senza stare a pensarci tanto. Inoltre su alcuni sistemi, se usi i pacchetti precompilati, da utente normale non puoi accedere alle cartelle dell'IDE, e sporchi il sistema infilando dei file in dei percorsi "proibiti" che poi non vengono rimossi in fase di disinstallazione.

leo72: Non ho capito bene... tu dici che l'IDE 1.5.4 vede i nuovi core solo se li installi nel percorso dell'IDE e non nella cartella hardware all'interno di quella degli sketch?

No, funziona in tutti e due i modi e io (preferenza mia) preferisco "inquinare" l'IDE invece della cartella degli sketch. Naturalmente io ragiono su Windows e quindi su cartelle dove ho libero accesso.

Direi comunque che per il Tiny core si fa come si faceva con la 1.0.x tranne per quel passaggio fondamentale scritto da @PaoloP a proposito del file "platform.txt"

Anche su Linux io uso l’IDE messa in una cartella della mia /home per cui non ho problemi di accesso. Però preferisco appunto tenere librerie e core separati, all’interno della cartella degli sketch. Che ho poi su Dropbox per cui ho sincronizzato sempre tutto (sketch, core e librerie) su tutti i computer che ho in casa.

Nid col tuo metodo, il giorno che cambi versione di IDE devi traslare tutto. Se invece hai tutti in Arduino apri il nuovo IDE e hai tutto già pronto, soprattutto le librerie di terze parti.

Se non ho fatto errori (mi sembra di no, seguito la guida di Leo) mi da questo errore quando cerco di fare upload su AtTiny85 usando Arduino Uno as ISP (dove ho già prima caricato lo sketch ArduinoISP)
Ho preso il semplice esempio Blink.

Error while uploading: missing ‘upload.tool’ configuration parameter

Poi ora c’e’ un button “Copy error” che mi copia stà roba (non mi sembra molto utile!!!):

Arduino: 1.5.4 (Windows XP), Board: "ATtiny85 @ 8 MHz  (internal oscillator; BOD disabled)"
Sketch uses 804 bytes (9%) of program storage space. Maximum is 8.192 bytes.
Global variables use 11 bytes of dynamic memory.
  This report would have more information with  "Show verbose output during compilation"
  enabled in File > Preferences.

EDIT: forse ho capito, ho saltato un passaggio.

Devi mettere nel file board.txt dentro /tiny/avr/ per ogni scheda che vuoi usare

nomedellaboard.upload.tool=arduino.arduinoisp

Ad esempio nel board.txt originale per la UNO è

uno.upload.tool=avrdude

Queste sono le piccole correzioni di cui parlavo. Aggiungo il passaggio se mi confermi che funziona.

Naturalmente manca anche il parametro

nomedellaboard.bootloader.tool=

Allora, funziona. Ma: 1. Secondo la guida di Leo nel file boards.txt del TinyCore bisogna remmare le righe .upload.using=pololu e sremmare le righe .upload.using=arduino:arduinoisp Questo va bene per IDE 1.0.5 ma non basta per IDE 1.5.x nel quale bisogna mettere il parametro .upload.tool=arduino:arduinoisp come ha indicato giustamente @PaoloP

Ora perciò nel boards.txt per AtTiny85 a 8Mhz internal oscillator ho le due righe:

attiny85at8.upload.tool=arduino:arduinoisp
attiny85at8.upload.using=arduino:arduinoisp

EDIT: basta il parametro con tool anche per IDE 1.0.x il parametro using non serve più @Leo, aggiorna la tua guida :grin: (forse 1.0.x diverso da precedenti !?!)

  1. Inoltre la cartella Tiny nel caso dell'IDE 1.0.x deve essere SENZA l'ulteriore sottocartella AVR mentre per IDE 1.5.x ci deve essere quella sottocartella in più. Se si mette il TinyCore con sottocartella AVR IDE 1.0.x NON vede più i core del Tiny.

Ecco un buon motivo (a mio parere) per mettere il TinyCore dentro all'IDE. Per la 1.0.x senza cartella AVR a differenza del 1.5.x :grin:

attiny85at8.upload.using=arduino:arduinoisp

lo puoi anche commentare perchè non è usato dall'IDE 1.5.4 e sucessivi.

Puoi provare con

attiny85at8.upload.tool=avrdude
attiny85at8.upload.protocol=arduino

selezionando come programmatore "Arduino as ISP"?

La sotto cartella nella 1.5.4 è necessaria perché divide il core in "architetture". Vedi il core Arduino diviso in avr e sam.

@nid:
un pò la situazione con la 1.0 è cambiata rispetto alle 002x, poi sono anche cambiate la struttura del core ed alcuni file per cui quella guida è un pò obsoleta… :sweat_smile:

PaoloP: attiny85at8.upload.using=arduino:arduinoisp

lo puoi anche commentare perchè non è usato dall'IDE 1.5.4 e sucessivi.

Direi anche da IDE 1.0.x non è più usato se metti la riga .tool (ma nel TinyCore.zip c'e' la riga .using penso per compatibilità con vecchi IDE)

PaoloP: Puoi provare con ...

Sorry Paolo, ho smontato tutto e stò per uscire.

No problem. :grin:

Paolo, funziona solo la programmazione. La scrittura del bootloader mi restituisce questo errore:

avrdude: invalid byte value ({bootloader.unlock_bits}) specified for immediate mode
avrdude: read from file '{bootloader.unlock_bits}' failed

Ho aggiunto .bootloader.tool=avrdude alla board che stavo usando. Sembra però che l'IDE cerchi anche i parametri dei lock bit, che però nel file non ho trovato. Ora vedo un attimo...

Fai riferimento al file board.txt originale. (Arduino/boards.txt at ide-1.5.x · arduino/Arduino · GitHub)
Ad esempio per la UNO è

uno.name=Arduino Uno
uno.vid.0=0x2341
uno.pid.0=0x0043
uno.upload.tool=avrdude
uno.upload.protocol=arduino
uno.upload.maximum_size=32256
uno.upload.maximum_data_size=2048
uno.upload.speed=115200

uno.bootloader.tool=avrdude
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0x05
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.bootloader.file=optiboot/optiboot_atmega328.hex

uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.board=AVR_UNO
uno.build.core=arduino
uno.build.variant=standard

Io in pausa pranzo stavo tentando di usare il sottomenu “processore” ma senza risultato.
Anzi un risultato l’ho avuto: si è impallato tutto. Ho dovuto forzare la chiusura e sovrascrivere la cartella dell’IDE con quella estratta dallo zip scaricato dal sito. :stuck_out_tongue_closed_eyes:

Poi ci possono essere anche più dettagli tipo la YUN

yun.name=Arduino Yún
yun.upload.via_ssh=true

yun.vid.0=0x2341
yun.pid.0=0x0041
yun.vid.1=0x2341
yun.pid.1=0x8041
yun.upload.tool=avrdude
yun.upload.protocol=avr109
yun.upload.maximum_size=28672
yun.upload.maximum_data_size=2560
yun.upload.speed=57600
yun.upload.disable_flushing=true
yun.upload.use_1200bps_touch=true
yun.upload.wait_for_upload_port=true

yun.bootloader.tool=avrdude
yun.bootloader.low_fuses=0xff
yun.bootloader.high_fuses=0xd8
yun.bootloader.extended_fuses=0xfb
yun.bootloader.file=caterina/Caterina-Yun.hex
yun.bootloader.unlock_bits=0x3F
yun.bootloader.lock_bits=0x2F

yun.build.mcu=atmega32u4
yun.build.f_cpu=16000000L
yun.build.vid=0x2341
yun.build.pid=0x8041
yun.build.usb_product="Arduino Yun"
yun.build.board=AVR_YUN
yun.build.core=arduino
yun.build.variant=yun
yun.build.extra_flags={build.usb_flags}

Mettendo lock e unlock dà errori sull’accesso alla memoria dei chip (dice che non torna l’indirizzo). Devo investigare per capire questa IDE da dove recuperi gli indirizzi.

Nel file platform.txt (Arduino/platform.txt at ide-1.5.x · arduino/Arduino · GitHub) c’è lo schema di dei comandi passati ad avrdude.
Esempio:

tools.avrdude.erase.params.verbose=-v -v -v -v
tools.avrdude.erase.params.quiet=-q -q
tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m

tools.avrdude.bootloader.params.verbose=-v -v -v -v
tools.avrdude.bootloader.params.quiet=-q -q
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.ide.path}/hardware/arduino/avr/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m

Il lock bit che viene passato è quello scritto in board.txt.
Arduino IDE 1.5 3rd party Hardware specification · arduino/Arduino Wiki · GitHub