Differenze tra le versioni di "Sanguinololu"
Riga 6: | Riga 6: | ||
Il contenuto da aggiungere per la compatibilità con Atmega1284P è simile a questo, attenzione non è ancora la versione definitva : | Il contenuto da aggiungere per la compatibilità con Atmega1284P è simile a questo, attenzione non è ancora la versione definitva : | ||
− | + | <source> | |
#------------------------------------------------------------ | #------------------------------------------------------------ | ||
# ATmega1284P | # ATmega1284P | ||
Riga 168: | Riga 168: | ||
; | ; | ||
; | ; | ||
− | + | </source> | |
---- | ---- | ||
Questo il contenuto del file boards.txt (/usr/share/arduino/hardware/sanguino/boards.txt) in cui si specificano i valori dei bit di fuses, la frequenza di clock, il file ed il percorso del file bootloader ed altri parametri: | Questo il contenuto del file boards.txt (/usr/share/arduino/hardware/sanguino/boards.txt) in cui si specificano i valori dei bit di fuses, la frequenza di clock, il file ed il percorso del file bootloader ed altri parametri: | ||
− | + | <source> | |
############################################################## | ############################################################## | ||
atmega1284.name=Sanguino W/ ATmega1284p 16mhz | atmega1284.name=Sanguino W/ ATmega1284p 16mhz | ||
Riga 201: | Riga 201: | ||
atmega1284.build.variant=standard | atmega1284.build.variant=standard | ||
# | # | ||
+ | </source> | ||
---- | ---- | ||
Schema collegamenti per la programmazione del bootloader o del firmware via SPI. | Schema collegamenti per la programmazione del bootloader o del firmware via SPI. |
Versione attuale delle 19:21, 4 feb 2016
Sanguinololu è una scheda che viene utilizzata per pilotare stampanti 3d.
Normalmente viene utilizzato un Atmega 644, è possibile inoltre utilizzare un Atmega1284P Pu.
Per programmarlo con l'ide Arduino è necessario aggiungere i dati dell'ATMEG1284P nel file di configurazione di avrdude, tenendo conto che Arduino ne ha una sua copia generalmente in /usr/share/arduino/hardware/tools/avrdude.conf
Il contenuto da aggiungere per la compatibilità con Atmega1284P è simile a questo, attenzione non è ancora la versione definitva :
#------------------------------------------------------------
# ATmega1284P
#------------------------------------------------------------
# similar to ATmega164p
part
id = "m1284p";
desc = "ATmega1284P";
has_jtag = yes;
stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one
avr910_devcode = 0x74;
signature = 0x1e 0x97 0x05;
pagel = 0xd7;
bs2 = 0xa0;
chip_erase_delay = 9000;
pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
"x x x x x x x x x x x x x x x x";
chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
"x x x x x x x x x x x x x x x x";
timeout = 200;
stabdelay = 100;
cmdexedelay = 25;
synchloops = 32;
bytedelay = 0;
pollindex = 3;
pollvalue = 0x53;
predelay = 1;
postdelay = 1;
pollmethod = 1;
pp_controlstack =
0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
hventerstabdelay = 100;
progmodedelay = 0;
latchcycles = 6;
togglevtg = 1;
poweroffdelay = 15;
resetdelayms = 1;
resetdelayus = 0;
hvleavestabdelay = 15;
chiperasepulsewidth = 0;
chiperasepolltimeout = 10;
programfusepulsewidth = 0;
programfusepolltimeout = 5;
programlockpulsewidth = 0;
programlockpolltimeout = 5;
idr = 0x31;
spmcr = 0x57;
allowfullpagebitstream = no;
ocdrev = 3;
memory "eeprom"
paged = no; /* leave this "no" */
page_size = 8; /* for parallel programming */
size = 4096;
min_write_delay = 9000;
max_write_delay = 9000;
readback_p1 = 0xff;
readback_p2 = 0xff;
read = " 1 0 1 0 0 0 0 0",
" 0 0 x x a11 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
write = " 1 1 0 0 0 0 0 0",
" 0 0 x x a11 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" i i i i i i i i";
loadpage_lo = " 1 1 0 0 0 0 0 1",
" 0 0 0 0 0 0 0 0",
" 0 0 0 0 0 a2 a1 a0",
" i i i i i i i i";
writepage = " 1 1 0 0 0 0 1 0",
" 0 0 x x a11 a10 a9 a8",
" a7 a6 a5 a4 a3 0 0 0",
" x x x x x x x x";
mode = 0x41;
delay = 10;
blocksize = 128;
readsize = 256;
;
memory "flash"
paged = yes;
size = 131072;
page_size = 256;
num_pages = 512;
min_write_delay = 4500;
max_write_delay = 4500;
readback_p1 = 0xff;
readback_p2 = 0xff;
read_lo = " 0 0 1 0 0 0 0 0",
"a15 a14 a13 a12 a11 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
read_hi = " 0 0 1 0 1 0 0 0",
"a15 a14 a13 a12 a11 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
loadpage_lo = " 0 1 0 0 0 0 0 0",
" 0 0 x x x x x x",
" x a6 a5 a4 a3 a2 a1 a0",
" i i i i i i i i";
loadpage_hi = " 0 1 0 0 1 0 0 0",
" 0 0 x x x x x x",
" x a6 a5 a4 a3 a2 a1 a0",
" i i i i i i i i";
writepage = " 0 1 0 0 1 1 0 0",
"a15 a14 a13 a12 a11 a10 a9 a8",
" a7 x x x x x x x",
" x x x x x x x x";
mode = 0x41;
delay = 10;
blocksize = 256;
readsize = 256;
;
memory "lock"
size = 1;
read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
"x x x x x x x x x x o o o o o o";
write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
"x x x x x x x x 1 1 i i i i i i";
min_write_delay = 9000;
max_write_delay = 9000;
;
memory "lfuse"
size = 1;
read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
"x x x x x x x x o o o o o o o o";
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
"x x x x x x x x i i i i i i i i";
min_write_delay = 9000;
max_write_delay = 9000;
;
memory "hfuse"
size = 1;
read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
"x x x x x x x x o o o o o o o o";
write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
"x x x x x x x x i i i i i i i i";
min_write_delay = 9000;
max_write_delay = 9000;
;
memory "efuse"
size = 1;
read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
"x x x x x x x x o o o o o o o o";
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
"x x x x x x x x 1 1 1 1 1 i i i";
min_write_delay = 9000;
max_write_delay = 9000;
;
memory "signature"
size = 3;
read = "0 0 1 1 0 0 0 0 x x x x x x x x",
"x x x x x x a1 a0 o o o o o o o o";
;
memory "calibration"
size = 1;
read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
"0 0 0 0 0 0 0 0 o o o o o o o o";
;
;
Questo il contenuto del file boards.txt (/usr/share/arduino/hardware/sanguino/boards.txt) in cui si specificano i valori dei bit di fuses, la frequenza di clock, il file ed il percorso del file bootloader ed altri parametri:
##############################################################
atmega1284.name=Sanguino W/ ATmega1284p 16mhz
# Tipo di protocollo utilizzato per caricare il firmware(stk versione 2).
# Questo protocollo permette di inviare i dati usando la seriale invece che il programmatore per per glia avr
atmega1284.upload.protocol=stk500v2
atmega1284.upload.maximum_size=129024
#Velocità della connessione seriale per il caricamento del firmware. Sul micro questa velocità è impostata
#durante la compilazione del bootloader ed è indipendente dalla velocità impostata sugli sketch.
#Quando il micro viene resettato passa su questa velocità per attendere la stringa inviata per l'inizio del dialogo stk.
atmega1284.upload.speed=115200
#Alcuni bit di fuses che indicano al micro qualce tipo di clock usare, i settaggi della porta jtag ed altri parametri.
atmega1284.bootloader.low_fuses=0xD7
atmega1284.bootloader.high_fuses=0xDC
atmega1284.bootloader.extended_fuses=0xFD
#Quella qui sotto è la cartella in cui si trova il file del bootloader
atmega1284.bootloader.path=Gen7
#Il nome del file che contiene il bootloader compilato da caricare su Sanguinololu
atmega1284.bootloader.file=bootloader-1284P-16MHz.hex
#Bit di blocco e sblocco dell'area di memoria in cui viene scritto il bootloader.
atmega1284.bootloader.unlock_bits=0x3F
atmega1284.bootloader.lock_bits=0x0F
#Probabilmente il tipo di impostazione usato per la compilazione. Se impostato a standard non funziona!
atmega1284.build.mcu=atmega1284p
#Frequenza di lavoro del micrcontrollore (attenzione se cambia, bisogna anche cambiare il bootloader)
atmega1284.build.f_cpu=16000000L
atmega1284.build.core=arduino
atmega1284.build.variant=standard
#
Schema collegamenti per la programmazione del bootloader o del firmware via SPI. In questo caso si usa Raspberry Pi come programmatore. I dettagli per la configurazione di Raspberry come programmatore sono quiProgrammazione dei microcontrollori