AYAB avrdude.conf for OSX
# $Id: avrdude.conf.in 991 2011-08-26 20:50:32Z joerg_wunsch $ -*- text -*- | |
# | |
# AVRDUDE Configuration File | |
# | |
# This file contains configuration data used by AVRDUDE which describes | |
# the programming hardware pinouts and also provides part definitions. | |
# AVRDUDE's "-C" command line option specifies the location of the | |
# configuration file. The "-c" option names the programmer configuration | |
# which must match one of the entry's "id" parameter. The "-p" option | |
# identifies which part AVRDUDE is going to be programming and must match | |
# one of the parts' "id" parameter. | |
# | |
# Possible entry formats are: | |
# | |
# programmer | |
# id = <id1> [, <id2> [, <id3>] ...] ; # <idN> are quoted strings | |
# desc = <description> ; # quoted string | |
# type = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic | | |
# stk600 | stk600pp | stk600hvsp | | |
# avr910 | butterfly | usbasp | | |
# jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw | | |
# jtagmkII_avr32 | jtagmkii_pdi | | |
# dragon_dw | dragon_jtag | dragon_isp | dragon_pp | | |
# dragon_hvsp | dragon_pdi | arduino | wiring; # programmer type | |
# baudrate = <num> ; # baudrate for avr910-programmer | |
# vcc = <num1> [, <num2> ... ] ; # pin number(s) | |
# reset = <num> ; # pin number | |
# sck = <num> ; # pin number | |
# mosi = <num> ; # pin number | |
# miso = <num> ; # pin number | |
# errled = <num> ; # pin number | |
# rdyled = <num> ; # pin number | |
# pgmled = <num> ; # pin number | |
# vfyled = <num> ; # pin number | |
# usbvid = <hexnum>; # USB VID (Vendor ID) | |
# usbpid = <hexnum>; # USB PID (Product ID) | |
# usbdev = <interface>; # USB interface or other device info | |
# usbvendor = <vendorname>; # USB Vendor Name | |
# usbproduct = <productname>; # USB Product Name | |
# usbsn = <serialno>; # USB Serial Number | |
# | |
# To invert a bit, use = ~ <num>, the spaces are important. | |
# ; | |
# | |
# part | |
# id = <id> ; # quoted string | |
# desc = <description> ; # quoted string | |
# has_jtag = <yes/no> ; # part has JTAG i/f | |
# has_debugwire = <yes/no> ; # part has debugWire i/f | |
# has_pdi = <yes/no> ; # part has PDI i/f | |
# has_tpi = <yes/no> ; # part has TPI i/f | |
# devicecode = <num> ; # deprecated, use stk500_devcode | |
# stk500_devcode = <num> ; # numeric | |
# avr910_devcode = <num> ; # numeric | |
# signature = <num> <num> <num> ; # signature bytes | |
# chip_erase_delay = <num> ; # micro-seconds | |
# reset = dedicated | io; | |
# retry_pulse = reset | sck; | |
# pgm_enable = <instruction format> ; | |
# chip_erase = <instruction format> ; | |
# chip_erase_delay = <num> ; # chip erase delay (us) | |
# # STK500 parameters (parallel programming IO lines) | |
# pagel = <num> ; # pin name in hex, i.e., 0xD7 | |
# bs2 = <num> ; # pin name in hex, i.e., 0xA0 | |
# serial = <yes/no> ; # can use serial downloading | |
# parallel = <yes/no/pseudo>; # can use par. programming | |
# # STK500v2 parameters, to be taken from Atmel's XML files | |
# timeout = <num> ; | |
# stabdelay = <num> ; | |
# cmdexedelay = <num> ; | |
# synchloops = <num> ; | |
# bytedelay = <num> ; | |
# pollvalue = <num> ; | |
# pollindex = <num> ; | |
# predelay = <num> ; | |
# postdelay = <num> ; | |
# pollmethod = <num> ; | |
# mode = <num> ; | |
# delay = <num> ; | |
# blocksize = <num> ; | |
# readsize = <num> ; | |
# hvspcmdexedelay = <num> ; | |
# # STK500v2 HV programming parameters, from XML | |
# pp_controlstack = <num>, <num>, ...; # PP only | |
# hvsp_controlstack = <num>, <num>, ...; # HVSP only | |
# hventerstabdelay = <num>; | |
# progmodedelay = <num>; # PP only | |
# latchcycles = <num>; | |
# togglevtg = <num>; | |
# poweroffdelay = <num>; | |
# resetdelayms = <num>; | |
# resetdelayus = <num>; | |
# hvleavestabdelay = <num>; | |
# resetdelay = <num>; | |
# synchcycles = <num>; # HVSP only | |
# chiperasepulsewidth = <num>; # PP only | |
# chiperasepolltimeout = <num>; | |
# chiperasetime = <num>; # HVSP only | |
# programfusepulsewidth = <num>; # PP only | |
# programfusepolltimeout = <num>; | |
# programlockpulsewidth = <num>; # PP only | |
# programlockpolltimeout = <num>; | |
# # JTAG ICE mkII parameters, also from XML files | |
# allowfullpagebitstream = <yes/no> ; | |
# enablepageprogramming = <yes/no> ; | |
# idr = <num> ; # IO addr of IDR (OCD) reg. | |
# rampz = <num> ; # IO addr of RAMPZ reg. | |
# spmcr = <num> ; # mem addr of SPMC[S]R reg. | |
# eecr = <num> ; # mem addr of EECR reg. | |
# # (only when != 0x3c) | |
# is_avr32 = <yes/no> ; # AVR32 part | |
# | |
# memory <memtype> | |
# paged = <yes/no> ; # yes / no | |
# size = <num> ; # bytes | |
# page_size = <num> ; # bytes | |
# num_pages = <num> ; # numeric | |
# min_write_delay = <num> ; # micro-seconds | |
# max_write_delay = <num> ; # micro-seconds | |
# readback_p1 = <num> ; # byte value | |
# readback_p2 = <num> ; # byte value | |
# pwroff_after_write = <yes/no> ; # yes / no | |
# read = <instruction format> ; | |
# write = <instruction format> ; | |
# read_lo = <instruction format> ; | |
# read_hi = <instruction format> ; | |
# write_lo = <instruction format> ; | |
# write_hi = <instruction format> ; | |
# loadpage_lo = <instruction format> ; | |
# loadpage_hi = <instruction format> ; | |
# writepage = <instruction format> ; | |
# ; | |
# ; | |
# | |
# If any of the above parameters are not specified, the default value | |
# of 0 is used for numerics or the empty string ("") for string | |
# values. If a required parameter is left empty, AVRDUDE will | |
# complain. | |
# | |
# NOTES: | |
# * 'devicecode' is the device code used by the STK500 (see codes | |
# listed below) | |
# * Not all memory types will implement all instructions. | |
# * AVR Fuse bits and Lock bits are implemented as a type of memory. | |
# * Example memory types are: | |
# "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high | |
# fuse), "signature", "calibration", "lock" | |
# * The memory type specified on the avrdude command line must match | |
# one of the memory types defined for the specified chip. | |
# * The pwroff_after_write flag causes avrdude to attempt to | |
# power the device off and back on after an unsuccessful write to | |
# the affected memory area if VCC programmer pins are defined. If | |
# VCC pins are not defined for the programmer, a message | |
# indicating that the device needs a power-cycle is printed out. | |
# This flag was added to work around a problem with the | |
# at90s4433/2333's; see the at90s4433 errata at: | |
# | |
# http://www.atmel.com/atmel/acrobat/doc1280.pdf | |
# | |
# INSTRUCTION FORMATS | |
# | |
# Instruction formats are specified as a comma seperated list of | |
# string values containing information (bit specifiers) about each | |
# of the 32 bits of the instruction. Bit specifiers may be one of | |
# the following formats: | |
# | |
# '1' = the bit is always set on input as well as output | |
# | |
# '0' = the bit is always clear on input as well as output | |
# | |
# 'x' = the bit is ignored on input and output | |
# | |
# 'a' = the bit is an address bit, the bit-number matches this bit | |
# specifier's position within the current instruction byte | |
# | |
# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12 | |
# is address bit 12 on input, a0 is address bit 0. | |
# | |
# 'i' = the bit is an input data bit | |
# | |
# 'o' = the bit is an output data bit | |
# | |
# Each instruction must be composed of 32 bit specifiers. The | |
# instruction specification closely follows the instruction data | |
# provided in Atmel's data sheets for their parts. | |
# | |
# See below for some examples. | |
# | |
# | |
# The following are STK500 part device codes to use for the | |
# "devicecode" field of the part. These came from Atmel's software | |
# section avr061.zip which accompanies the application note | |
# AVR061 available from: | |
# | |
# http://www.atmel.com/atmel/acrobat/doc2525.pdf | |
# | |
#define ATTINY10 0x10 /* the _old_ one that never existed! */ | |
#define ATTINY11 0x11 | |
#define ATTINY12 0x12 | |
#define ATTINY15 0x13 | |
#define ATTINY13 0x14 | |
#define ATTINY22 0x20 | |
#define ATTINY26 0x21 | |
#define ATTINY28 0x22 | |
#define ATTINY2313 0x23 | |
#define AT90S1200 0x33 | |
#define AT90S2313 0x40 | |
#define AT90S2323 0x41 | |
#define AT90S2333 0x42 | |
#define AT90S2343 0x43 | |
#define AT90S4414 0x50 | |
#define AT90S4433 0x51 | |
#define AT90S4434 0x52 | |
#define ATMEGA48 0x59 | |
#define AT90S8515 0x60 | |
#define AT90S8535 0x61 | |
#define AT90C8534 0x62 | |
#define ATMEGA8515 0x63 | |
#define ATMEGA8535 0x64 | |
#define ATMEGA8 0x70 | |
#define ATMEGA88 0x73 | |
#define ATMEGA168 0x86 | |
#define ATMEGA161 0x80 | |
#define ATMEGA163 0x81 | |
#define ATMEGA16 0x82 | |
#define ATMEGA162 0x83 | |
#define ATMEGA169 0x84 | |
#define ATMEGA323 0x90 | |
#define ATMEGA32 0x91 | |
#define ATMEGA64 0xA0 | |
#define ATMEGA103 0xB1 | |
#define ATMEGA128 0xB2 | |
#define AT90CAN128 0xB3 | |
#define AT90CAN64 0xB3 | |
#define AT90CAN32 0xB3 | |
#define AT86RF401 0xD0 | |
#define AT89START 0xE0 | |
#define AT89S51 0xE0 | |
#define AT89S52 0xE1 | |
# The following table lists the devices in the original AVR910 | |
# appnote: | |
# |Device |Signature | Code | | |
# +-------+----------+------+ | |
# |tiny12 | 1E 90 05 | 0x55 | | |
# |tiny15 | 1E 90 06 | 0x56 | | |
# | | | | | |
# | S1200 | 1E 90 01 | 0x13 | | |
# | | | | | |
# | S2313 | 1E 91 01 | 0x20 | | |
# | S2323 | 1E 91 02 | 0x48 | | |
# | S2333 | 1E 91 05 | 0x34 | | |
# | S2343 | 1E 91 03 | 0x4C | | |
# | | | | | |
# | S4414 | 1E 92 01 | 0x28 | | |
# | S4433 | 1E 92 03 | 0x30 | | |
# | S4434 | 1E 92 02 | 0x6C | | |
# | | | | | |
# | S8515 | 1E 93 01 | 0x38 | | |
# | S8535 | 1E 93 03 | 0x68 | | |
# | | | | | |
# |mega32 | 1E 95 01 | 0x72 | | |
# |mega83 | 1E 93 05 | 0x65 | | |
# |mega103| 1E 97 01 | 0x41 | | |
# |mega161| 1E 94 01 | 0x60 | | |
# |mega163| 1E 94 02 | 0x64 | | |
# Appnote AVR109 also has a table of AVR910 device codes, which | |
# lists: | |
# dev avr910 signature | |
# ATmega8 0x77 0x1E 0x93 0x07 | |
# ATmega8515 0x3B 0x1E 0x93 0x06 | |
# ATmega8535 0x6A 0x1E 0x93 0x08 | |
# ATmega16 0x75 0x1E 0x94 0x03 | |
# ATmega162 0x63 0x1E 0x94 0x04 | |
# ATmega163 0x66 0x1E 0x94 0x02 | |
# ATmega169 0x79 0x1E 0x94 0x05 | |
# ATmega32 0x7F 0x1E 0x95 0x02 | |
# ATmega323 0x73 0x1E 0x95 0x01 | |
# ATmega64 0x46 0x1E 0x96 0x02 | |
# ATmega128 0x44 0x1E 0x97 0x02 | |
# | |
# These codes refer to "BOOT" device codes which are apparently | |
# different than standard device codes, for whatever reasons | |
# (often one above the standard code). | |
# There are several extended versions of AVR910 implementations around | |
# in the Internet. These add the following codes (only devices that | |
# actually exist are listed): | |
# ATmega8515 0x3A | |
# ATmega128 0x43 | |
# ATmega64 0x45 | |
# ATtiny26 0x5E | |
# ATmega8535 0x69 | |
# ATmega32 0x72 | |
# ATmega16 0x74 | |
# ATmega8 0x76 | |
# ATmega169 0x78 | |
# | |
# Overall avrdude defaults | |
# | |
default_parallel = "lpt1"; | |
default_serial = "com1"; | |
# default_bitclock = 2.5 | |
# | |
# PROGRAMMER DEFINITIONS | |
# | |
# http://wiring.org.co/ | |
# Basically STK500v2 protocol, with some glue to trigger the | |
# bootloader. | |
programmer | |
id = "wiring"; | |
desc = "Wiring"; | |
type = wiring; | |
; | |
programmer | |
id = "arduino"; | |
desc = "Arduino"; | |
type = arduino; | |
; | |
# this will interface with the chips on these programmers: | |
# | |
# http://real.kiev.ua/old/avreal/en/adapters | |
# http://www.amontec.com/jtagkey.shtml, jtagkey-tiny.shtml | |
# http://www.olimex.com/dev/arm-usb-ocd.html, arm-usb-tiny.html | |
# http://www.ethernut.de/en/hardware/turtelizer/index.html | |
# http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html | |
# http://dangerousprototypes.com/docs/FT2232_breakout_board | |
# http://www.ftdichip.com/Products/Modules/DLPModules.htm,DLP-2232*,DLP-USB1232H | |
# http://flashrom.org/FT2232SPI_Programmer | |
# | |
# The drivers will look for a specific device and use the first one found. | |
# If you have mulitple devices, then look for unique information (like SN) | |
# And fill that in here. | |
programmer | |
id = "avrftdi"; | |
desc = "FT2232D based generic programmer"; | |
type = avrftdi; | |
usbvid = 0x0403; | |
usbpid = 0x6010; | |
usbvendor = ""; | |
usbproduct = ""; | |
usbdev = "A"; | |
usbsn = ""; | |
#ISP-signals - lower ACBUS-Nibble (default) | |
reset = 4; | |
sck = 1; | |
mosi = 2; | |
miso = 3; | |
#LED SIGNALs - higher ACBUS-Nibble | |
# errled = 5; | |
# rdyled = 6; | |
# pgmled = 7; | |
# vfyled = 8; | |
#Buffer Signal - ADBUS - Nibble | |
# buff = 9; | |
; | |
# This is an implementation of the above with a buffer IC (74AC244) and | |
# 4 LEDs directly attached, active low. The buff and reset pins are | |
# understood (by avrdude) to be active low, so there's no | |
# need to invert the bits. | |
programmer | |
id = "2232HIO"; | |
desc = "FT2232H based generic programmer"; | |
type = avrftdi; | |
usbvid = 0x0403; | |
# Note: This PID is reserved for generic H devices and | |
# should be programmed into the EEPROM | |
# usbpid = 0x8A48; | |
usbpid = 0x6010; | |
usbdev = "A"; | |
usbvendor = ""; | |
usbproduct = ""; | |
usbsn = ""; | |
#ISP-signals | |
reset = 4; | |
sck = 1; | |
mosi = 2; | |
miso = 3; | |
buff = 5; | |
#LED SIGNALs | |
errled = ~ 12; | |
rdyled = ~ 15; | |
pgmled = ~ 14; | |
vfyled = ~ 13; | |
; | |
programmer | |
id = "jtagkey"; | |
desc = "Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2"; | |
type = avrftdi; | |
usbvid = 0x0403; | |
# Note: This PID is used in all JTAGKey variants | |
usbpid = 0xCFF8; | |
usbdev = "A"; | |
usbvendor = ""; | |
usbproduct = ""; | |
usbsn = ""; | |
#ISP-signals => 20 - Pin connector on JTAGKey | |
reset = 4; # TMS 7 violet | |
sck = 1; # TCK 9 white | |
mosi = 2; # TDI 5 green | |
miso = 3; # TDO 13 orange | |
buff = 5; | |
# VTG VREF 1 brown with red tip | |
# GND GND 20 black | |
# The colors are on the 20 pin breakout cable | |
# from Amontec | |
; | |
programmer | |
id = "avrisp"; | |
desc = "Atmel AVR ISP"; | |
type = stk500; | |
; | |
programmer | |
id = "avrispv2"; | |
desc = "Atmel AVR ISP V2"; | |
type = stk500v2; | |
; | |
programmer | |
id = "avrispmkII"; | |
desc = "Atmel AVR ISP mkII"; | |
type = stk500v2; | |
; | |
programmer | |
id = "avrisp2"; | |
desc = "Atmel AVR ISP mkII"; | |
type = stk500v2; | |
; | |
programmer | |
id = "buspirate"; | |
desc = "The Bus Pirate"; | |
type = buspirate; | |
; | |
# This is supposed to be the "default" STK500 entry. | |
# Attempts to select the correct firmware version | |
# by probing for it. Better use one of the entries | |
# below instead. | |
programmer | |
id = "stk500"; | |
desc = "Atmel STK500"; | |
type = stk500generic; | |
; | |
programmer | |
id = "stk500v1"; | |
desc = "Atmel STK500 Version 1.x firmware"; | |
type = stk500; | |
; | |
programmer | |
id = "mib510"; | |
desc = "Crossbow MIB510 programming board"; | |
type = stk500; | |
; | |
programmer | |
id = "stk500v2"; | |
desc = "Atmel STK500 Version 2.x firmware"; | |
type = stk500v2; | |
; | |
programmer | |
id = "stk500pp"; | |
desc = "Atmel STK500 V2 in parallel programming mode"; | |
type = stk500pp; | |
; | |
programmer | |
id = "stk500hvsp"; | |
desc = "Atmel STK500 V2 in high-voltage serial programming mode"; | |
type = stk500hvsp; | |
; | |
programmer | |
id = "stk600"; | |
desc = "Atmel STK600"; | |
type = stk600; | |
; | |
programmer | |
id = "stk600pp"; | |
desc = "Atmel STK600 in parallel programming mode"; | |
type = stk600pp; | |
; | |
programmer | |
id = "stk600hvsp"; | |
desc = "Atmel STK600 in high-voltage serial programming mode"; | |
type = stk600hvsp; | |
; | |
programmer | |
id = "avr910"; | |
desc = "Atmel Low Cost Serial Programmer"; | |
type = avr910; | |
; | |
programmer | |
id = "usbasp"; | |
desc = "USBasp, http://www.fischl.de/usbasp/"; | |
type = usbasp; | |
; | |
programmer | |
id = "usbtiny"; | |
desc = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/"; | |
type = usbtiny; | |
; | |
programmer | |
id = "butterfly"; | |
desc = "Atmel Butterfly Development Board"; | |
type = butterfly; | |
; | |
programmer | |
id = "avr109"; | |
desc = "Atmel AppNote AVR109 Boot Loader"; | |
type = butterfly; | |
; | |
programmer | |
id = "avr911"; | |
desc = "Atmel AppNote AVR911 AVROSP"; | |
type = butterfly; | |
; | |
# suggested in http://forum.mikrokopter.de/topic-post48317.html | |
programmer | |
id = "mkbutterfly"; | |
desc = "Mikrokopter.de Butterfly"; | |
type = butterfly_mk; | |
; | |
programmer | |
id = "butterfly_mk"; | |
desc = "Mikrokopter.de Butterfly"; | |
type = butterfly_mk; | |
; | |
programmer | |
id = "jtagmkI"; | |
desc = "Atmel JTAG ICE (mkI)"; | |
baudrate = 115200; # default is 115200 | |
type = jtagmki; | |
; | |
# easier to type | |
programmer | |
id = "jtag1"; | |
desc = "Atmel JTAG ICE (mkI)"; | |
baudrate = 115200; # default is 115200 | |
type = jtagmki; | |
; | |
# easier to type | |
programmer | |
id = "jtag1slow"; | |
desc = "Atmel JTAG ICE (mkI)"; | |
baudrate = 19200; | |
type = jtagmki; | |
; | |
programmer | |
id = "jtagmkII"; | |
desc = "Atmel JTAG ICE mkII"; | |
baudrate = 19200; # default is 19200 | |
type = jtagmkii; | |
; | |
# easier to type | |
programmer | |
id = "jtag2slow"; | |
desc = "Atmel JTAG ICE mkII"; | |
baudrate = 19200; # default is 19200 | |
type = jtagmkii; | |
; | |
# JTAG ICE mkII @ 115200 Bd | |
programmer | |
id = "jtag2fast"; | |
desc = "Atmel JTAG ICE mkII"; | |
baudrate = 115200; | |
type = jtagmkii; | |
; | |
# make the fast one the default, people will love that | |
programmer | |
id = "jtag2"; | |
desc = "Atmel JTAG ICE mkII"; | |
baudrate = 115200; | |
type = jtagmkii; | |
; | |
# JTAG ICE mkII in ISP mode | |
programmer | |
id = "jtag2isp"; | |
desc = "Atmel JTAG ICE mkII in ISP mode"; | |
baudrate = 115200; | |
type = jtagmkii_isp; | |
; | |
# JTAG ICE mkII in debugWire mode | |
programmer | |
id = "jtag2dw"; | |
desc = "Atmel JTAG ICE mkII in debugWire mode"; | |
baudrate = 115200; | |
type = jtagmkii_dw; | |
; | |
# JTAG ICE mkII in AVR32 mode | |
programmer | |
id = "jtagmkII_avr32"; | |
desc = "Atmel JTAG ICE mkII im AVR32 mode"; | |
baudrate = 115200; | |
type = jtagmkii_avr32; | |
; | |
# JTAG ICE mkII in AVR32 mode | |
programmer | |
id = "jtag2avr32"; | |
desc = "Atmel JTAG ICE mkII im AVR32 mode"; | |
baudrate = 115200; | |
type = jtagmkii_avr32; | |
; | |
# JTAG ICE mkII in PDI mode | |
programmer | |
id = "jtag2pdi"; | |
desc = "Atmel JTAG ICE mkII PDI mode"; | |
baudrate = 115200; | |
type = jtagmkii_pdi; | |
; | |
# AVR Dragon in JTAG mode | |
programmer | |
id = "dragon_jtag"; | |
desc = "Atmel AVR Dragon in JTAG mode"; | |
baudrate = 115200; | |
type = dragon_jtag; | |
; | |
# AVR Dragon in ISP mode | |
programmer | |
id = "dragon_isp"; | |
desc = "Atmel AVR Dragon in ISP mode"; | |
baudrate = 115200; | |
type = dragon_isp; | |
; | |
# AVR Dragon in PP mode | |
programmer | |
id = "dragon_pp"; | |
desc = "Atmel AVR Dragon in PP mode"; | |
baudrate = 115200; | |
type = dragon_pp; | |
; | |
# AVR Dragon in HVSP mode | |
programmer | |
id = "dragon_hvsp"; | |
desc = "Atmel AVR Dragon in HVSP mode"; | |
baudrate = 115200; | |
type = dragon_hvsp; | |
; | |
# AVR Dragon in debugWire mode | |
programmer | |
id = "dragon_dw"; | |
desc = "Atmel AVR Dragon in debugWire mode"; | |
baudrate = 115200; | |
type = dragon_dw; | |
; | |
# AVR Dragon in PDI mode | |
programmer | |
id = "dragon_pdi"; | |
desc = "Atmel AVR Dragon in PDI mode"; | |
baudrate = 115200; | |
type = dragon_pdi; | |
; | |
programmer | |
id = "pavr"; | |
desc = "Jason Kyle's pAVR Serial Programmer"; | |
type = avr910; | |
; | |
# Parallel port programmers. | |
programmer | |
id = "bsd"; | |
desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; | |
type = serbb; | |
vcc = 2, 3, 4, 5; | |
reset = 7; | |
sck = 8; | |
mosi = 9; | |
miso = 10; | |
; | |
programmer | |
id = "stk200"; | |
desc = "STK200"; | |
type = serbb; | |
buff = 4, 5; | |
sck = 6; | |
mosi = 7; | |
reset = 9; | |
miso = 10; | |
; | |
# The programming dongle used by the popular Ponyprog | |
# utility. It is almost similar to the STK200 one, | |
# except that there is a LED indicating that the | |
# programming is currently in progress. | |
programmer | |
id = "pony-stk200"; | |
desc = "Pony Prog STK200"; | |
type = serbb; | |
buff = 4, 5; | |
sck = 6; | |
mosi = 7; | |
reset = 9; | |
miso = 10; | |
pgmled = 8; | |
; | |
programmer | |
id = "dt006"; | |
desc = "Dontronics DT006"; | |
type = serbb; | |
reset = 4; | |
sck = 5; | |
mosi = 2; | |
miso = 11; | |
; | |
programmer | |
id = "bascom"; | |
desc = "Bascom SAMPLE programming cable"; | |
type = serbb; | |
reset = 4; | |
sck = 5; | |
mosi = 2; | |
miso = 11; | |
; | |
programmer | |
id = "alf"; | |
desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; | |
type = serbb; | |
vcc = 2, 3, 4, 5; | |
buff = 6; | |
reset = 7; | |
sck = 8; | |
mosi = 9; | |
miso = 10; | |
errled = 1; | |
rdyled = 14; | |
pgmled = 16; | |
vfyled = 17; | |
; | |
programmer | |
id = "sp12"; | |
desc = "Steve Bolt's Programmer"; | |
type = serbb; | |
vcc = 4,5,6,7,8; | |
reset = 3; | |
sck = 2; | |
mosi = 9; | |
miso = 11; | |
; | |
programmer | |
id = "picoweb"; | |
desc = "Picoweb Programming Cable, http://www.picoweb.net/"; | |
type = serbb; | |
reset = 2; | |
sck = 3; | |
mosi = 4; | |
miso = 13; | |
; | |
programmer | |
id = "abcmini"; | |
desc = "ABCmini Board, aka Dick Smith HOTCHIP"; | |
type = serbb; | |
reset = 4; | |
sck = 3; | |
mosi = 2; | |
miso = 10; | |
; | |
programmer | |
id = "futurlec"; | |
desc = "Futurlec.com programming cable."; | |
type = serbb; | |
reset = 3; | |
sck = 2; | |
mosi = 1; | |
miso = 10; | |
; | |
# From the contributor of the "xil" jtag cable: | |
# The "vcc" definition isn't really vcc (the cable gets its power from | |
# the programming circuit) but is necessary to switch one of the | |
# buffer lines (trying to add it to the "buff" lines doesn't work in | |
# avrdude versions before 5.5j). | |
# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK | |
# to SCK (plus vcc/gnd of course) | |
programmer | |
id = "xil"; | |
desc = "Xilinx JTAG cable"; | |
type = serbb; | |
mosi = 2; | |
sck = 3; | |
reset = 4; | |
buff = 5; | |
miso = 13; | |
vcc = 6; | |
; | |
programmer | |
id = "dapa"; | |
desc = "Direct AVR Parallel Access cable"; | |
type = serbb; | |
vcc = 3; | |
reset = 16; | |
sck = 1; | |
mosi = 2; | |
miso = 11; | |
; | |
programmer | |
id = "atisp"; | |
desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/> micro-research.co.th"; | |
type = serbb; | |
reset = ~6; | |
sck = ~8; | |
mosi = ~7; | |
miso = ~10; | |
; | |
programmer | |
id = "ere-isp-avr"; | |
desc = "ERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf>"; | |
type = serbb; | |
reset = ~4; | |
sck = 3; | |
mosi = 2; | |
miso = 10; | |
; | |
programmer | |
id = "blaster"; | |
desc = "Altera ByteBlaster"; | |
type = serbb; | |
sck = 2; | |
miso = 11; | |
reset = 3; | |
mosi = 8; | |
buff = 14; | |
; | |
# It is almost same as pony-stk200, except vcc on pin 5 to auto | |
# disconnect port (download on http://electropol.free.fr) | |
programmer | |
id = "frank-stk200"; | |
desc = "Frank STK200"; | |
type = serbb; | |
vcc = 5; | |
sck = 6; | |
mosi = 7; | |
reset = 9; | |
miso = 10; | |
pgmled = 8; | |
; | |
# The AT98ISP Cable is a simple parallel dongle for AT89 family. | |
# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 | |
programmer | |
id = "89isp"; | |
desc = "Atmel at89isp cable"; | |
type = serbb; | |
reset = 17; | |
sck = 1; | |
mosi = 2; | |
miso = 10; | |
; | |
# | |
# some ultra cheap programmers use bitbanging on the | |
# serialport. | |
# | |
# PC - DB9 - Pins for RS232: | |
# | |
# GND 5 -- |O | |
# | O| <- 9 RI | |
# DTR 4 <- |O | | |
# | O| <- 8 CTS | |
# TXD 3 <- |O | | |
# | O| -> 7 RTS | |
# RXD 2 -> |O | | |
# | O| <- 6 DSR | |
# DCD 1 -> |O | |
# | |
# Using RXD is currently not supported. | |
# Using RI is not supported under Win32 but is supported under Posix. | |
# serial ponyprog design (dasa2 in uisp) | |
# reset=!txd sck=rts mosi=dtr miso=cts | |
programmer | |
id = "ponyser"; | |
desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts"; | |
type = serbb; | |
reset = ~3; | |
sck = 7; | |
mosi = 4; | |
miso = 8; | |
; | |
# Same as above, different name | |
# reset=!txd sck=rts mosi=dtr miso=cts | |
programmer | |
id = "siprog"; | |
desc = "Lancos SI-Prog <http://www.lancos.com/siprogsch.html>"; | |
type = serbb; | |
reset = ~3; | |
sck = 7; | |
mosi = 4; | |
miso = 8; | |
; | |
# unknown (dasa in uisp) | |
# reset=rts sck=dtr mosi=txd miso=cts | |
programmer | |
id = "dasa"; | |
desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; | |
type = serbb; | |
reset = 7; | |
sck = 4; | |
mosi = 3; | |
miso = 8; | |
; | |
# unknown (dasa3 in uisp) | |
# reset=!dtr sck=rts mosi=txd miso=cts | |
programmer | |
id = "dasa3"; | |
desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts"; | |
type = serbb; | |
reset = ~4; | |
sck = 7; | |
mosi = 3; | |
miso = 8; | |
; | |
# C2N232i (jumper configuration "auto") | |
# reset=dtr sck=!rts mosi=!txd miso=!cts | |
programmer | |
id = "c2n232i"; | |
desc = "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts"; | |
type = serbb; | |
reset = 4; | |
sck = ~7; | |
mosi = ~3; | |
miso = ~8; | |
; | |
# | |
# PART DEFINITIONS | |
# | |
#------------------------------------------------------------ | |
# ATtiny11 | |
#------------------------------------------------------------ | |
# This is an HVSP-only device. | |
part | |
id = "t11"; | |
desc = "ATtiny11"; | |
stk500_devcode = 0x11; | |
signature = 0x1e 0x90 0x04; | |
chip_erase_delay = 20000; | |
timeout = 200; | |
hvsp_controlstack = | |
0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, | |
0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, | |
0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, | |
0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
hvspcmdexedelay = 0; | |
synchcycles = 6; | |
latchcycles = 1; | |
togglevtg = 1; | |
poweroffdelay = 25; | |
resetdelayms = 0; | |
resetdelayus = 50; | |
hvleavestabdelay = 100; | |
resetdelay = 25; | |
chiperasepolltimeout = 40; | |
chiperasetime = 0; | |
programfusepolltimeout = 25; | |
programlockpolltimeout = 25; | |
memory "eeprom" | |
size = 64; | |
blocksize = 64; | |
readsize = 256; | |
delay = 5; | |
; | |
memory "flash" | |
size = 1024; | |
blocksize = 128; | |
readsize = 256; | |
delay = 3; | |
; | |
memory "signature" | |
size = 3; | |
; | |
memory "lock" | |
size = 1; | |
; | |
memory "calibration" | |
size = 1; | |
; | |
memory "fuse" | |
size = 1; | |
; | |
; | |
#------------------------------------------------------------ | |
# ATtiny12 | |
#------------------------------------------------------------ | |
part | |
id = "t12"; | |
desc = "ATtiny12"; | |
stk500_devcode = 0x12; | |
avr910_devcode = 0x55; | |
signature = 0x1e 0x90 0x05; | |
chip_erase_delay = 20000; | |
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 = 0; | |
hvsp_controlstack = | |
0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, | |
0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, | |
0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, | |
0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; | |
hventerstabdelay = 100; | |
hvspcmdexedelay = 0; | |
synchcycles = 6; | |
latchcycles = 1; | |
togglevtg = 1; | |
poweroffdelay = 25; | |
resetdelayms = 0; | |
resetdelayus = 50; | |
hvleavestabdelay = 100; | |
resetdelay = 25; | |
chiperasepolltimeout = 40; | |
chiperasetime = 0; | |
programfusepolltimeout = 25; | |
programlockpolltimeout = 25; | |
memory "eeprom" | |
size = 64; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read = "1 0 1 0 0 0 0 0 x x x x x x x x", | |
"x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; | |
write = "1 1 0 0 0 0 0 0 x x x x x x x x", | |
"x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
mode = 0x04; | |
delay = 8; | |
blocksize = 64; | |
readsize = 256; | |
; | |
memory "flash" | |
size = 1024; | |
min_write_delay = 4500; | |
max_write_delay = 20000; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x x x x 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", | |
" x x x x x x x a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x x x x a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x x x x a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 5; | |
blocksize = 128; | |
readsize = 256; | |
; | |
memory "signature" | |
size = 3; | |
read = "0 0 1 1 0 0 0 0 x x x x x x x x", | |
"0 0 0 0 0 0 a1 a0 o o o o o o o o"; | |
; | |
memory "lock" | |
size = 1; | |
read = "0 1 0 1 1 0 0 0 x x x x x x x x", | |
"x x x x x x x x x x x x x o o x"; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "calibration" | |
size = 1; | |
read = "0 0 1 1 1 0 0 0 x x x x x x x x", | |
"0 0 0 0 0 0 0 0 o o o o o o o o"; | |
; | |
memory "fuse" | |
size = 1; | |
read = "0 1 0 1 0 0 0 0 x x x x x x x x", | |
"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 x x x x x", | |
"x x x x x x x x i i i i i i i i"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
; | |
#------------------------------------------------------------ | |
# ATtiny13 | |
#------------------------------------------------------------ | |
part | |
id = "t13"; | |
desc = "ATtiny13"; | |
has_debugwire = yes; | |
flash_instr = 0xB4, 0x0E, 0x1E; | |
eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, | |
0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, | |
0x99, 0xE1, 0xBB, 0xAC; | |
stk500_devcode = 0x14; | |
signature = 0x1e 0x90 0x07; | |
chip_erase_delay = 4000; | |
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; | |
hvsp_controlstack = | |
0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, | |
0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, | |
0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, | |
0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
hvspcmdexedelay = 0; | |
synchcycles = 6; | |
latchcycles = 1; | |
togglevtg = 1; | |
poweroffdelay = 25; | |
resetdelayms = 0; | |
resetdelayus = 90; | |
hvleavestabdelay = 100; | |
resetdelay = 25; | |
chiperasepolltimeout = 40; | |
chiperasetime = 0; | |
programfusepolltimeout = 25; | |
programlockpolltimeout = 25; | |
memory "eeprom" | |
size = 64; | |
page_size = 4; | |
min_write_delay = 4000; | |
max_write_delay = 4000; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", | |
"x x 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 0 x x x x x", | |
"x x 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 0 a1 a0", | |
" i i i i i i i i"; | |
writepage = " 1 1 0 0 0 0 1 0", | |
" 0 0 x x x x x x", | |
" x x a5 a4 a3 a2 0 0", | |
" x x x x x x x x"; | |
mode = 0x41; | |
delay = 5; | |
blocksize = 4; | |
readsize = 256; | |
; | |
memory "flash" | |
paged = yes; | |
size = 1024; | |
page_size = 32; | |
num_pages = 32; | |
min_write_delay = 4500; | |
max_write_delay = 4500; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" 0 0 0 0 0 0 0 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", | |
" 0 0 0 0 0 0 0 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 0 x x x x x", | |
" x x x x a3 a2 a1 a0", | |
" i i i i i i i i"; | |
loadpage_hi = " 0 1 0 0 1 0 0 0", | |
" 0 0 0 x x x x x", | |
" x x x x a3 a2 a1 a0", | |
" i i i i i i i i"; | |
writepage = " 0 1 0 0 1 1 0 0", | |
" 0 0 0 0 0 0 0 a8", | |
" a7 a6 a5 a4 x x x x", | |
" x x x x x x x x"; | |
mode = 0x41; | |
delay = 6; | |
blocksize = 32; | |
readsize = 256; | |
; | |
memory "signature" | |
size = 3; | |
read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", | |
"x x x x x x a1 a0 o o o o o o o o"; | |
; | |
memory "lock" | |
size = 1; | |
min_write_delay = 4500; | |
max_write_delay = 4500; | |
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"; | |
; | |
memory "calibration" | |
size = 2; | |
read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", | |
"0 0 0 0 0 0 0 a0 o o o o o o o o"; | |
; | |
memory "lfuse" | |
size = 1; | |
min_write_delay = 4500; | |
max_write_delay = 4500; | |
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"; | |
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"; | |
; | |
memory "hfuse" | |
size = 1; | |
min_write_delay = 4500; | |
max_write_delay = 4500; | |
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"; | |
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"; | |
; | |
; | |
#------------------------------------------------------------ | |
# ATtiny15 | |
#------------------------------------------------------------ | |
part | |
id = "t15"; | |
desc = "ATtiny15"; | |
stk500_devcode = 0x13; | |
avr910_devcode = 0x56; | |
signature = 0x1e 0x90 0x06; | |
chip_erase_delay = 8200; | |
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 = 0; | |
hvsp_controlstack = | |
0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, | |
0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, | |
0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, | |
0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; | |
hventerstabdelay = 100; | |
hvspcmdexedelay = 5; | |
synchcycles = 6; | |
latchcycles = 16; | |
togglevtg = 1; | |
poweroffdelay = 25; | |
resetdelayms = 0; | |
resetdelayus = 50; | |
hvleavestabdelay = 100; | |
resetdelay = 25; | |
chiperasepolltimeout = 40; | |
chiperasetime = 0; | |
programfusepolltimeout = 25; | |
programlockpolltimeout = 25; | |
memory "eeprom" | |
size = 64; | |
min_write_delay = 8200; | |
max_write_delay = 8200; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read = "1 0 1 0 0 0 0 0 x x x x x x x x", | |
"x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; | |
write = "1 1 0 0 0 0 0 0 x x x x x x x x", | |
"x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
mode = 0x04; | |
delay = 10; | |
blocksize = 64; | |
readsize = 256; | |
; | |
memory "flash" | |
size = 1024; | |
min_write_delay = 4100; | |
max_write_delay = 4100; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x x x x 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", | |
" x x x x x x x a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x x x x a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x x x x a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 5; | |
blocksize = 128; | |
readsize = 256; | |
; | |
memory "signature" | |
size = 3; | |
read = "0 0 1 1 0 0 0 0 x x x x x x x x", | |
"0 0 0 0 0 0 a1 a0 o o o o o o o o"; | |
; | |
memory "lock" | |
size = 1; | |
read = "0 1 0 1 1 0 0 0 x x x x x x x x", | |
"x x x x x x x x x x x x x o o x"; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "calibration" | |
size = 1; | |
read = "0 0 1 1 1 0 0 0 x x x x x x x x", | |
"0 0 0 0 0 0 0 0 o o o o o o o o"; | |
; | |
memory "fuse" | |
size = 1; | |
read = "0 1 0 1 0 0 0 0 x x x x x x x x", | |
"x x x x x x x x o o o o x x o o"; | |
write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", | |
"x x x x x x x x i i i i 1 1 i i"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90s1200 | |
#------------------------------------------------------------ | |
part | |
id = "1200"; | |
desc = "AT90S1200"; | |
stk500_devcode = 0x33; | |
avr910_devcode = 0x13; | |
signature = 0x1e 0x90 0x01; | |
pagel = 0xd7; | |
bs2 = 0xa0; | |
chip_erase_delay = 20000; | |
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 0 0 0 0 0", | |
"x x x x x x x x x x x x x x x x"; | |
timeout = 200; | |
stabdelay = 100; | |
cmdexedelay = 25; | |
synchloops = 1; | |
bytedelay = 0; | |
pollindex = 0; | |
pollvalue = 0xFF; | |
predelay = 1; | |
postdelay = 1; | |
pollmethod = 0; | |
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, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 0; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 15; | |
chiperasepolltimeout = 0; | |
programfusepulsewidth = 2; | |
programfusepolltimeout = 0; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 1; | |
memory "eeprom" | |
size = 64; | |
min_write_delay = 4000; | |
max_write_delay = 9000; | |
readback_p1 = 0x00; | |
readback_p2 = 0xff; | |
read = "1 0 1 0 0 0 0 0 x x x x x x x x", | |
"x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; | |
write = "1 1 0 0 0 0 0 0 x x x x x x x x", | |
"x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
mode = 0x04; | |
delay = 20; | |
blocksize = 32; | |
readsize = 256; | |
; | |
memory "flash" | |
size = 1024; | |
min_write_delay = 4000; | |
max_write_delay = 9000; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x x x x 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", | |
" x x x x x x x a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x x x x a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x x x x a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x02; | |
delay = 15; | |
blocksize = 128; | |
readsize = 256; | |
; | |
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 "fuse" | |
size = 1; | |
; | |
memory "lock" | |
size = 1; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90s4414 | |
#------------------------------------------------------------ | |
part | |
id = "4414"; | |
desc = "AT90S4414"; | |
stk500_devcode = 0x50; | |
avr910_devcode = 0x28; | |
signature = 0x1e 0x92 0x01; | |
chip_erase_delay = 20000; | |
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 0 0 0 0 0", | |
"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 = 0; | |
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, 0x01; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 0; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 15; | |
chiperasepolltimeout = 0; | |
programfusepulsewidth = 2; | |
programfusepolltimeout = 0; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 1; | |
memory "eeprom" | |
size = 256; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0x80; | |
readback_p2 = 0x7f; | |
read = " 1 0 1 0 0 0 0 0 x x x x x x x 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 x x x x x x x a8", | |
"a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 64; | |
readsize = 256; | |
; | |
memory "flash" | |
size = 4096; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0x7f; | |
readback_p2 = 0x7f; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x 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", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 64; | |
readsize = 256; | |
; | |
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 "fuse" | |
size = 1; | |
; | |
memory "lock" | |
size = 1; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90s2313 | |
#------------------------------------------------------------ | |
part | |
id = "2313"; | |
desc = "AT90S2313"; | |
stk500_devcode = 0x40; | |
avr910_devcode = 0x20; | |
signature = 0x1e 0x91 0x01; | |
chip_erase_delay = 20000; | |
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 0 0 0 0 0", | |
"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 = 0; | |
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, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 0; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 15; | |
chiperasepolltimeout = 0; | |
programfusepulsewidth = 2; | |
programfusepolltimeout = 0; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 1; | |
memory "eeprom" | |
size = 128; | |
min_write_delay = 4000; | |
max_write_delay = 9000; | |
readback_p1 = 0x80; | |
readback_p2 = 0x7f; | |
read = "1 0 1 0 0 0 0 0 x x x x x x x x", | |
"x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; | |
write = "1 1 0 0 0 0 0 0 x x x x x x x x", | |
"x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 64; | |
readsize = 256; | |
; | |
memory "flash" | |
size = 2048; | |
min_write_delay = 4000; | |
max_write_delay = 9000; | |
readback_p1 = 0x7f; | |
readback_p2 = 0x7f; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x x x 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", | |
" x x x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 128; | |
readsize = 256; | |
; | |
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 "fuse" | |
size = 1; | |
; | |
memory "lock" | |
size = 1; | |
write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", | |
"x x x x x x x x x x x x x x x x"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90s2333 | |
#------------------------------------------------------------ | |
part | |
id = "2333"; | |
##### WARNING: No XML file for device 'AT90S2333'! ##### | |
desc = "AT90S2333"; | |
stk500_devcode = 0x42; | |
avr910_devcode = 0x34; | |
signature = 0x1e 0x91 0x05; | |
chip_erase_delay = 20000; | |
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 0 0 0 0 0", | |
"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 = 0; | |
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, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 0; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 15; | |
chiperasepolltimeout = 0; | |
programfusepulsewidth = 2; | |
programfusepolltimeout = 0; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 1; | |
memory "eeprom" | |
size = 128; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0x00; | |
readback_p2 = 0xff; | |
read = "1 0 1 0 0 0 0 0 x x x x x x x x", | |
"x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; | |
write = "1 1 0 0 0 0 0 0 x x x x x x x x", | |
"x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 128; | |
readsize = 256; | |
; | |
memory "flash" | |
size = 2048; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x x x 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", | |
" x x x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 128; | |
readsize = 256; | |
; | |
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 "fuse" | |
size = 1; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
pwroff_after_write = yes; | |
read = "0 1 0 1 0 0 0 0 x x x x x x x x", | |
"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 0 1 i i i i i", | |
"x x x x x x x x x x x x x x x x"; | |
; | |
memory "lock" | |
size = 1; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
read = "0 1 0 1 1 0 0 0 x x x x x x x x", | |
"x x x x x x x x x x x x x o o x"; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90s2343 (also AT90s2323 and ATtiny22) | |
#------------------------------------------------------------ | |
part | |
id = "2343"; | |
desc = "AT90S2343"; | |
stk500_devcode = 0x43; | |
avr910_devcode = 0x4c; | |
signature = 0x1e 0x91 0x03; | |
chip_erase_delay = 18000; | |
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 = 0; | |
hvsp_controlstack = | |
0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, | |
0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, | |
0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, | |
0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; | |
hventerstabdelay = 100; | |
hvspcmdexedelay = 0; | |
synchcycles = 6; | |
latchcycles = 1; | |
togglevtg = 0; | |
poweroffdelay = 25; | |
resetdelayms = 0; | |
resetdelayus = 50; | |
hvleavestabdelay = 100; | |
resetdelay = 25; | |
chiperasepolltimeout = 40; | |
chiperasetime = 0; | |
programfusepolltimeout = 25; | |
programlockpolltimeout = 25; | |
memory "eeprom" | |
size = 128; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0x00; | |
readback_p2 = 0xff; | |
read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", | |
"x 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 0 0 0 0 0 0", | |
"x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 64; | |
readsize = 256; | |
; | |
memory "flash" | |
size = 2048; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x x x 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", | |
" x x x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 128; | |
readsize = 128; | |
; | |
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 "fuse" | |
size = 1; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
read = "0 1 0 1 1 0 0 0 x x x x x x x x", | |
"x x x x x x x x o o o x x x x o"; | |
write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", | |
"x x x x x x x x x x x x x x x x"; | |
; | |
memory "lock" | |
size = 1; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
read = "0 1 0 1 1 0 0 0 x x x x x x x x", | |
"x x x x x x x x o o o x x x x o"; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90s4433 | |
#------------------------------------------------------------ | |
part | |
id = "4433"; | |
desc = "AT90S4433"; | |
stk500_devcode = 0x51; | |
avr910_devcode = 0x30; | |
signature = 0x1e 0x92 0x03; | |
chip_erase_delay = 20000; | |
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 0 0 0 0 0", | |
"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 = 0; | |
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, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 0; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 15; | |
chiperasepolltimeout = 0; | |
programfusepulsewidth = 2; | |
programfusepolltimeout = 0; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 1; | |
memory "eeprom" | |
size = 256; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0x00; | |
readback_p2 = 0xff; | |
read = " 1 0 1 0 0 0 0 0 x x x x x x x x", | |
"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 x x x x x x x x", | |
"a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 128; | |
readsize = 256; | |
; | |
memory "flash" | |
size = 4096; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x x 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", | |
" x x x x x a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x x a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x x a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 128; | |
readsize = 256; | |
; | |
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 "fuse" | |
size = 1; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
pwroff_after_write = yes; | |
read = "0 1 0 1 0 0 0 0 x x x x x x x x", | |
"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 0 1 i i i i i", | |
"x x x x x x x x x x x x x x x x"; | |
; | |
memory "lock" | |
size = 1; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
read = "0 1 0 1 1 0 0 0 x x x x x x x x", | |
"x x x x x x x x x x x x x o o x"; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90s4434 | |
#------------------------------------------------------------ | |
part | |
id = "4434"; | |
##### WARNING: No XML file for device 'AT90S4434'! ##### | |
desc = "AT90S4434"; | |
stk500_devcode = 0x52; | |
avr910_devcode = 0x6c; | |
signature = 0x1e 0x92 0x02; | |
chip_erase_delay = 20000; | |
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 0 0 0 0 0", | |
"x x x x x x x x x x x x x x x x"; | |
memory "eeprom" | |
size = 256; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0x00; | |
readback_p2 = 0xff; | |
read = " 1 0 1 0 0 0 0 0 x x x x x x x x", | |
"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 x x x x x x x x", | |
"a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
; | |
memory "flash" | |
size = 4096; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x x 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", | |
" x x x x x a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x x a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x x a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
; | |
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 "fuse" | |
size = 1; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
read = "0 1 0 1 0 0 0 0 x x x x x x x x", | |
"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 0 1 i i i i i", | |
"x x x x x x x x x x x x x x x x"; | |
; | |
memory "lock" | |
size = 1; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
read = "0 1 0 1 1 0 0 0 x x x x x x x x", | |
"x x x x x x x x x x x x x o o x"; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90s8515 | |
#------------------------------------------------------------ | |
part | |
id = "8515"; | |
desc = "AT90S8515"; | |
stk500_devcode = 0x60; | |
avr910_devcode = 0x38; | |
signature = 0x1e 0x93 0x01; | |
chip_erase_delay = 20000; | |
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 = 0; | |
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, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 0; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
resetdelay = 15; | |
chiperasepulsewidth = 15; | |
chiperasepolltimeout = 0; | |
programfusepulsewidth = 2; | |
programfusepolltimeout = 0; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 1; | |
memory "eeprom" | |
size = 512; | |
min_write_delay = 4000; | |
max_write_delay = 9000; | |
readback_p1 = 0x80; | |
readback_p2 = 0x7f; | |
read = " 1 0 1 0 0 0 0 0 x x x x x x x 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 x x x x x x x a8", | |
"a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 128; | |
readsize = 256; | |
; | |
memory "flash" | |
size = 8192; | |
min_write_delay = 4000; | |
max_write_delay = 9000; | |
readback_p1 = 0x7f; | |
readback_p2 = 0x7f; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x 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", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 128; | |
readsize = 256; | |
; | |
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 "fuse" | |
size = 1; | |
; | |
memory "lock" | |
size = 1; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90s8535 | |
#------------------------------------------------------------ | |
part | |
id = "8535"; | |
desc = "AT90S8535"; | |
stk500_devcode = 0x61; | |
avr910_devcode = 0x68; | |
signature = 0x1e 0x93 0x03; | |
chip_erase_delay = 20000; | |
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 0 0 0 0 0", | |
"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 = 0; | |
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, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 0; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 15; | |
chiperasepolltimeout = 0; | |
programfusepulsewidth = 2; | |
programfusepolltimeout = 0; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 1; | |
memory "eeprom" | |
size = 512; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0x00; | |
readback_p2 = 0xff; | |
read = " 1 0 1 0 0 0 0 0 x x x x x x x 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 x x x x x x x a8", | |
"a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 128; | |
readsize = 256; | |
; | |
memory "flash" | |
size = 8192; | |
min_write_delay = 9000; | |
max_write_delay = 20000; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x x x x 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", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" o o o o o o o o"; | |
write_lo = " 0 1 0 0 0 0 0 0", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
write_hi = " 0 1 0 0 1 0 0 0", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 128; | |
readsize = 256; | |
; | |
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 "fuse" | |
size = 1; | |
read = "0 1 0 1 1 0 0 0 x x x x x x x x", | |
"x x x x x x x x x x x x x x x o"; | |
write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", | |
"x x x x x x x x x x x x x x x x"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "lock" | |
size = 1; | |
read = "0 1 0 1 1 0 0 0 x x x x x x x x", | |
"x x x x x x x x o o x x x x x x"; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
; | |
#------------------------------------------------------------ | |
# ATmega103 | |
#------------------------------------------------------------ | |
part | |
id = "m103"; | |
desc = "ATMEGA103"; | |
stk500_devcode = 0xB1; | |
avr910_devcode = 0x41; | |
signature = 0x1e 0x97 0x01; | |
chip_erase_delay = 112000; | |
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 0 0 0 0 0", | |
"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 = 0; | |
pp_controlstack = | |
0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, | |
0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, | |
0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, | |
0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 0; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 15; | |
chiperasepolltimeout = 0; | |
programfusepulsewidth = 2; | |
programfusepolltimeout = 0; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 10; | |
memory "eeprom" | |
size = 4096; | |
min_write_delay = 4000; | |
max_write_delay = 9000; | |
readback_p1 = 0x80; | |
readback_p2 = 0x7f; | |
read = " 1 0 1 0 0 0 0 0", | |
" x x 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", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 64; | |
readsize = 256; | |
; | |
memory "flash" | |
paged = yes; | |
size = 131072; | |
page_size = 256; | |
num_pages = 512; | |
min_write_delay = 22000; | |
max_write_delay = 56000; | |
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", | |
" x x 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", | |
" x x 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 = 0x11; | |
delay = 70; | |
blocksize = 256; | |
readsize = 256; | |
; | |
memory "fuse" | |
size = 1; | |
read = "0 1 0 1 0 0 0 0 x x x x x x x x", | |
"x x x x x x x x x x o x o 1 o o"; | |
write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", | |
"x x x x x x x x x x x x x x x x"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "lock" | |
size = 1; | |
read = "0 1 0 1 1 0 0 0 x x x x x x x x", | |
"x x x x x x x x x x x x x o o x"; | |
write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", | |
"x x x x x x x x x x x x x x x x"; | |
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"; | |
; | |
; | |
#------------------------------------------------------------ | |
# ATmega64 | |
#------------------------------------------------------------ | |
part | |
id = "m64"; | |
desc = "ATMEGA64"; | |
has_jtag = yes; | |
stk500_devcode = 0xA0; | |
avr910_devcode = 0x45; | |
signature = 0x1e 0x96 0x02; | |
chip_erase_delay = 9000; | |
pagel = 0xD7; | |
bs2 = 0xA0; | |
reset = dedicated; | |
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 0 0 0 0 0", | |
"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 = 0; | |
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, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 6; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 0; | |
chiperasepolltimeout = 10; | |
programfusepulsewidth = 0; | |
programfusepolltimeout = 5; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 5; | |
idr = 0x22; | |
spmcr = 0x68; | |
allowfullpagebitstream = yes; | |
memory "eeprom" | |
paged = no; /* leave this "no" */ | |
page_size = 8; /* for parallel programming */ | |
size = 2048; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read = " 1 0 1 0 0 0 0 0", | |
" x x 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", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 20; | |
blocksize = 64; | |
readsize = 256; | |
; | |
memory "flash" | |
paged = yes; | |
size = 65536; | |
page_size = 256; | |
num_pages = 256; | |
min_write_delay = 4500; | |
max_write_delay = 4500; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" x 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", | |
" x 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", | |
" x x 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", | |
" x x 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", | |
" x a14 a13 a12 a11 a10 a9 a8", | |
" a7 x x x x x x x", | |
" x x x x x x x x"; | |
mode = 0x21; | |
delay = 6; | |
blocksize = 128; | |
readsize = 256; | |
; | |
memory "lfuse" | |
size = 1; | |
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"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "hfuse" | |
size = 1; | |
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"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "efuse" | |
size = 1; | |
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 x x x x x x i i"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
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 "calibration" | |
size = 4; | |
read = "0 0 1 1 1 0 0 0 x x x x x x x x", | |
"0 0 0 0 0 0 a1 a0 o o o o o o o o"; | |
; | |
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"; | |
; | |
; | |
#------------------------------------------------------------ | |
# ATmega128 | |
#------------------------------------------------------------ | |
part | |
id = "m128"; | |
desc = "ATMEGA128"; | |
has_jtag = yes; | |
stk500_devcode = 0xB2; | |
avr910_devcode = 0x43; | |
signature = 0x1e 0x97 0x02; | |
chip_erase_delay = 9000; | |
pagel = 0xD7; | |
bs2 = 0xA0; | |
reset = dedicated; | |
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 0 0 0 0 0", | |
"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 = 0; | |
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, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 6; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 0; | |
chiperasepolltimeout = 10; | |
programfusepulsewidth = 0; | |
programfusepolltimeout = 5; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 5; | |
idr = 0x22; | |
spmcr = 0x68; | |
rampz = 0x3b; | |
allowfullpagebitstream = yes; | |
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", | |
" x x 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", | |
" x x x x a11 a10 a9 a8", | |
" a7 a6 a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
mode = 0x04; | |
delay = 12; | |
blocksize = 64; | |
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", | |
" x x 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", | |
" x x 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 = 0x21; | |
delay = 6; | |
blocksize = 128; | |
readsize = 256; | |
; | |
memory "lfuse" | |
size = 1; | |
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"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "hfuse" | |
size = 1; | |
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"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "efuse" | |
size = 1; | |
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 x x x x x x i i"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
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 "calibration" | |
size = 4; | |
read = "0 0 1 1 1 0 0 0 x x x x x x x x", | |
"0 0 0 0 0 0 a1 a0 o o o o o o o o"; | |
; | |
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"; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90CAN128 | |
#------------------------------------------------------------ | |
part | |
id = "c128"; | |
desc = "AT90CAN128"; | |
has_jtag = yes; | |
stk500_devcode = 0xB3; | |
# avr910_devcode = 0x43; | |
signature = 0x1e 0x97 0x81; | |
chip_erase_delay = 9000; | |
pagel = 0xD7; | |
bs2 = 0xA0; | |
reset = dedicated; | |
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, 0x01; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 6; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 0; | |
chiperasepolltimeout = 10; | |
programfusepulsewidth = 0; | |
programfusepolltimeout = 5; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 5; | |
idr = 0x31; | |
spmcr = 0x57; | |
rampz = 0x3b; | |
eecr = 0x3f; | |
allowfullpagebitstream = no; | |
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 0 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 0 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 = 20; | |
blocksize = 8; | |
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 0 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 0 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 = 6; | |
blocksize = 256; | |
readsize = 256; | |
; | |
memory "lfuse" | |
size = 1; | |
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"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "hfuse" | |
size = 1; | |
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"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "efuse" | |
size = 1; | |
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 x x x x i i i i"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
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 "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"; | |
; | |
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"; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90CAN64 | |
#------------------------------------------------------------ | |
part | |
id = "c64"; | |
desc = "AT90CAN64"; | |
has_jtag = yes; | |
stk500_devcode = 0xB3; | |
# avr910_devcode = 0x43; | |
signature = 0x1e 0x96 0x81; | |
chip_erase_delay = 9000; | |
pagel = 0xD7; | |
bs2 = 0xA0; | |
reset = dedicated; | |
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, 0x01; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 6; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 0; | |
chiperasepolltimeout = 10; | |
programfusepulsewidth = 0; | |
programfusepolltimeout = 5; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 5; | |
idr = 0x31; | |
spmcr = 0x57; | |
rampz = 0x3b; | |
eecr = 0x3f; | |
allowfullpagebitstream = no; | |
memory "eeprom" | |
paged = no; /* leave this "no" */ | |
page_size = 8; /* for parallel programming */ | |
size = 2048; | |
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 0 x x 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 0 x x 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 x a10 a9 a8", | |
" a7 a6 a5 a4 a3 0 0 0", | |
" x x x x x x x x"; | |
mode = 0x41; | |
delay = 20; | |
blocksize = 8; | |
readsize = 256; | |
; | |
memory "flash" | |
paged = yes; | |
size = 65536; | |
page_size = 256; | |
num_pages = 256; | |
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 0 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 0 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 = 6; | |
blocksize = 256; | |
readsize = 256; | |
; | |
memory "lfuse" | |
size = 1; | |
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"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "hfuse" | |
size = 1; | |
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"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "efuse" | |
size = 1; | |
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 x x x x i i i i"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
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 "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"; | |
; | |
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"; | |
; | |
; | |
#------------------------------------------------------------ | |
# AT90CAN32 | |
#------------------------------------------------------------ | |
part | |
id = "c32"; | |
desc = "AT90CAN32"; | |
has_jtag = yes; | |
stk500_devcode = 0xB3; | |
# avr910_devcode = 0x43; | |
signature = 0x1e 0x95 0x81; | |
chip_erase_delay = 9000; | |
pagel = 0xD7; | |
bs2 = 0xA0; | |
reset = dedicated; | |
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, 0x01; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 6; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
chiperasepulsewidth = 0; | |
chiperasepolltimeout = 10; | |
programfusepulsewidth = 0; | |
programfusepolltimeout = 5; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 5; | |
idr = 0x31; | |
spmcr = 0x57; | |
rampz = 0x3b; | |
eecr = 0x3f; | |
allowfullpagebitstream = no; | |
memory "eeprom" | |
paged = no; /* leave this "no" */ | |
page_size = 8; /* for parallel programming */ | |
size = 1024; | |
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 0 x x x 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 0 x x x 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 x x a9 a8", | |
" a7 a6 a5 a4 a3 0 0 0", | |
" x x x x x x x x"; | |
mode = 0x41; | |
delay = 20; | |
blocksize = 8; | |
readsize = 256; | |
; | |
memory "flash" | |
paged = yes; | |
size = 32768; | |
page_size = 256; | |
num_pages = 128; | |
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 0 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 0 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 = 6; | |
blocksize = 256; | |
readsize = 256; | |
; | |
memory "lfuse" | |
size = 1; | |
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"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "hfuse" | |
size = 1; | |
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"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
memory "efuse" | |
size = 1; | |
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 x x x x i i i i"; | |
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"; | |
min_write_delay = 9000; | |
max_write_delay = 9000; | |
; | |
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 "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"; | |
; | |
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"; | |
; | |
; | |
#------------------------------------------------------------ | |
# ATmega16 | |
#------------------------------------------------------------ | |
part | |
id = "m16"; | |
desc = "ATMEGA16"; | |
has_jtag = yes; | |
stk500_devcode = 0x82; | |
avr910_devcode = 0x74; | |
signature = 0x1e 0x94 0x03; | |
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 = 0; | |
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, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 100; | |
latchcycles = 6; | |
togglevtg = 0; | |
poweroffdelay = 0; | |
resetdelayms = 0; | |
resetdelayus = 0; | |
hvleavestabdelay = 15; | |
resetdelay = 15; | |
chiperasepulsewidth = 0; | |
chiperasepolltimeout = 10; | |
programfusepulsewidth = 0; | |
programfusepolltimeout = 5; | |
programlockpulsewidth = 0; | |
programlockpolltimeout = 5; | |
idr = 0x31; | |
spmcr = 0x57; | |
allowfullpagebitstream = yes; | |
memory "eeprom" | |
paged = no; /* leave this "no" */ | |
page_size = 4; /* for parallel programming */ | |
size = 512; | |
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 x x 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 x x 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 0 a1 a0", | |
" i i i i i i i i"; | |
writepage = " 1 1 0 0 0 0 1 0", | |
" 0 0 x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 0 0", | |
" x x x x x x x x"; | |
mode = 0x04; | |
delay = 10; | |
blocksize = 128; | |
readsize = 256; | |
; | |
memory "flash" | |
paged = yes; | |
size = 16384; | |
page_size = 128; | |
num_pages = 128; | |
min_write_delay = 4500; | |
max_write_delay = 4500; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" 0 0 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", | |
" 0 0 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 x 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 x a5 a4 a3 a2 a1 a0", | |
" i i i i i i i i"; | |
writepage = " 0 1 0 0 1 1 0 0", | |
" 0 0 a13 a12 a11 a10 a9 a8", | |
" a7 a6 x x x x x x", | |
" x x x x x x x x"; | |
mode = 0x21; | |
delay = 6; | |
blocksize = 128; | |
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 "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 = 4; | |
read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", | |
"0 0 0 0 0 0 a1 a0 o o o o o o o o"; | |
; | |
; | |
#------------------------------------------------------------ | |
# ATmega164P | |
#------------------------------------------------------------ | |
# close to ATmega16 | |
part | |
id = "m164p"; | |
desc = "ATMEGA164P"; | |
has_jtag = yes; | |
stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one | |
avr910_devcode = 0x74; | |
signature = 0x1e 0x94 0x0a; | |
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 = 0; | |
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, 0x00; | |
hventerstabdelay = 100; | |
progmodedelay = 0; | |
latchcycles = 5; | |
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; | |
memory "eeprom" | |
paged = no; /* leave this "no" */ | |
page_size = 4; /* for parallel programming */ | |
size = 512; | |
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 x x 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 x x 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 0 a1 a0", | |
" i i i i i i i i"; | |
writepage = " 1 1 0 0 0 0 1 0", | |
" 0 0 x x x x a9 a8", | |
" a7 a6 a5 a4 a3 a2 0 0", | |
" x x x x x x x x"; | |
mode = 0x41; | |
delay = 10; | |
blocksize = 128; | |
readsize = 256; | |
; | |
memory "flash" | |
paged = yes; | |
size = 16384; | |
page_size = 128; | |
num_pages = 128; | |
min_write_delay = 4500; | |
max_write_delay = 4500; | |
readback_p1 = 0xff; | |
readback_p2 = 0xff; | |
read_lo = " 0 0 1 0 0 0 0 0", | |
" 0 0 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", | |
" 0 0 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 x 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 x a5 a4 a3 a2 a1 a0", | |