This is the HTML response for this REST resource. The JSON shown here is formatted to be human readable and may contain comments and some integers may be displayed as hex. Neither comments nor hex literals are allowed in valid JSON.

To retrieve just the following as fully valid JSON specify Accept: application/json as one of the headers when requesting this resource.

{
  "programmers" : [ {
    "id" : "wiring",
    "desc" : "Wiring",
    "type" : "wiring",
    "connection_type" : "serial"
  }, {
    "id" : "arduino",
    "desc" : "Arduino",
    "type" : "arduino",
    "connection_type" : "serial"
  }, {
    "id" : "avrftdi",
    "desc" : "FT2232D based generic programmer",
    "type" : "avrftdi",
    "connection_type" : "usb",
    "usbvid" : 0x0403,
    "usbpid" : 0x6010,
    "usbvendor" : "",
    "usbproduct" : "",
    "usbdev" : "A",
    "usbsn" : "",
    "reset" : 3,
    "sck" : 0,
    "mosi" : 1,
    "miso" : 2
  }, {
    "id" : "2232HIO",
    "desc" : "FT2232H based generic programmer",
    "type" : "avrftdi",
    "connection_type" : "usb",
    "usbvid" : 0x0403,
    "usbpid" : 0x6010,
    "usbdev" : "A",
    "usbvendor" : "",
    "usbproduct" : "",
    "usbsn" : "",
    "reset" : 3,
    "sck" : 0,
    "mosi" : 1,
    "miso" : 2,
    "buff" : "~4",
    "errled" : "~11",
    "rdyled" : "~14",
    "pgmled" : "~13",
    "vfyled" : "~12"
  }, {
    "id" : "4232h",
    "desc" : "FT4232H based generic programmer",
    "type" : "avrftdi",
    "connection_type" : "usb",
    "usbvid" : 0x0403,
    "usbpid" : 0x6011,
    "usbvendor" : "",
    "usbproduct" : "",
    "usbdev" : "A",
    "usbsn" : "",
    "reset" : 3,
    "sck" : 0,
    "mosi" : 1,
    "miso" : 2
  }, {
    "id" : "jtagkey",
    "desc" : "Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2",
    "type" : "avrftdi",
    "connection_type" : "usb",
    "usbvid" : 0x0403,
    "usbpid" : 0xcff8,
    "usbdev" : "A",
    "usbvendor" : "",
    "usbproduct" : "",
    "usbsn" : "",
    "reset" : 3,
    "sck" : 0,
    "mosi" : 1,
    "miso" : 2,
    "buff" : "~4"
  }, {
    "id" : "UM232H",
    "desc" : "FT232H based module from FTDI and Glyn.com.au",
    "type" : "avrftdi",
    "usbvid" : 0x0403,
    "usbpid" : 0x6014,
    "usbdev" : "A",
    "usbvendor" : "",
    "usbproduct" : "",
    "usbsn" : "",
    "sck" : 1,
    "mosi" : 2,
    "miso" : 3,
    "reset" : 4
  }, {
    "id" : "C232HM",
    "desc" : "FT232H based module from FTDI and Glyn.com.au",
    "type" : "avrftdi",
    "usbvid" : 0x0403,
    "usbpid" : 0x6014,
    "usbdev" : "A",
    "usbvendor" : "",
    "usbproduct" : "",
    "usbsn" : "",
    "sck" : 1,
    "mosi" : 2,
    "miso" : 3,
    "reset" : 4
  }, {
    "id" : "o-link",
    "desc" : "O-Link, OpenJTAG from www.100ask.net",
    "type" : "avrftdi",
    "connection_type" : "usb",
    "usbvid" : 0x1457,
    "usbpid" : 0x5118,
    "usbdev" : "A",
    "usbvendor" : "www.100ask.net",
    "usbproduct" : "USB<=>JTAG&RS232",
    "usbsn" : "",
    "reset" : 3,
    "sck" : 0,
    "mosi" : 1,
    "miso" : 2,
    "buff" : "~4"
  }, {
    "id" : "openmoko",
    "desc" : "Openmoko debug board (v3)",
    "type" : "avrftdi",
    "usbvid" : 0x1457,
    "usbpid" : 0x5118,
    "usbdev" : "A",
    "usbvendor" : "",
    "usbproduct" : "",
    "usbsn" : "",
    "reset" : 3,
    "sck" : 0,
    "mosi" : 1,
    "miso" : 2
  }, {
    "id" : "lm3s811",
    "desc" : "Luminary Micro LM3S811 Eval Board (Rev. A)",
    "type" : "avrftdi",
    "connection_type" : "usb",
    "usbvid" : 0x0403,
    "usbpid" : 0xbcd9,
    "usbvendor" : "LMI",
    "usbproduct" : "LM3S811 Evaluation Board",
    "usbdev" : "A",
    "usbsn" : "",
    "reset" : 3,
    "sck" : 0,
    "mosi" : 1,
    "miso" : 2,
    "buff" : 7
  }, {
    "id" : "avrisp",
    "desc" : "Atmel AVR ISP",
    "type" : "stk500",
    "connection_type" : "serial"
  }, {
    "id" : "avrispv2",
    "desc" : "Atmel AVR ISP V2",
    "type" : "stk500v2",
    "connection_type" : "serial"
  }, {
    "id" : "avrispmkII",
    "desc" : "Atmel AVR ISP mkII",
    "type" : "stk500v2",
    "connection_type" : "usb"
  }, {
    "id" : "avrisp2",
    "desc" : "Atmel AVR ISP mkII",
    "type" : "stk500v2",
    "connection_type" : "usb"
  }, {
    "id" : "buspirate",
    "desc" : "The Bus Pirate",
    "type" : "buspirate",
    "connection_type" : "serial"
  }, {
    "id" : "buspirate_bb",
    "desc" : "The Bus Pirate (bitbang interface, supports TPI)",
    "type" : "buspirate_bb",
    "connection_type" : "serial",
    "reset" : 1,
    "sck" : 3,
    "mosi" : 4,
    "miso" : 2
  }, {
    "id" : "stk500",
    "desc" : "Atmel STK500",
    "type" : "stk500generic",
    "connection_type" : "serial"
  }, {
    "id" : "stk500v1",
    "desc" : "Atmel STK500 Version 1.x firmware",
    "type" : "stk500",
    "connection_type" : "serial"
  }, {
    "id" : "mib510",
    "desc" : "Crossbow MIB510 programming board",
    "type" : "stk500",
    "connection_type" : "serial"
  }, {
    "id" : "stk500v2",
    "desc" : "Atmel STK500 Version 2.x firmware",
    "type" : "stk500v2",
    "connection_type" : "serial"
  }, {
    "id" : "stk500pp",
    "desc" : "Atmel STK500 V2 in parallel programming mode",
    "type" : "stk500pp",
    "connection_type" : "serial"
  }, {
    "id" : "stk500hvsp",
    "desc" : "Atmel STK500 V2 in high-voltage serial programming mode",
    "type" : "stk500hvsp",
    "connection_type" : "serial"
  }, {
    "id" : "stk600",
    "desc" : "Atmel STK600",
    "type" : "stk600",
    "connection_type" : "usb"
  }, {
    "id" : "stk600pp",
    "desc" : "Atmel STK600 in parallel programming mode",
    "type" : "stk600pp",
    "connection_type" : "usb"
  }, {
    "id" : "stk600hvsp",
    "desc" : "Atmel STK600 in high-voltage serial programming mode",
    "type" : "stk600hvsp",
    "connection_type" : "usb"
  }, {
    "id" : "avr910",
    "desc" : "Atmel Low Cost Serial Programmer",
    "type" : "avr910",
    "connection_type" : "serial"
  }, {
    "id" : "ft245r",
    "desc" : "FT245R Synchronous BitBang",
    "type" : "ftdi_syncbb",
    "connection_type" : "usb",
    "miso" : 1,
    "sck" : 0,
    "mosi" : 2,
    "reset" : 4
  }, {
    "id" : "ft232r",
    "desc" : "FT232R Synchronous BitBang",
    "type" : "ftdi_syncbb",
    "connection_type" : "usb",
    "miso" : 1,
    "sck" : 0,
    "mosi" : 2,
    "reset" : 4
  }, {
    "id" : "bwmega",
    "desc" : "BitWizard ftdi_atmega builtin programmer",
    "type" : "ftdi_syncbb",
    "connection_type" : "usb",
    "miso" : 5,
    "sck" : 6,
    "mosi" : 3,
    "reset" : 7
  }, {
    "id" : "arduino-ft232r",
    "desc" : "Arduino: FT232R connected to ISP",
    "type" : "ftdi_syncbb",
    "connection_type" : "usb",
    "miso" : 3,
    "sck" : 5,
    "mosi" : 6,
    "reset" : 7
  }, {
    "id" : "diecimila",
    "desc" : "alias for arduino-ft232r",
    "type" : "ftdi_syncbb",
    "connection_type" : "usb",
    "miso" : 3,
    "sck" : 5,
    "mosi" : 6,
    "reset" : 7
  }, {
    "id" : "usbasp",
    "desc" : "USBasp, http://www.fischl.de/usbasp/",
    "type" : "usbasp",
    "connection_type" : "usb",
    "usbvid" : 0x16c0,
    "usbpid" : 0x05dc,
    "usbvendor" : "www.fischl.de",
    "usbproduct" : "USBasp"
  }, {
    "id" : "nibobee",
    "desc" : "NIBObee",
    "type" : "usbasp",
    "connection_type" : "usb",
    "usbvid" : 0x16c0,
    "usbpid" : 0x092f,
    "usbvendor" : "www.nicai-systems.com",
    "usbproduct" : "NIBObee"
  }, {
    "id" : "usbasp-clone",
    "desc" : "Any usbasp clone with correct VID/PID",
    "type" : "usbasp",
    "connection_type" : "usb",
    "usbvid" : 0x16c0,
    "usbpid" : 0x05dc
  }, {
    "id" : "usbtiny",
    "desc" : "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/",
    "type" : "usbtiny",
    "connection_type" : "usb",
    "usbvid" : 0x1781,
    "usbpid" : 0x0c9f
  }, {
    "id" : "butterfly",
    "desc" : "Atmel Butterfly Development Board",
    "type" : "butterfly",
    "connection_type" : "serial"
  }, {
    "id" : "avr109",
    "desc" : "Atmel AppNote AVR109 Boot Loader",
    "type" : "butterfly",
    "connection_type" : "serial"
  }, {
    "id" : "avr911",
    "desc" : "Atmel AppNote AVR911 AVROSP",
    "type" : "butterfly",
    "connection_type" : "serial"
  }, {
    "id" : "mkbutterfly",
    "desc" : "Mikrokopter.de Butterfly",
    "type" : "butterfly_mk",
    "connection_type" : "serial"
  }, {
    "id" : "butterfly_mk",
    "desc" : "Mikrokopter.de Butterfly",
    "type" : "butterfly_mk",
    "connection_type" : "serial"
  }, {
    "id" : "jtagmkI",
    "desc" : "Atmel JTAG ICE (mkI)",
    "baudrate" : 115200,
    "type" : "jtagmki",
    "connection_type" : "serial"
  }, {
    "id" : "jtag1",
    "desc" : "Atmel JTAG ICE (mkI)",
    "baudrate" : 115200,
    "type" : "jtagmki",
    "connection_type" : "serial"
  }, {
    "id" : "jtag1slow",
    "desc" : "Atmel JTAG ICE (mkI)",
    "baudrate" : 19200,
    "type" : "jtagmki",
    "connection_type" : "serial"
  }, {
    "id" : "jtagmkII",
    "desc" : "Atmel JTAG ICE mkII",
    "baudrate" : 19200,
    "type" : "jtagmkii",
    "connection_type" : "usb"
  }, {
    "id" : "jtag2slow",
    "desc" : "Atmel JTAG ICE mkII",
    "baudrate" : 19200,
    "type" : "jtagmkii",
    "connection_type" : "usb"
  }, {
    "id" : "jtag2fast",
    "desc" : "Atmel JTAG ICE mkII",
    "baudrate" : 115200,
    "type" : "jtagmkii",
    "connection_type" : "usb"
  }, {
    "id" : "jtag2",
    "desc" : "Atmel JTAG ICE mkII",
    "baudrate" : 115200,
    "type" : "jtagmkii",
    "connection_type" : "usb"
  }, {
    "id" : "jtag2isp",
    "desc" : "Atmel JTAG ICE mkII in ISP mode",
    "baudrate" : 115200,
    "type" : "jtagmkii_isp",
    "connection_type" : "usb"
  }, {
    "id" : "jtag2dw",
    "desc" : "Atmel JTAG ICE mkII in debugWire mode",
    "baudrate" : 115200,
    "type" : "jtagmkii_dw",
    "connection_type" : "usb"
  }, {
    "id" : "jtagmkII_avr32",
    "desc" : "Atmel JTAG ICE mkII im AVR32 mode",
    "baudrate" : 115200,
    "type" : "jtagmkii_avr32",
    "connection_type" : "usb"
  }, {
    "id" : "jtag2avr32",
    "desc" : "Atmel JTAG ICE mkII im AVR32 mode",
    "baudrate" : 115200,
    "type" : "jtagmkii_avr32",
    "connection_type" : "usb"
  }, {
    "id" : "jtag2pdi",
    "desc" : "Atmel JTAG ICE mkII PDI mode",
    "baudrate" : 115200,
    "type" : "jtagmkii_pdi",
    "connection_type" : "usb"
  }, {
    "id" : "dragon_jtag",
    "desc" : "Atmel AVR Dragon in JTAG mode",
    "baudrate" : 115200,
    "type" : "dragon_jtag",
    "connection_type" : "usb"
  }, {
    "id" : "dragon_isp",
    "desc" : "Atmel AVR Dragon in ISP mode",
    "baudrate" : 115200,
    "type" : "dragon_isp",
    "connection_type" : "usb"
  }, {
    "id" : "dragon_pp",
    "desc" : "Atmel AVR Dragon in PP mode",
    "baudrate" : 115200,
    "type" : "dragon_pp",
    "connection_type" : "usb"
  }, {
    "id" : "dragon_hvsp",
    "desc" : "Atmel AVR Dragon in HVSP mode",
    "baudrate" : 115200,
    "type" : "dragon_hvsp",
    "connection_type" : "usb"
  }, {
    "id" : "dragon_dw",
    "desc" : "Atmel AVR Dragon in debugWire mode",
    "baudrate" : 115200,
    "type" : "dragon_dw",
    "connection_type" : "usb"
  }, {
    "id" : "dragon_pdi",
    "desc" : "Atmel AVR Dragon in PDI mode",
    "baudrate" : 115200,
    "type" : "dragon_pdi",
    "connection_type" : "usb"
  }, {
    "id" : "jtag3",
    "desc" : "Atmel AVR JTAGICE3 in JTAG mode",
    "type" : "jtagice3",
    "connection_type" : "usb",
    "usbpid" : [ 0x2110, 0x2140 ]
  }, {
    "id" : "jtag3pdi",
    "desc" : "Atmel AVR JTAGICE3 in PDI mode",
    "type" : "jtagice3_pdi",
    "connection_type" : "usb",
    "usbpid" : [ 0x2110, 0x2140 ]
  }, {
    "id" : "jtag3dw",
    "desc" : "Atmel AVR JTAGICE3 in debugWIRE mode",
    "type" : "jtagice3_dw",
    "connection_type" : "usb",
    "usbpid" : [ 0x2110, 0x2140 ]
  }, {
    "id" : "jtag3isp",
    "desc" : "Atmel AVR JTAGICE3 in ISP mode",
    "type" : "jtagice3_isp",
    "connection_type" : "usb",
    "usbpid" : [ 0x2110, 0x2140 ]
  }, {
    "id" : "xplainedpro",
    "desc" : "Atmel AVR XplainedPro in JTAG mode",
    "type" : "jtagice3",
    "connection_type" : "usb",
    "usbpid" : 0x2111
  }, {
    "id" : "atmelice",
    "desc" : "Atmel-ICE (ARM/AVR) in JTAG mode",
    "type" : "jtagice3",
    "connection_type" : "usb",
    "usbpid" : 0x2141
  }, {
    "id" : "atmelice_pdi",
    "desc" : "Atmel-ICE (ARM/AVR) in PDI mode",
    "type" : "jtagice3_pdi",
    "connection_type" : "usb",
    "usbpid" : 0x2141
  }, {
    "id" : "atmelice_dw",
    "desc" : "Atmel-ICE (ARM/AVR) in debugWIRE mode",
    "type" : "jtagice3_dw",
    "connection_type" : "usb",
    "usbpid" : 0x2141
  }, {
    "id" : "atmelice_isp",
    "desc" : "Atmel-ICE (ARM/AVR) in ISP mode",
    "type" : "jtagice3_isp",
    "connection_type" : "usb",
    "usbpid" : 0x2141
  }, {
    "id" : "pavr",
    "desc" : "Jason Kyle's pAVR Serial Programmer",
    "type" : "avr910",
    "connection_type" : "serial"
  }, {
    "id" : "pickit2",
    "desc" : "MicroChip's PICkit2 Programmer",
    "type" : "pickit2",
    "connection_type" : "usb"
  }, {
    "id" : "flip1",
    "desc" : "FLIP USB DFU protocol version 1 (doc7618)",
    "type" : "flip1",
    "connection_type" : "usb"
  }, {
    "id" : "flip2",
    "desc" : "FLIP USB DFU protocol version 2 (AVR4023)",
    "type" : "flip2",
    "connection_type" : "usb"
  }, {
    "id" : "bsd",
    "desc" : "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/",
    "type" : "par",
    "connection_type" : "parallel",
    "vcc" : [ 2, 3, 4, 5 ],
    "reset" : 7,
    "sck" : 8,
    "mosi" : 9,
    "miso" : 10
  }, {
    "id" : "stk200",
    "desc" : "STK200",
    "type" : "par",
    "connection_type" : "parallel",
    "buff" : [ 4, 5 ],
    "sck" : 6,
    "mosi" : 7,
    "reset" : 9,
    "miso" : 10
  }, {
    "id" : "pony-stk200",
    "desc" : "Pony Prog STK200",
    "type" : "par",
    "connection_type" : "parallel",
    "buff" : [ 4, 5 ],
    "sck" : 6,
    "mosi" : 7,
    "reset" : 9,
    "miso" : 10,
    "pgmled" : 8
  }, {
    "id" : "dt006",
    "desc" : "Dontronics DT006",
    "type" : "par",
    "connection_type" : "parallel",
    "reset" : 4,
    "sck" : 5,
    "mosi" : 2,
    "miso" : 11
  }, {
    "id" : "bascom",
    "desc" : "Bascom SAMPLE programming cable",
    "type" : "par",
    "connection_type" : "parallel",
    "reset" : 4,
    "sck" : 5,
    "mosi" : 2,
    "miso" : 11
  }, {
    "id" : "alf",
    "desc" : "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/",
    "type" : "par",
    "connection_type" : "parallel",
    "vcc" : [ 2, 3, 4, 5 ],
    "buff" : 6,
    "reset" : 7,
    "sck" : 8,
    "mosi" : 9,
    "miso" : 10,
    "errled" : 1,
    "rdyled" : 14,
    "pgmled" : 16,
    "vfyled" : 17
  }, {
    "id" : "sp12",
    "desc" : "Steve Bolt's Programmer",
    "type" : "par",
    "connection_type" : "parallel",
    "vcc" : [ 4, 5, 6, 7, 8 ],
    "reset" : 3,
    "sck" : 2,
    "mosi" : 9,
    "miso" : 11
  }, {
    "id" : "picoweb",
    "desc" : "Picoweb Programming Cable, http://www.picoweb.net/",
    "type" : "par",
    "connection_type" : "parallel",
    "reset" : 2,
    "sck" : 3,
    "mosi" : 4,
    "miso" : 13
  }, {
    "id" : "abcmini",
    "desc" : "ABCmini Board, aka Dick Smith HOTCHIP",
    "type" : "par",
    "connection_type" : "parallel",
    "reset" : 4,
    "sck" : 3,
    "mosi" : 2,
    "miso" : 10
  }, {
    "id" : "futurlec",
    "desc" : "Futurlec.com programming cable.",
    "type" : "par",
    "connection_type" : "parallel",
    "reset" : 3,
    "sck" : 2,
    "mosi" : 1,
    "miso" : 10
  }, {
    "id" : "xil",
    "desc" : "Xilinx JTAG cable",
    "type" : "par",
    "connection_type" : "parallel",
    "mosi" : 2,
    "sck" : 3,
    "reset" : 4,
    "buff" : 5,
    "miso" : 13,
    "vcc" : 6
  }, {
    "id" : "dapa",
    "desc" : "Direct AVR Parallel Access cable",
    "type" : "par",
    "connection_type" : "parallel",
    "vcc" : 3,
    "reset" : 16,
    "sck" : 1,
    "mosi" : 2,
    "miso" : 11
  }, {
    "id" : "atisp",
    "desc" : "AT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/> micro-research.co.th",
    "type" : "par",
    "connection_type" : "parallel",
    "reset" : "~6",
    "sck" : "~8",
    "mosi" : "~7",
    "miso" : "~10"
  }, {
    "id" : "ere-isp-avr",
    "desc" : "ERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf>",
    "type" : "par",
    "connection_type" : "parallel",
    "reset" : "~4",
    "sck" : 3,
    "mosi" : 2,
    "miso" : 10
  }, {
    "id" : "blaster",
    "desc" : "Altera ByteBlaster",
    "type" : "par",
    "connection_type" : "parallel",
    "sck" : 2,
    "miso" : 11,
    "reset" : 3,
    "mosi" : 8,
    "buff" : 14
  }, {
    "id" : "frank-stk200",
    "desc" : "Frank STK200",
    "type" : "par",
    "connection_type" : "parallel",
    "sck" : 6,
    "mosi" : 7,
    "reset" : 9,
    "miso" : 10,
    "pgmled" : 8,
    "vcc" : 5
  }, {
    "id" : "89isp",
    "desc" : "Atmel at89isp cable",
    "type" : "par",
    "connection_type" : "parallel",
    "reset" : 17,
    "sck" : 1,
    "mosi" : 2,
    "miso" : 10
  }, {
    "id" : "ponyser",
    "desc" : "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts",
    "type" : "serbb",
    "connection_type" : "serial",
    "reset" : "~3",
    "sck" : 7,
    "mosi" : 4,
    "miso" : 8
  }, {
    "id" : "siprog",
    "desc" : "Lancos SI-Prog <http://www.lancos.com/siprogsch.html>",
    "type" : "serbb",
    "connection_type" : "serial",
    "reset" : "~3",
    "sck" : 7,
    "mosi" : 4,
    "miso" : 8
  }, {
    "id" : "dasa",
    "desc" : "serial port banging, reset=rts sck=dtr mosi=txd miso=cts",
    "type" : "serbb",
    "connection_type" : "serial",
    "reset" : 7,
    "sck" : 4,
    "mosi" : 3,
    "miso" : 8
  }, {
    "id" : "dasa3",
    "desc" : "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts",
    "type" : "serbb",
    "connection_type" : "serial",
    "reset" : "~4",
    "sck" : 7,
    "mosi" : 3,
    "miso" : 8
  }, {
    "id" : "c2n232i",
    "desc" : "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts",
    "type" : "serbb",
    "connection_type" : "serial",
    "reset" : 4,
    "sck" : "~7",
    "mosi" : "~3",
    "miso" : "~8"
  } ],
  "parts" : [ {
    "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,
    "memories" : {
      "eeprom" : {
        "size" : 64,
        "blocksize" : 64,
        "readsize" : 256,
        "delay" : 5
      },
      "flash" : {
        "size" : 1024,
        "blocksize" : 128,
        "readsize" : 256,
        "delay" : 3
      },
      "signature" : {
        "size" : 3
      },
      "lock" : {
        "size" : 1
      },
      "calibration" : {
        "size" : 1
      },
      "fuse" : {
        "size" : 1
      }
    }
  }, {
    "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,
    "memories" : {
      "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
      },
      "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
      },
      "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" ]
      },
      "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
      },
      "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" ]
      },
      "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
      }
    }
  }, {
    "id" : "t13",
    "desc" : "ATtiny13",
    "has_debugwire" : true,
    "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,
    "ocdrev" : 0,
    "memories" : {
      "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
      },
      "flash" : {
        "paged" : true,
        "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
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "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,
    "memories" : {
      "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
      },
      "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
      },
      "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" ]
      },
      "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
      },
      "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" ]
      },
      "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
      }
    }
  }, {
    "id" : "1200",
    "desc" : "AT90S1200",
    "is_at90s1200" : true,
    "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,
    "memories" : {
      "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
      },
      "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
      },
      "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" ]
      },
      "fuse" : {
        "size" : 1
      },
      "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" ]
      }
    }
  }, {
    "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,
    "memories" : {
      "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
      },
      "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
      },
      "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" ]
      },
      "fuse" : {
        "size" : 1
      },
      "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
      }
    }
  }, {
    "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,
    "memories" : {
      "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
      },
      "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
      },
      "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" ]
      },
      "fuse" : {
        "size" : 1
      },
      "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
      }
    }
  }, {
    "id" : "2333",
    "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,
    "memories" : {
      "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
      },
      "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
      },
      "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" ]
      },
      "fuse" : {
        "size" : 1,
        "min_write_delay" : 9000,
        "max_write_delay" : 20000,
        "pwroff_after_write" : true,
        "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" ]
      },
      "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" ]
      }
    }
  }, {
    "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,
    "memories" : {
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "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,
    "memories" : {
      "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
      },
      "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
      },
      "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" ]
      },
      "fuse" : {
        "size" : 1,
        "min_write_delay" : 9000,
        "max_write_delay" : 20000,
        "pwroff_after_write" : true,
        "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "4434",
    "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" ],
    "memories" : {
      "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" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "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,
    "memories" : {
      "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
      },
      "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
      },
      "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" ]
      },
      "fuse" : {
        "size" : 1
      },
      "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
      }
    }
  }, {
    "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,
    "memories" : {
      "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
      },
      "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
      },
      "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" ]
      },
      "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
      },
      "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
      }
    }
  }, {
    "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,
    "memories" : {
      "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
      },
      "flash" : {
        "paged" : true,
        "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
      },
      "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
      },
      "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
      },
      "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" ]
      }
    }
  }, {
    "id" : "m64",
    "desc" : "ATmega64",
    "has_jtag" : true,
    "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" : true,
    "ocdrev" : 2,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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
      },
      "flash" : {
        "paged" : true,
        "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m128",
    "desc" : "ATmega128",
    "has_jtag" : true,
    "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" : true,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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
      },
      "flash" : {
        "paged" : true,
        "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "c128",
    "desc" : "AT90CAN128",
    "has_jtag" : true,
    "stk500_devcode" : 0xb3,
    "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" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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
      },
      "flash" : {
        "paged" : true,
        "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "c64",
    "desc" : "AT90CAN64",
    "has_jtag" : true,
    "stk500_devcode" : 0xb3,
    "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" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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
      },
      "flash" : {
        "paged" : true,
        "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "c32",
    "desc" : "AT90CAN32",
    "has_jtag" : true,
    "stk500_devcode" : 0xb3,
    "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" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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
      },
      "flash" : {
        "paged" : true,
        "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m16",
    "desc" : "ATmega16",
    "has_jtag" : true,
    "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" : true,
    "ocdrev" : 2,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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
      },
      "flash" : {
        "paged" : true,
        "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m164p",
    "desc" : "ATmega164P",
    "has_jtag" : true,
    "stk500_devcode" : 0x82,
    "avr910_devcode" : 0x74,
    "signature" : [ 0x1e, 0x94, 0x0a ],
    "pagel" : 0xd7,
    "bs2" : 0xa0,
    "chip_erase_delay" : 55000,
    "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,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "idr" : 0x31,
    "spmcr" : 0x57,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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
      },
      "flash" : {
        "paged" : true,
        "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m324p",
    "desc" : "ATmega324P",
    "has_jtag" : true,
    "stk500_devcode" : 0x82,
    "avr910_devcode" : 0x74,
    "signature" : [ 0x1e, 0x95, 0x08 ],
    "pagel" : 0xd7,
    "bs2" : 0xa0,
    "chip_erase_delay" : 55000,
    "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" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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   x   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   x   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   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 a10  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
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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", "  0 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", "  0 a14 a13 a12    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  o   o   o   o      o   o   o   o" ],
        "loadpage_lo" : [ "  0   1   0   0      0   0   0   0", "  0   0   x   x      x   x   x   x", "  x   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 a14 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" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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
      },
      "efuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "x x x x  x x x x  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "x x x x  x x x x  1 1 1 1  1 i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m324pa",
    "desc" : "ATmega324PA",
    "has_jtag" : true,
    "stk500_devcode" : 0x82,
    "avr910_devcode" : 0x74,
    "signature" : [ 0x1e, 0x95, 0x11 ],
    "pagel" : 0xd7,
    "bs2" : 0xa0,
    "chip_erase_delay" : 55000,
    "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" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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   x   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   x   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   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 a10  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
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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", "  0 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", "  0 a14 a13 a12    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  o   o   o   o      o   o   o   o" ],
        "loadpage_lo" : [ "  0   1   0   0      0   0   0   0", "  0   0   x   x      x   x   x   x", "  x   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 a14 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" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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
      },
      "efuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "x x x x  x x x x  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "x x x x  x x x x  1 1 1 1  1 i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m644",
    "desc" : "ATmega644",
    "has_jtag" : true,
    "stk500_devcode" : 0x82,
    "avr910_devcode" : 0x74,
    "signature" : [ 0x1e, 0x96, 0x09 ],
    "pagel" : 0xd7,
    "bs2" : 0xa0,
    "chip_erase_delay" : 55000,
    "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, 0x02 ],
    "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,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  o   o   o   o      o   o   o   o" ],
        "write" : [ "  1   1   0   0      0   0   0   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 128,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "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   x   x      x   x   x   x", "  x  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "loadpage_hi" : [ "  0   1   0   0      1   0   0   0", "  0   0   x   x      x   x   x   x", "  x  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  0   1   0   0      1   1   0   0", "a15 a14 a13 a12    a11 a10  a9  a8", " a7   x   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x21,
        "delay" : 6,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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
      },
      "efuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "x x x x  x x x x  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "x x x x  x x x x  1 1 1 1  1 i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m644p",
    "desc" : "ATmega644P",
    "has_jtag" : true,
    "stk500_devcode" : 0x82,
    "avr910_devcode" : 0x74,
    "signature" : [ 0x1e, 0x96, 0x0a ],
    "pagel" : 0xd7,
    "bs2" : 0xa0,
    "chip_erase_delay" : 55000,
    "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, 0x02 ],
    "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,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  o   o   o   o      o   o   o   o" ],
        "write" : [ "  1   1   0   0      0   0   0   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 128,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "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   x   x      x   x   x   x", "  x  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "loadpage_hi" : [ "  0   1   0   0      1   0   0   0", "  0   0   x   x      x   x   x   x", "  x  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  0   1   0   0      1   1   0   0", "a15 a14 a13 a12    a11 a10  a9  a8", " a7   x   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x21,
        "delay" : 6,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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
      },
      "efuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "x x x x  x x x x  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "x x x x  x x x x  1 1 1 1  1 i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m1284",
    "desc" : "ATmega1284",
    "has_jtag" : true,
    "stk500_devcode" : 0x82,
    "avr910_devcode" : 0x74,
    "signature" : [ 0x1e, 0x97, 0x06 ],
    "pagel" : 0xd7,
    "bs2" : 0xa0,
    "chip_erase_delay" : 55000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 6,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "idr" : 0x31,
    "spmcr" : 0x57,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  o   o   o   o      o   o   o   o" ],
        "write" : [ "  1   1   0   0      0   0   0   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 128,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 131072,
        "page_size" : 256,
        "num_pages" : 512,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read_lo" : [ "  0   0   1   0      0   0   0   0", "a15 a14 a13 a12    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  o   o   o   o      o   o   o   o" ],
        "read_hi" : [ "  0   0   1   0      1   0   0   0", "a15 a14 a13 a12    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  o   o   o   o      o   o   o   o" ],
        "loadpage_lo" : [ "  0   1   0   0      0   0   0   0", "  0   0   x   x      x   x   x   x", "  x  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "loadpage_hi" : [ "  0   1   0   0      1   0   0   0", "  0   0   x   x      x   x   x   x", "  x  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  0   1   0   0      1   1   0   0", "a15 a14 a13 a12    a11 a10  a9  a8", " a7   x   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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
      },
      "efuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "x x x x  x x x x  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "x x x x  x x x x  1 1 1 1  1 i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m1284p",
    "desc" : "ATmega1284P",
    "has_jtag" : true,
    "stk500_devcode" : 0x82,
    "avr910_devcode" : 0x74,
    "signature" : [ 0x1e, 0x97, 0x05 ],
    "pagel" : 0xd7,
    "bs2" : 0xa0,
    "chip_erase_delay" : 55000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 6,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "idr" : 0x31,
    "spmcr" : 0x57,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  o   o   o   o      o   o   o   o" ],
        "write" : [ "  1   1   0   0      0   0   0   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 128,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 131072,
        "page_size" : 256,
        "num_pages" : 512,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read_lo" : [ "  0   0   1   0      0   0   0   0", "a15 a14 a13 a12    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  o   o   o   o      o   o   o   o" ],
        "read_hi" : [ "  0   0   1   0      1   0   0   0", "a15 a14 a13 a12    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  o   o   o   o      o   o   o   o" ],
        "loadpage_lo" : [ "  0   1   0   0      0   0   0   0", "  0   0   x   x      x   x   x   x", "  x  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "loadpage_hi" : [ "  0   1   0   0      1   0   0   0", "  0   0   x   x      x   x   x   x", "  x  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  0   1   0   0      1   1   0   0", "a15 a14 a13 a12    a11 a10  a9  a8", " a7   x   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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
      },
      "efuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "x x x x  x x x x  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "x x x x  x x x x  1 1 1 1  1 i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m162",
    "desc" : "ATmega162",
    "has_jtag" : true,
    "stk500_devcode" : 0x83,
    "avr910_devcode" : 0x63,
    "signature" : [ 0x1e, 0x94, 0x04 ],
    "chip_erase_delay" : 9000,
    "pagel" : 0xd7,
    "bs2" : 0xa0,
    "idr" : 0x04,
    "spmcr" : 0x57,
    "allowfullpagebitstream" : true,
    "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" ],
    "ocdrev" : 2,
    "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,
    "memories" : {
      "flash" : {
        "paged" : true,
        "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" : 0x41,
        "delay" : 10,
        "blocksize" : 128,
        "readsize" : 256
      },
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 16000,
        "max_write_delay" : 16000,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 16000,
        "max_write_delay" : 16000,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 16000,
        "max_write_delay" : 16000,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "x x x x  x x x x  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "x x x x  x x x x  1 1 1 1  1 i i i" ]
      },
      "lock" : {
        "size" : 1,
        "min_write_delay" : 16000,
        "max_write_delay" : 16000,
        "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" ]
      },
      "signature" : {
        "size" : 3,
        "read" : [ "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x", "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "calibration" : {
        "size" : 1,
        "read" : [ "0 0 1 1  1 0 0 0   0 0 x x  x x x x", "0 0 0 0  0 0 0 0   o o o o  o o o o" ]
      }
    }
  }, {
    "id" : "m163",
    "desc" : "ATmega163",
    "stk500_devcode" : 0x81,
    "avr910_devcode" : 0x64,
    "signature" : [ 0x1e, 0x94, 0x02 ],
    "chip_erase_delay" : 32000,
    "pagel" : 0xd7,
    "bs2" : 0xa0,
    "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" : 0,
    "chiperasepolltimeout" : 30,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 2,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 2,
    "memories" : {
      "eeprom" : {
        "size" : 512,
        "min_write_delay" : 4000,
        "max_write_delay" : 4000,
        "readback_p1" : 0xff,
        "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" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 16384,
        "page_size" : 128,
        "num_pages" : 128,
        "min_write_delay" : 16000,
        "max_write_delay" : 16000,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read_lo" : [ "  0   0   1   0      0   0   0   0", "  x   x   x 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   x   x 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   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", "  x   x   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", "  x   x   x a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x11,
        "delay" : 20,
        "blocksize" : 128,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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 x x  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 1 1  i i i i" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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   x x x x  1 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   1 1 1 1  1 i i i" ]
      },
      "lock" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "read" : [ "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0", "x x x x  0 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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m169",
    "desc" : "ATmega169",
    "has_jtag" : true,
    "stk500_devcode" : 0x85,
    "avr910_devcode" : 0x78,
    "signature" : [ 0x1e, 0x94, 0x05 ],
    "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 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" : 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, 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,
    "ocdrev" : 2,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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", "  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" ],
        "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  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "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", "  x   x   x 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   x   x 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   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", "  x   x   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", "  x   x   x a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "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" ]
      },
      "lock" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m329",
    "desc" : "ATmega329",
    "has_jtag" : true,
    "avr910_devcode" : 0x75,
    "signature" : [ 0x1e, 0x95, 0x03 ],
    "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 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" : 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, 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,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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", "  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" : [ "  1   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" ],
        "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" : 20,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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   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", "  x   x   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", "  x   x   x a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 256,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "read" : [ "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0", "x x x x  x x x x   o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m329p",
    "desc" : "ATmega329P",
    "has_jtag" : true,
    "avr910_devcode" : 0x75,
    "signature" : [ 0x1e, 0x95, 0x0b ],
    "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 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" : 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, 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,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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", "  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" : [ "  1   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" ],
        "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" : 20,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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   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", "  x   x   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", "  x   x   x a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 256,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "read" : [ "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0", "x x x x  x x x x   o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m3290",
    "desc" : "ATmega3290",
    "has_jtag" : true,
    "avr910_devcode" : 0x75,
    "signature" : [ 0x1e, 0x95, 0x04 ],
    "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 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" : 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, 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,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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", "  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" : [ "  1   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" ],
        "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" : 20,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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   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", "  x   x   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", "  x   x   x a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 256,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "read" : [ "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0", "x x x x  x x x x   o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m3290p",
    "desc" : "ATmega3290P",
    "has_jtag" : true,
    "avr910_devcode" : 0x75,
    "signature" : [ 0x1e, 0x95, 0x0c ],
    "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 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" : 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, 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,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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", "  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" : [ "  1   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" ],
        "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" : 20,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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   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", "  x   x   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", "  x   x   x a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 256,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "read" : [ "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0", "x x x x  x x x x   o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m649",
    "desc" : "ATmega649",
    "has_jtag" : true,
    "avr910_devcode" : 0x75,
    "signature" : [ 0x1e, 0x96, 0x03 ],
    "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 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" : 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, 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,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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      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", "  x   x   x   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
      },
      "flash" : {
        "paged" : true,
        "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", "  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   x   x 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
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "read" : [ "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0", "x x x x  x x x x   o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m6490",
    "desc" : "ATmega6490",
    "has_jtag" : true,
    "avr910_devcode" : 0x75,
    "signature" : [ 0x1e, 0x96, 0x04 ],
    "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 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" : 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, 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,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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      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", "  x   x   x   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
      },
      "flash" : {
        "paged" : true,
        "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", "  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   x   x 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
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "read" : [ "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0", "x x x x  x x x x   o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m32",
    "desc" : "ATmega32",
    "has_jtag" : true,
    "stk500_devcode" : 0x91,
    "avr910_devcode" : 0x72,
    "signature" : [ 0x1e, 0x95, 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" : 0x31,
    "spmcr" : 0x57,
    "allowfullpagebitstream" : true,
    "ocdrev" : 2,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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   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" : 64,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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", "  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" : 64,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "lock" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "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" ]
      },
      "calibration" : {
        "size" : 4,
        "read" : [ "0 0 1 1  1 0 0 0    0 0 x x  x x x x", "0 0 0 0  0 0 a1 a0  o o o o  o o o o" ]
      }
    }
  }, {
    "id" : "m161",
    "desc" : "ATmega161",
    "stk500_devcode" : 0x80,
    "avr910_devcode" : 0x60,
    "signature" : [ 0x1e, 0x94, 0x01 ],
    "chip_erase_delay" : 28000,
    "pagel" : 0xd7,
    "bs2" : 0xa0,
    "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" : 0,
    "chiperasepolltimeout" : 30,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 2,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 2,
    "memories" : {
      "eeprom" : {
        "size" : 512,
        "min_write_delay" : 3400,
        "max_write_delay" : 3400,
        "readback_p1" : 0xff,
        "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" : 5,
        "blocksize" : 128,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 16384,
        "page_size" : 128,
        "num_pages" : 128,
        "min_write_delay" : 14000,
        "max_write_delay" : 14000,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read_lo" : [ "  0   0   1   0      0   0   0   0", "  x   x   x 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   x   x 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   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", "  x   x   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", "  x   x   x a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x21,
        "delay" : 16,
        "blocksize" : 128,
        "readsize" : 256
      },
      "fuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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 o x 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   1 i 1 i  i i i i" ]
      },
      "lock" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m8",
    "desc" : "ATmega8",
    "stk500_devcode" : 0x70,
    "avr910_devcode" : 0x76,
    "signature" : [ 0x1e, 0x93, 0x07 ],
    "pagel" : 0xd7,
    "bs2" : 0xc2,
    "chip_erase_delay" : 10000,
    "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" : 2,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "memories" : {
      "eeprom" : {
        "size" : 512,
        "page_size" : 4,
        "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   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", "  0   0   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" : 20,
        "blocksize" : 128,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "num_pages" : 128,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0x00,
        "read_lo" : [ "  0   0   1   0    0   0   0   0", "  0   0   0   0  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   0   0  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   0      x   x   x   x", "  x   x   x  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   0      x   x   x   x", "  x   x   x  a4     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    a11 a10  a9  a8", " a7  a6  a5   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x21,
        "delay" : 10,
        "blocksize" : 64,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "lock" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "calibration" : {
        "size" : 4,
        "read" : [ "0  0  1  1   1  0  0  0   0  0  x  x   x  x  x  x", "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m8515",
    "desc" : "ATmega8515",
    "stk500_devcode" : 0x63,
    "avr910_devcode" : 0x3a,
    "signature" : [ 0x1e, 0x93, 0x06 ],
    "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" : 6,
    "togglevtg" : 0,
    "poweroffdelay" : 0,
    "resetdelayms" : 0,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "memories" : {
      "eeprom" : {
        "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   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", "  0   0   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" : 20,
        "blocksize" : 128,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0  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   0   0  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   0      x   x   x   x", "  x   x   x  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   0      x   x   x   x", "  x   x   x  a4     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    a11 a10  a9  a8", " a7  a6  a5   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x21,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "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" ]
      },
      "calibration" : {
        "size" : 4,
        "read" : [ "0 0 1 1  1 0 0 0     0 0 x x  x x x x", "0 0 0 0  0 0 a1 a0   o o o o  o o o o" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m8535",
    "desc" : "ATmega8535",
    "stk500_devcode" : 0x64,
    "avr910_devcode" : 0x69,
    "signature" : [ 0x1e, 0x93, 0x08 ],
    "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" : 6,
    "togglevtg" : 0,
    "poweroffdelay" : 0,
    "resetdelayms" : 0,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "memories" : {
      "eeprom" : {
        "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   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", "  0   0   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" : 20,
        "blocksize" : 128,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0  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   0   0  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   0      x   x   x   x", "  x   x   x  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   0      x   x   x   x", "  x   x   x  a4     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    a11 a10  a9  a8", " a7  a6  a5   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x21,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "lock" : {
        "size" : 1,
        "min_write_delay" : 2000,
        "max_write_delay" : 2000,
        "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" ]
      },
      "calibration" : {
        "size" : 4,
        "read" : [ "0 0 1 1  1 0 0 0   0 0 x x  x x x x", "0 0 0 0  0 0 a1 a0 o o o o  o o o o" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "t26",
    "desc" : "ATtiny26",
    "stk500_devcode" : 0x21,
    "avr910_devcode" : 0x5e,
    "signature" : [ 0x1e, 0x91, 0x09 ],
    "pagel" : 0xb3,
    "bs2" : 0xb2,
    "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" : [ 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 2,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "memories" : {
      "eeprom" : {
        "size" : 128,
        "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  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" : 10,
        "blocksize" : 64,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 2048,
        "page_size" : 32,
        "num_pages" : 64,
        "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  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" ],
        "loadpage_lo" : [ "  0  1  0  0   0  0  0  0", "  x  x  x  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", "  x  x  x  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", "  x  x  x  x   x  x a9 a8", " a7 a6 a5 a4   x  x  x  x", "  x  x  x  x   x  x  x  x" ],
        "mode" : 0x21,
        "delay" : 6,
        "blocksize" : 16,
        "readsize" : 256
      },
      "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" ]
      },
      "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 x o o" ],
        "write" : [ "1  0  1  0   1  1  0  0    1 1 1 1  1 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
      },
      "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
      },
      "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  x x x 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  x x x o  o o o o" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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" ]
      }
    }
  }, {
    "id" : "t261",
    "desc" : "ATtiny261",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb4, 0x00, 0x10 ],
    "eeprom_instr" : [ 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xbc, 0x00, 0xb4, 0x00, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "signature" : [ 0x1e, 0x91, 0x0c ],
    "pagel" : 0xb3,
    "bs2" : 0xb2,
    "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" : 0,
    "pp_controlstack" : [ 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 2,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "size" : 128,
        "page_size" : 4,
        "num_pages" : 32,
        "min_write_delay" : 4000,
        "max_write_delay" : 4000,
        "readback_p1" : 0xff,
        "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" ],
        "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  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 2048,
        "page_size" : 32,
        "num_pages" : 64,
        "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  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" ],
        "loadpage_lo" : [ "  0  1  0  0   0  0  0  0", "  x  x  x  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", "  x  x  x  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", "  x  x  x  x   x  x a9 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
      },
      "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" ]
      },
      "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 x o o" ],
        "write" : [ "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i", "x  x  x  x   x  x  x  x    x x x x  x x x x" ],
        "min_write_delay" : 4500,
        "max_write_delay" : 4500
      },
      "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" : 4500,
        "max_write_delay" : 4500
      },
      "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" : 4500,
        "max_write_delay" : 4500
      },
      "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 x 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   x x x x  x x x o" ],
        "min_write_delay" : 4500,
        "max_write_delay" : 4500
      },
      "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" ]
      }
    }
  }, {
    "id" : "t461",
    "desc" : "ATtiny461",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb4, 0x00, 0x10 ],
    "eeprom_instr" : [ 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xbc, 0x00, 0xb4, 0x00, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "signature" : [ 0x1e, 0x92, 0x08 ],
    "pagel" : 0xb3,
    "bs2" : 0xb2,
    "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" : 0,
    "pp_controlstack" : [ 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 2,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "size" : 256,
        "page_size" : 4,
        "num_pages" : 64,
        "min_write_delay" : 4000,
        "max_write_delay" : 4000,
        "readback_p1" : 0xff,
        "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" ],
        "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", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 4096,
        "page_size" : 64,
        "num_pages" : 64,
        "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  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" ],
        "loadpage_lo" : [ "  0  1  0  0   0  0  0  0", "  x  x  x  x   x  x  x  x", "  x  x  x 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  x  x a4  a3 a2 a1 a0", "  i  i  i  i   i  i  i  i" ],
        "writepage" : [ "  0  1  0  0   1   1  0  0", "  x  x  x  x   x a10 a9 a8", " a7 a6 a5  x   x   x  x  x", "  x  x  x  x   x   x  x  x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "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" ]
      },
      "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 x o o" ],
        "write" : [ "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i", "x  x  x  x   x  x  x  x    x x x x  x x x x" ],
        "min_write_delay" : 4500,
        "max_write_delay" : 4500
      },
      "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" : 4500,
        "max_write_delay" : 4500
      },
      "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" : 4500,
        "max_write_delay" : 4500
      },
      "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 x 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   x x x x  x x x o" ],
        "min_write_delay" : 4500,
        "max_write_delay" : 4500
      },
      "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" ]
      }
    }
  }, {
    "id" : "t861",
    "desc" : "ATtiny861",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb4, 0x00, 0x10 ],
    "eeprom_instr" : [ 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xbc, 0x00, 0xb4, 0x00, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "signature" : [ 0x1e, 0x93, 0x0d ],
    "pagel" : 0xb3,
    "bs2" : 0xb2,
    "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" : 0,
    "pp_controlstack" : [ 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 2,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "size" : 512,
        "num_pages" : 128,
        "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    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" ],
        "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  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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", "  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" ],
        "loadpage_lo" : [ "  0  1  0  0   0  0  0  0", "  x  x  x  x   x  x  x  x", "  x  x  x 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  x  x a4  a3 a2 a1 a0", "  i  i  i  i   i  i  i  i" ],
        "writepage" : [ "  0  1  0  0   1   1  0  0", "  x  x  x  x a11 a10 a9 a8", " a7 a6 a5  x   x   x  x  x", "  x  x  x  x   x   x  x  x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "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" ]
      },
      "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 x o o" ],
        "write" : [ "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i", "x  x  x  x   x  x  x  x    x x x x  x x x x" ],
        "min_write_delay" : 4500,
        "max_write_delay" : 4500
      },
      "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" : 4500,
        "max_write_delay" : 4500
      },
      "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" : 4500,
        "max_write_delay" : 4500
      },
      "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 x 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   x x x x  x x x o" ],
        "min_write_delay" : 4500,
        "max_write_delay" : 4500
      },
      "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" ]
      }
    }
  }, {
    "id" : "m48",
    "desc" : "ATmega48",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x59,
    "signature" : [ 0x1e, 0x92, 0x05 ],
    "pagel" : 0xd7,
    "bs2" : 0xc2,
    "chip_erase_delay" : 45000,
    "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, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 256,
        "min_write_delay" : 3600,
        "max_write_delay" : 3600,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   0   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", "  0   0   0   x      x   x   x   x", " 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   x   x", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 4096,
        "page_size" : 64,
        "num_pages" : 64,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read_lo" : [ "  0   0   1   0    0   0   0   0", "  0   0   0   0    0 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   0   0    0 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   x   x  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   x   x  a4     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 a10  a9  a8", " a7  a6  a5   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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   x x x x  x x x o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x x x i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m48p",
    "desc" : "ATmega48P",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x59,
    "signature" : [ 0x1e, 0x92, 0x0a ],
    "pagel" : 0xd7,
    "bs2" : 0xc2,
    "chip_erase_delay" : 45000,
    "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, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 256,
        "min_write_delay" : 3600,
        "max_write_delay" : 3600,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   0   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", "  0   0   0   x      x   x   x   x", " 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   x   x", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 4096,
        "page_size" : 64,
        "num_pages" : 64,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read_lo" : [ "  0   0   1   0    0   0   0   0", "  0   0   0   0    0 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   0   0    0 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   x   x  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   x   x  a4     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 a10  a9  a8", " a7  a6  a5   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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   x x x x  x x x o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x x x i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m88",
    "desc" : "ATmega88",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x73,
    "signature" : [ 0x1e, 0x93, 0x0a ],
    "pagel" : 0xd7,
    "bs2" : 0xc2,
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 512,
        "min_write_delay" : 3600,
        "max_write_delay" : 3600,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   0   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", "  0   0   0   x      x   x   x  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   x  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0  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   0   0  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   x   x  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   x   x  a4     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    a11 a10  a9  a8", " a7  a6  a5   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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   x x x x  x o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m88p",
    "desc" : "ATmega88P",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x73,
    "signature" : [ 0x1e, 0x93, 0x0f ],
    "pagel" : 0xd7,
    "bs2" : 0xc2,
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 512,
        "min_write_delay" : 3600,
        "max_write_delay" : 3600,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   0   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", "  0   0   0   x      x   x   x  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   x  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0  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   0   0  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   x   x  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   x   x  a4     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    a11 a10  a9  a8", " a7  a6  a5   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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   x x x x  x o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m168",
    "desc" : "ATmega168",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x86,
    "signature" : [ 0x1e, 0x94, 0x06 ],
    "pagel" : 0xd7,
    "bs2" : 0xc2,
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x" ],
    "chip_erase" : [ "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 512,
        "min_write_delay" : 3600,
        "max_write_delay" : 3600,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ " 1 0 1 0 0 0 0 0", " 0 0 0 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", " 0 0 0 x x x x 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   x  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "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 0 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 0 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 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 0 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 0 a12 a11 a10 a9 a8", " a7 a6 x x x x x x", " x x x x x x x x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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 x x x x x o o o" ],
        "write" : [ "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "x x x x x x x x x x x x x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m168p",
    "desc" : "ATmega168P",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x86,
    "signature" : [ 0x1e, 0x94, 0x0b ],
    "pagel" : 0xd7,
    "bs2" : 0xc2,
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x" ],
    "chip_erase" : [ "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 512,
        "min_write_delay" : 3600,
        "max_write_delay" : 3600,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ " 1 0 1 0 0 0 0 0", " 0 0 0 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", " 0 0 0 x x x x 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   x  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "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 0 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 0 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 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 0 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 0 a12 a11 a10 a9 a8", " a7 a6 x x x x x x", " x x x x x x x x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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 x x x x x o o o" ],
        "write" : [ "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "x x x x x x x x x x x x x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "t88",
    "desc" : "ATtiny88",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x73,
    "signature" : [ 0x1e, 0x93, 0x11 ],
    "pagel" : 0xd7,
    "bs2" : 0xc2,
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 64,
        "min_write_delay" : 3600,
        "max_write_delay" : 3600,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   0   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", "  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_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  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 64
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0  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   0   0  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   x   x  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   x   x  a4     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    a11 a10  a9  a8", " a7  a6  a5   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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   x x x x  x o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0", "x x x x  x x x x   x x x x  x x x i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m328",
    "desc" : "ATmega328",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x86,
    "signature" : [ 0x1e, 0x95, 0x14 ],
    "pagel" : 0xd7,
    "bs2" : 0xc2,
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x" ],
    "chip_erase" : [ "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 1024,
        "min_write_delay" : 3600,
        "max_write_delay" : 3600,
        "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 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" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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", " 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 0 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 0 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" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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 x x x x x o o o" ],
        "write" : [ "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "x x x x x x x x x x x x x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m328p",
    "desc" : "ATmega328P",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x86,
    "signature" : [ 0x1e, 0x95, 0x0f ],
    "pagel" : 0xd7,
    "bs2" : 0xc2,
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x" ],
    "chip_erase" : [ "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 1024,
        "min_write_delay" : 3600,
        "max_write_delay" : 3600,
        "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 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" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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", " 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 0 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 0 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" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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 x x x x x o o o" ],
        "write" : [ "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "x x x x x x x x x x x x x i i i" ]
      },
      "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" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "t2313",
    "desc" : "ATtiny2313",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb2, 0x0f, 0x1f ],
    "eeprom_instr" : [ 0xbb, 0xfe, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xba, 0x0f, 0xb2, 0x0f, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "stk500_devcode" : 0x23,
    "avr910_devcode" : 0x5e,
    "signature" : [ 0x1e, 0x91, 0x0a ],
    "pagel" : 0xd4,
    "bs2" : 0xd6,
    "reset" : "io",
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, 0x26, 0x36, 0x66, 0x76, 0x2a, 0x3a, 0x6a, 0x7a, 0x2e, 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,
    "ocdrev" : 0,
    "memories" : {
      "eeprom" : {
        "size" : 128,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0   0 0 0 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   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_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  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 2048,
        "page_size" : 32,
        "num_pages" : 64,
        "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  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   0   0    0   0  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   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 a9 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
      },
      "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" ]
      },
      "lock" : {
        "size" : 1,
        "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" ],
        "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" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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
      },
      "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
      },
      "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 x 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
      },
      "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" ]
      }
    }
  }, {
    "id" : "t4313",
    "desc" : "ATtiny4313",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb2, 0x0f, 0x1f ],
    "eeprom_instr" : [ 0xbb, 0xfe, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xba, 0x0f, 0xb2, 0x0f, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "stk500_devcode" : 0x23,
    "avr910_devcode" : 0x5e,
    "signature" : [ 0x1e, 0x92, 0x0d ],
    "pagel" : 0xd4,
    "bs2" : 0xd6,
    "reset" : "io",
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, 0x26, 0x36, 0x66, 0x76, 0x2a, 0x3a, 0x6a, 0x7a, 0x2e, 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,
    "ocdrev" : 0,
    "memories" : {
      "eeprom" : {
        "size" : 256,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1   0  1  0   0  0  0  0   0 0 0 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   0 0 0 x  x x x x", "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   x   x", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 4096,
        "page_size" : 64,
        "num_pages" : 64,
        "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 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   0   0    0 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   x   x  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   x   x  a4   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 a10 a9 a8", " a7 a6 a5  x   x   x  x  x", "  x  x  x  x   x   x  x  x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 32,
        "readsize" : 256
      },
      "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" ]
      },
      "lock" : {
        "size" : 1,
        "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" ],
        "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" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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
      },
      "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
      },
      "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 x 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
      },
      "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" ]
      }
    }
  }, {
    "id" : "pwm2",
    "desc" : "AT90PWM2",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x65,
    "signature" : [ 0x1e, 0x93, 0x81 ],
    "pagel" : 0xd8,
    "bs2" : 0xe2,
    "reset" : "io",
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 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,
    "memories" : {
      "eeprom" : {
        "size" : 512,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0   0 0 0 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   0 0 0 x  x x x 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   x   x", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0   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   0   0   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   x   x  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   x   x  a4   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   a11 a10 a9  a8", " a7 a6 a5  x   x   x   x   x", "  x  x  x  x   x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "signature" : {
        "size" : 3,
        "read" : [ "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x", "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "lock" : {
        "size" : 1,
        "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" ],
        "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" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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
      },
      "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
      },
      "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  i i i i  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
      },
      "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" ]
      }
    }
  }, {
    "id" : "pwm3",
    "desc" : "AT90PWM3",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x65,
    "signature" : [ 0x1e, 0x93, 0x81 ],
    "pagel" : 0xd8,
    "bs2" : 0xe2,
    "reset" : "io",
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 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,
    "memories" : {
      "eeprom" : {
        "size" : 512,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0   0 0 0 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   0 0 0 x  x x x 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   x   x", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0   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   0   0   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   x   x  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   x   x  a4   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   a11 a10 a9  a8", " a7 a6 a5  x   x   x   x   x", "  x  x  x  x   x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "signature" : {
        "size" : 3,
        "read" : [ "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x", "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "lock" : {
        "size" : 1,
        "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" ],
        "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" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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
      },
      "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
      },
      "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  i i i i  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
      },
      "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" ]
      }
    }
  }, {
    "id" : "pwm2b",
    "desc" : "AT90PWM2B",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x65,
    "signature" : [ 0x1e, 0x93, 0x83 ],
    "pagel" : 0xd8,
    "bs2" : 0xe2,
    "reset" : "io",
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 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,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "size" : 512,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0   0 0 0 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   0 0 0 x  x x x 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   x   x", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0   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   0   0   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   x   x  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   x   x  a4   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   a11 a10 a9  a8", " a7 a6 a5  x   x   x   x   x", "  x  x  x  x   x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "signature" : {
        "size" : 3,
        "read" : [ "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x", "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "lock" : {
        "size" : 1,
        "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" ],
        "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" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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
      },
      "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
      },
      "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  i i i i  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
      },
      "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" ]
      }
    }
  }, {
    "id" : "pwm3b",
    "desc" : "AT90PWM3B",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x65,
    "signature" : [ 0x1e, 0x93, 0x83 ],
    "pagel" : 0xd8,
    "bs2" : 0xe2,
    "reset" : "io",
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 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,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "size" : 512,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0   0 0 0 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   0 0 0 x  x x x 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   x   x", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0   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   0   0   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   x   x  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   x   x  a4   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   a11 a10 a9  a8", " a7 a6 a5  x   x   x   x   x", "  x  x  x  x   x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "signature" : {
        "size" : 3,
        "read" : [ "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x", "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "lock" : {
        "size" : 1,
        "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" ],
        "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" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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
      },
      "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
      },
      "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  i i i i  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
      },
      "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" ]
      }
    }
  }, {
    "id" : "pwm316",
    "desc" : "AT90PWM316",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x65,
    "signature" : [ 0x1e, 0x94, 0x83 ],
    "pagel" : 0xd8,
    "bs2" : 0xe2,
    "reset" : "io",
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1", "x x x x  x x x x    x x x x  x x x x" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 x  x x x x", "x x x x  x x x x    x x x x  x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 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,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "size" : 512,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0   0 0 0 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   0 0 0 x  x x x 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   x   x", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "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
      },
      "signature" : {
        "size" : 3,
        "read" : [ "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x", "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "lock" : {
        "size" : 1,
        "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" ],
        "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" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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
      },
      "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
      },
      "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  i i i i  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
      },
      "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" ]
      }
    }
  }, {
    "id" : "t25",
    "desc" : "ATtiny25",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb4, 0x02, 0x12 ],
    "eeprom_instr" : [ 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "stk500_devcode" : 0x14,
    "avr910_devcode" : 0x20,
    "signature" : [ 0x1e, 0x91, 0x08 ],
    "reset" : "io",
    "chip_erase_delay" : 4500,
    "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,
    "hvspcmdexedelay" : 0,
    "synchcycles" : 6,
    "latchcycles" : 1,
    "togglevtg" : 1,
    "poweroffdelay" : 25,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 100,
    "resetdelay" : 25,
    "chiperasepolltimeout" : 40,
    "chiperasetime" : 0,
    "programfusepolltimeout" : 25,
    "programlockpolltimeout" : 25,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "size" : 128,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0   0 0 0 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   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_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  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 2048,
        "page_size" : 32,
        "num_pages" : 64,
        "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  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   0   0    0   0  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   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 a9 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
      },
      "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" ]
      },
      "lock" : {
        "size" : 1,
        "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
      },
      "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
      },
      "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
      },
      "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 x 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
      },
      "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" ]
      }
    }
  }, {
    "id" : "t45",
    "desc" : "ATtiny45",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb4, 0x02, 0x12 ],
    "eeprom_instr" : [ 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "stk500_devcode" : 0x14,
    "avr910_devcode" : 0x20,
    "signature" : [ 0x1e, 0x92, 0x06 ],
    "reset" : "io",
    "chip_erase_delay" : 4500,
    "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" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 100,
    "resetdelay" : 25,
    "chiperasepolltimeout" : 40,
    "chiperasetime" : 0,
    "programfusepolltimeout" : 25,
    "programlockpolltimeout" : 25,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "size" : 256,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0    0 0 0 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    0 0 0 x  x x x x", "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   x   x", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 4096,
        "page_size" : 64,
        "num_pages" : 64,
        "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  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   0   0    0  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   x   x  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   x   x  a4   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 a10 a9 a8", " a7 a6 a5  x   x  x  x  x", "  x  x  x  x   x  x  x  x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 32,
        "readsize" : 256
      },
      "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" ]
      },
      "lock" : {
        "size" : 1,
        "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
      },
      "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
      },
      "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
      },
      "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 x 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
      },
      "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" ]
      }
    }
  }, {
    "id" : "t85",
    "desc" : "ATtiny85",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb4, 0x02, 0x12 ],
    "eeprom_instr" : [ 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "stk500_devcode" : 0x14,
    "avr910_devcode" : 0x20,
    "signature" : [ 0x1e, 0x93, 0x0b ],
    "reset" : "io",
    "chip_erase_delay" : 4500,
    "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,
    "hvspcmdexedelay" : 0,
    "synchcycles" : 6,
    "latchcycles" : 1,
    "togglevtg" : 1,
    "poweroffdelay" : 25,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 100,
    "resetdelay" : 25,
    "chiperasepolltimeout" : 40,
    "chiperasetime" : 0,
    "programfusepolltimeout" : 25,
    "programlockpolltimeout" : 25,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "size" : 512,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0    0 0 0 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    0 0 0 x  x x x 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   x  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0  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   0   0  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   x   x  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   x   x  a4   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  a11 a10 a9 a8", " a7 a6 a5  x   x  x  x  x", "  x  x  x  x   x  x  x  x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 32,
        "readsize" : 256
      },
      "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" ]
      },
      "lock" : {
        "size" : 1,
        "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
      },
      "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
      },
      "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
      },
      "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 x 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
      },
      "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" ]
      }
    }
  }, {
    "id" : "m640",
    "desc" : "ATmega640",
    "signature" : [ 0x1e, 0x96, 0x08 ],
    "has_jtag" : true,
    "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" : 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, 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 65536,
        "page_size" : 256,
        "num_pages" : 256,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read_lo" : [ "  0   0   1   0      0   0   0   0", "  0 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", "  0 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", "  0 a14 a13 a12    a11 a10  a9  a8", " a7   x   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m1280",
    "desc" : "ATmega1280",
    "signature" : [ 0x1e, 0x97, 0x03 ],
    "has_jtag" : true,
    "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" : 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, 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 131072,
        "page_size" : 256,
        "num_pages" : 512,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" : 0x41,
        "delay" : 10,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m1281",
    "desc" : "ATmega1281",
    "signature" : [ 0x1e, 0x97, 0x04 ],
    "has_jtag" : true,
    "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" : 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, 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 131072,
        "page_size" : 256,
        "num_pages" : 512,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" : 0x41,
        "delay" : 10,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m2560",
    "desc" : "ATmega2560",
    "signature" : [ 0x1e, 0x98, 0x01 ],
    "has_jtag" : true,
    "stk500_devcode" : 0xb2,
    "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" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 4,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 262144,
        "page_size" : 256,
        "num_pages" : 1024,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "load_ext_addr" : [ "  0   1   0   0      1   1   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0   0   0 a16", "  0   0   0   0      0   0   0   0" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m2561",
    "desc" : "ATmega2561",
    "signature" : [ 0x1e, 0x98, 0x02 ],
    "has_jtag" : true,
    "stk500_devcode" : 0xb2,
    "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" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 4,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 262144,
        "page_size" : 256,
        "num_pages" : 1024,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "load_ext_addr" : [ "  0   1   0   0      1   1   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0   0   0 a16", "  0   0   0   0      0   0   0   0" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m128rfa1",
    "desc" : "ATmega128RFA1",
    "signature" : [ 0x1e, 0xa7, 0x01 ],
    "has_jtag" : true,
    "stk500_devcode" : 0xb2,
    "chip_erase_delay" : 55000,
    "pagel" : 0xd7,
    "bs2" : 0xe2,
    "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" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 131072,
        "page_size" : 256,
        "num_pages" : 512,
        "min_write_delay" : 50000,
        "max_write_delay" : 50000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" : 0x41,
        "delay" : 20,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m256rfr2",
    "desc" : "ATmega256RFR2",
    "signature" : [ 0x1e, 0xa8, 0x02 ],
    "has_jtag" : true,
    "stk500_devcode" : 0xb2,
    "chip_erase_delay" : 18500,
    "pagel" : 0xd7,
    "bs2" : 0xe2,
    "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" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 4,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 8192,
        "min_write_delay" : 13000,
        "max_write_delay" : 13000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   0   1   0      0   0   0   0", "  x   x   x a12    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 a12    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 a12    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 262144,
        "page_size" : 256,
        "num_pages" : 1024,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "load_ext_addr" : [ "  0   1   0   0      1   1   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0   0   0 a16", "  0   0   0   0      0   0   0   0" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m128rfr2",
    "desc" : "ATmega128RFR2",
    "signature" : [ 0x1e, 0xa7, 0x02 ],
    "has_jtag" : true,
    "stk500_devcode" : 0xb2,
    "chip_erase_delay" : 55000,
    "pagel" : 0xd7,
    "bs2" : 0xe2,
    "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" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 131072,
        "page_size" : 256,
        "num_pages" : 512,
        "min_write_delay" : 50000,
        "max_write_delay" : 50000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" : 0x41,
        "delay" : 20,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m64rfr2",
    "desc" : "ATmega64RFR2",
    "signature" : [ 0x1e, 0xa6, 0x02 ],
    "has_jtag" : true,
    "stk500_devcode" : 0xb2,
    "chip_erase_delay" : 55000,
    "pagel" : 0xd7,
    "bs2" : 0xe2,
    "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" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 2048,
        "min_write_delay" : 13000,
        "max_write_delay" : 13000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   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" ],
        "write" : [ "  1   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" ],
        "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" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 65536,
        "page_size" : 256,
        "num_pages" : 256,
        "min_write_delay" : 50000,
        "max_write_delay" : 50000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read_lo" : [ "  0   0   1   0      0   0   0   0", "  0 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", "  0 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", "  0 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" : 20,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m2564rfr2",
    "desc" : "ATmega2564RFR2",
    "signature" : [ 0x1e, 0xa8, 0x03 ],
    "has_jtag" : true,
    "stk500_devcode" : 0xb2,
    "chip_erase_delay" : 18500,
    "pagel" : 0xd7,
    "bs2" : 0xe2,
    "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" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 4,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 8192,
        "min_write_delay" : 13000,
        "max_write_delay" : 13000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   0   1   0      0   0   0   0", "  x   x   x a12    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 a12    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 a12    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 262144,
        "page_size" : 256,
        "num_pages" : 1024,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "load_ext_addr" : [ "  0   1   0   0      1   1   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0   0   0 a16", "  0   0   0   0      0   0   0   0" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m1284rfr2",
    "desc" : "ATmega1284RFR2",
    "signature" : [ 0x1e, 0xa7, 0x03 ],
    "has_jtag" : true,
    "stk500_devcode" : 0xb2,
    "chip_erase_delay" : 55000,
    "pagel" : 0xd7,
    "bs2" : 0xe2,
    "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" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "loadpage_lo" : [ "  1   1   0   0      0   0   0   1", "  0   0   0   0      0   0   0   0", "  0   0   0   0      0  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   x   x    a11 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 131072,
        "page_size" : 256,
        "num_pages" : 512,
        "min_write_delay" : 50000,
        "max_write_delay" : 50000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" : 0x41,
        "delay" : 20,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m644rfr2",
    "desc" : "ATmega644RFR2",
    "signature" : [ 0x1e, 0xa6, 0x03 ],
    "has_jtag" : true,
    "stk500_devcode" : 0xb2,
    "chip_erase_delay" : 55000,
    "pagel" : 0xd7,
    "bs2" : 0xe2,
    "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" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 2048,
        "min_write_delay" : 13000,
        "max_write_delay" : 13000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   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" ],
        "write" : [ "  1   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" ],
        "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" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 65536,
        "page_size" : 256,
        "num_pages" : 256,
        "min_write_delay" : 50000,
        "max_write_delay" : 50000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read_lo" : [ "  0   0   1   0      0   0   0   0", "  0 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", "  0 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", "  0 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" : 20,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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 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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "t24",
    "desc" : "ATtiny24",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb4, 0x07, 0x17 ],
    "eeprom_instr" : [ 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "stk500_devcode" : 0x14,
    "avr910_devcode" : 0x20,
    "signature" : [ 0x1e, 0x91, 0x0b ],
    "reset" : "io",
    "chip_erase_delay" : 4500,
    "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, 0x0f ],
    "hventerstabdelay" : 100,
    "hvspcmdexedelay" : 0,
    "synchcycles" : 6,
    "latchcycles" : 1,
    "togglevtg" : 1,
    "poweroffdelay" : 25,
    "resetdelayms" : 0,
    "resetdelayus" : 70,
    "hvleavestabdelay" : 100,
    "resetdelay" : 25,
    "chiperasepolltimeout" : 40,
    "chiperasetime" : 0,
    "programfusepolltimeout" : 25,
    "programlockpolltimeout" : 25,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "size" : 128,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0   0 0 0 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   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_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  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 2048,
        "page_size" : 32,
        "num_pages" : 64,
        "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  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   0   0    0   0  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   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 a9 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
      },
      "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" ]
      },
      "lock" : {
        "size" : 1,
        "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  x x x x  x x i i" ],
        "read" : [ "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0  o o o o  o o o o" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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
      },
      "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
      },
      "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 x 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
      },
      "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  a0   o o o o  o o o o" ]
      }
    }
  }, {
    "id" : "t44",
    "desc" : "ATtiny44",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb4, 0x07, 0x17 ],
    "eeprom_instr" : [ 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "stk500_devcode" : 0x14,
    "avr910_devcode" : 0x20,
    "signature" : [ 0x1e, 0x92, 0x07 ],
    "reset" : "io",
    "chip_erase_delay" : 4500,
    "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, 0x0f ],
    "hventerstabdelay" : 100,
    "hvspcmdexedelay" : 0,
    "synchcycles" : 6,
    "latchcycles" : 1,
    "togglevtg" : 1,
    "poweroffdelay" : 25,
    "resetdelayms" : 0,
    "resetdelayus" : 70,
    "hvleavestabdelay" : 100,
    "resetdelay" : 25,
    "chiperasepolltimeout" : 40,
    "chiperasetime" : 0,
    "programfusepolltimeout" : 25,
    "programlockpolltimeout" : 25,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "size" : 256,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0    0 0 0 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    0 0 0 x  x x x x", "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   x   x", "  x  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 4096,
        "page_size" : 64,
        "num_pages" : 64,
        "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  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   0   0    0  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   x   x  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   x   x  a4   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 a10 a9 a8", " a7 a6 a5  x   x  x  x  x", "  x  x  x  x   x  x  x  x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 32,
        "readsize" : 256
      },
      "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" ]
      },
      "lock" : {
        "size" : 1,
        "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  x x x x  x x i i" ],
        "read" : [ "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0  o o o o  o o o o" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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
      },
      "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
      },
      "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 x 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
      },
      "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  a0   o o o o  o o o o" ]
      }
    }
  }, {
    "id" : "t84",
    "desc" : "ATtiny84",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb4, 0x07, 0x17 ],
    "eeprom_instr" : [ 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "stk500_devcode" : 0x14,
    "avr910_devcode" : 0x20,
    "signature" : [ 0x1e, 0x93, 0x0c ],
    "reset" : "io",
    "chip_erase_delay" : 4500,
    "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, 0x0f ],
    "hventerstabdelay" : 100,
    "hvspcmdexedelay" : 0,
    "synchcycles" : 6,
    "latchcycles" : 1,
    "togglevtg" : 1,
    "poweroffdelay" : 25,
    "resetdelayms" : 0,
    "resetdelayus" : 70,
    "hvleavestabdelay" : 100,
    "resetdelay" : 25,
    "chiperasepolltimeout" : 40,
    "chiperasetime" : 0,
    "programfusepolltimeout" : 25,
    "programlockpolltimeout" : 25,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "size" : 512,
        "paged" : false,
        "page_size" : 4,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0    0 0 0 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    0 0 0 x  x x x 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   x   x", "  x  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "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   0   0  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   0   0  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   x   x  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   x   x  a4   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  a11 a10 a9 a8", " a7 a6 a5  x   x  x  x  x", "  x  x  x  x   x  x  x  x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 32,
        "readsize" : 256
      },
      "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" ]
      },
      "lock" : {
        "size" : 1,
        "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  x x x x  x x i i" ],
        "read" : [ "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0  o o o o  o o o o" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "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
      },
      "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
      },
      "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 x 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
      },
      "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  a0   o o o o  o o o o" ]
      }
    }
  }, {
    "id" : "t43u",
    "desc" : "ATtiny43u",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb4, 0x07, 0x17 ],
    "eeprom_instr" : [ 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac ],
    "stk500_devcode" : 0x14,
    "avr910_devcode" : 0x20,
    "signature" : [ 0x1e, 0x92, 0x0c ],
    "reset" : "io",
    "chip_erase_delay" : 1000,
    "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, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, 0x06, 0x16, 0x46, 0x56, 0x0a, 0x1a, 0x4a, 0x5a, 0x1e, 0x7c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "hvspcmdexedelay" : 0,
    "latchcycles" : 5,
    "togglevtg" : 1,
    "poweroffdelay" : 20,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "memories" : {
      "eeprom" : {
        "size" : 64,
        "paged" : true,
        "page_size" : 4,
        "num_pages" : 16,
        "min_write_delay" : 4000,
        "max_write_delay" : 4500,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ "1  0  1  0   0  0  0  0    0 0 0 x  x x x x", "0  0 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", "0  0 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", "  0   0  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 5,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 4096,
        "page_size" : 64,
        "num_pages" : 64,
        "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  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   0   0    0  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   x   x  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   x   x  a4   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 a10 a9 a8", " a7 a6 a5  x   x  x  x  x", "  x  x  x  x   x  x  x  x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 64,
        "readsize" : 256
      },
      "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" ]
      },
      "lock" : {
        "size" : 1,
        "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" : 4500,
        "max_write_delay" : 4500
      },
      "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" : 4500,
        "max_write_delay" : 4500
      },
      "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" : 4500,
        "max_write_delay" : 4500
      },
      "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 x 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" : 4500,
        "max_write_delay" : 4500
      },
      "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" ]
      }
    }
  }, {
    "id" : "m32u4",
    "desc" : "ATmega32U4",
    "signature" : [ 0x1e, 0x95, 0x87 ],
    "usbpid" : 0x2ff4,
    "has_jtag" : true,
    "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" : 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, 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 1024,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   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" ],
        "write" : [ "  1   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" ],
        "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" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "num_pages" : 256,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read_lo" : [ "  0   0   1   0      0   0   0   0", "  0 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", "  0 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   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", "  x   x   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", " a15 a14 a13 a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "usb646",
    "desc" : "AT90USB646",
    "signature" : [ 0x1e, 0x96, 0x82 ],
    "usbpid" : 0x2ff9,
    "has_jtag" : true,
    "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" : 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, 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 2048,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   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" ],
        "write" : [ "  1   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" ],
        "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" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 65536,
        "page_size" : 256,
        "num_pages" : 256,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read_lo" : [ "  0   0   1   0      0   0   0   0", "  0 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", "  0 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", "  0 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
      },
      "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "usb647",
    "desc" : "AT90USB647",
    "signature" : [ 0x1e, 0x96, 0x82 ],
    "usbpid" : 0x2ff9,
    "has_jtag" : true,
    "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" : 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, 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 2048,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   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" ],
        "write" : [ "  1   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" ],
        "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" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 65536,
        "page_size" : 256,
        "num_pages" : 256,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read_lo" : [ "  0   0   1   0      0   0   0   0", "  0 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", "  0 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", "  0 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
      },
      "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "usb1286",
    "desc" : "AT90USB1286",
    "signature" : [ 0x1e, 0x97, 0x82 ],
    "usbpid" : 0x2ffb,
    "has_jtag" : true,
    "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" : 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, 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "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" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 131072,
        "page_size" : 256,
        "num_pages" : 512,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" : 0x41,
        "delay" : 6,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "usb1287",
    "desc" : "AT90USB1287",
    "signature" : [ 0x1e, 0x97, 0x82 ],
    "usbpid" : 0x2ffb,
    "has_jtag" : true,
    "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" : 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, 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,
    "rampz" : 0x3b,
    "allowfullpagebitstream" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "size" : 4096,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" ],
        "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" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 131072,
        "page_size" : 256,
        "num_pages" : 512,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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" : 0x41,
        "delay" : 6,
        "blocksize" : 256,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "usb162",
    "desc" : "AT90USB162",
    "has_jtag" : false,
    "has_debugwire" : true,
    "signature" : [ 0x1e, 0x94, 0x82 ],
    "usbpid" : 0x2ffa,
    "chip_erase_delay" : 9000,
    "reset" : "io",
    "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" ],
    "pagel" : 0xd7,
    "bs2" : 0xc6,
    "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, 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,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 512,
        "num_pages" : 128,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   0   0    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   0    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   0  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   0   0    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 16384,
        "page_size" : 128,
        "num_pages" : 128,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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   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", "  x   x   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", "a15 a14 a13 a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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  i i i i  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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "usb82",
    "desc" : "AT90USB82",
    "has_jtag" : false,
    "has_debugwire" : true,
    "signature" : [ 0x1e, 0x93, 0x82 ],
    "usbpid" : 0x2ff7,
    "chip_erase_delay" : 9000,
    "reset" : "io",
    "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" ],
    "pagel" : 0xd7,
    "bs2" : 0xc6,
    "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, 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,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 512,
        "num_pages" : 128,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   0   0    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   0    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   0  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   0   0    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 128,
        "num_pages" : 64,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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   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", "  x   x   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", "a15 a14 a13 a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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  i i i i  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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m32u2",
    "desc" : "ATmega32U2",
    "has_jtag" : false,
    "has_debugwire" : true,
    "signature" : [ 0x1e, 0x95, 0x8a ],
    "usbpid" : 0x2ff0,
    "chip_erase_delay" : 9000,
    "reset" : "io",
    "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" ],
    "pagel" : 0xd7,
    "bs2" : 0xc6,
    "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, 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,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 1024,
        "num_pages" : 256,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   0   0    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   0    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   0  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   0   0    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "num_pages" : 256,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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   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", "  x   x   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", "a15 a14 a13 a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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  i i i i  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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m16u2",
    "desc" : "ATmega16U2",
    "has_jtag" : false,
    "has_debugwire" : true,
    "signature" : [ 0x1e, 0x94, 0x89 ],
    "usbpid" : 0x2fef,
    "chip_erase_delay" : 9000,
    "reset" : "io",
    "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" ],
    "pagel" : 0xd7,
    "bs2" : 0xc6,
    "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, 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,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 512,
        "num_pages" : 128,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   0   0    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   0    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   0  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   0   0    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 16384,
        "page_size" : 128,
        "num_pages" : 128,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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   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", "  x   x   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", "a15 a14 a13 a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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  i i i i  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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m8u2",
    "desc" : "ATmega8U2",
    "has_jtag" : false,
    "has_debugwire" : true,
    "signature" : [ 0x1e, 0x93, 0x89 ],
    "usbpid" : 0x2fee,
    "chip_erase_delay" : 9000,
    "reset" : "io",
    "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" ],
    "pagel" : 0xd7,
    "bs2" : 0xc6,
    "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, 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,
    "ocdrev" : 1,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 512,
        "num_pages" : 128,
        "min_write_delay" : 9000,
        "max_write_delay" : 9000,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "read" : [ "  1   0   1   0      0   0   0   0", "  0   0   0   0    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   0    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   0  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  1   1   0   0      0   0   1   0", "  0   0   0   0    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 20,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 8192,
        "page_size" : 64,
        "num_pages" : 128,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "readback_p1" : 0x00,
        "readback_p2" : 0x00,
        "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   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", "  x   x   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", "a15 a14 a13 a12    a11 a10  a9  a8", " a7  a6   x   x      x   x   x   x", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 64,
        "readsize" : 256
      },
      "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
      },
      "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
      },
      "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  i i i i  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
      },
      "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
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : "m325",
    "desc" : "ATmega325",
    "signature" : [ 0x1e, 0x95, 0x05 ],
    "has_jtag" : true,
    "avr910_devcode" : 0x74,
    "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", "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0" ],
    "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, 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" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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   0      0   0  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   0      0   0  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   0   0      0   0  a9  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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", "  0 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", "  0 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   0      0   0   0   0", " a7  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   0      0   0   0   0", " a7  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  0   1   0   0      1   1   0   0", "  0 a14 a13 a12    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 128,
        "readsize" : 256
      },
      "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 0  0 0 0 0", "0 0 0 0  0 0 0 0   1 1 i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "lfuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0   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", "0 0 0 0  0 0 0 0   i i i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "hfuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0", "0 0 0 0  0 0 0 0   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", "0 0 0 0  0 0 0 0   i i i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "efuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "0 0 0 0  0 0 0 0  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "signature" : {
        "size" : 3,
        "read" : [ "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0", "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "calibration" : {
        "size" : 1,
        "read" : [ "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0   o o o o  o o o o" ]
      }
    }
  }, {
    "id" : "m645",
    "desc" : "ATmega645",
    "signature" : [ 0x1e, 0x96, 0x05 ],
    "has_jtag" : true,
    "avr910_devcode" : 0x74,
    "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", "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0" ],
    "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, 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" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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   0      0 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   0      0 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   0   0      0 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "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   0      0   0   0   0", "  a7 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   0      0   0   0   0", "  a7 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  a6  a5  a4     a3  a2  a1  a0", "   0   0   0   0      0   0   0   0" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 128,
        "readsize" : 256
      },
      "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 0  0 0 0 0", "0 0 0 0  0 0 0 0   1 1 i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "lfuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0   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", "0 0 0 0  0 0 0 0   i i i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "hfuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0", "0 0 0 0  0 0 0 0   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", "0 0 0 0  0 0 0 0   i i i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "efuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "0 0 0 0  0 0 0 0  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "signature" : {
        "size" : 3,
        "read" : [ "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0", "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "calibration" : {
        "size" : 1,
        "read" : [ "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0   o o o o  o o o o" ]
      }
    }
  }, {
    "id" : "m3250",
    "desc" : "ATmega3250",
    "signature" : [ 0x1e, 0x95, 0x06 ],
    "has_jtag" : true,
    "avr910_devcode" : 0x74,
    "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", "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0" ],
    "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, 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" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "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   0      0   0  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   0      0   0  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   0   0      0   0  a9  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 32768,
        "page_size" : 128,
        "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", "  0 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", "  0 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   0      0   0   0   0", " a7  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   0      0   0   0   0", " a7  a6  a5  a4     a3  a2  a1  a0", "  i   i   i   i      i   i   i   i" ],
        "writepage" : [ "  0   1   0   0      1   1   0   0", "  0 a14 a13 a12    a11 a10  a9  a8", " a7  a6  a5  a4     a3  a2  a1  a0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 128,
        "readsize" : 256
      },
      "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 0  0 0 0 0", "0 0 0 0  0 0 0 0   1 1 i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "lfuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0   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", "0 0 0 0  0 0 0 0   i i i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "hfuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0", "0 0 0 0  0 0 0 0   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", "0 0 0 0  0 0 0 0   i i i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "efuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "0 0 0 0  0 0 0 0  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "signature" : {
        "size" : 3,
        "read" : [ "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0", "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "calibration" : {
        "size" : 1,
        "read" : [ "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0   o o o o  o o o o" ]
      }
    }
  }, {
    "id" : "m6450",
    "desc" : "ATmega6450",
    "signature" : [ 0x1e, 0x96, 0x06 ],
    "has_jtag" : true,
    "avr910_devcode" : 0x74,
    "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", "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0" ],
    "chip_erase" : [ "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0" ],
    "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, 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" : false,
    "ocdrev" : 3,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 8,
        "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   0      0 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   0      0 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   0   0      0 a10  a9  a8", " a7  a6  a5  a4     a3   0   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 8,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "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   0      0   0   0   0", "  a7 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   0      0   0   0   0", "  a7 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  a6  a5  a4     a3  a2  a1  a0", "   0   0   0   0      0   0   0   0" ],
        "mode" : 0x41,
        "delay" : 10,
        "blocksize" : 128,
        "readsize" : 256
      },
      "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 0  0 0 0 0", "0 0 0 0  0 0 0 0   1 1 i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "lfuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0   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", "0 0 0 0  0 0 0 0   i i i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "hfuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0", "0 0 0 0  0 0 0 0   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", "0 0 0 0  0 0 0 0   i i i i  i i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "efuse" : {
        "size" : 1,
        "read" : [ "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0", "0 0 0 0  0 0 0 0  o o o o  o o o o" ],
        "write" : [ "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0", "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i" ],
        "min_write_delay" : 9000,
        "max_write_delay" : 9000
      },
      "signature" : {
        "size" : 3,
        "read" : [ "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0", "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o" ]
      },
      "calibration" : {
        "size" : 1,
        "read" : [ "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0", "0 0 0 0  0 0 0 0   o o o o  o o o o" ]
      }
    }
  }, {
    "id" : ".xmega",
    "desc" : "AVR XMEGA family common values",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      }
    }
  }, {
    "id" : "x16a4u",
    "desc" : "ATxmega16A4U",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x94, 0x41 ],
    "usbpid" : 0x2fe3,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x400,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x4000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x803000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x804000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x5000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x16c4",
    "desc" : "ATxmega16C4",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x95, 0x44 ],
    "usbpid" : 0x2fe3,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x400,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x4000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x803000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x804000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x5000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x16d4",
    "desc" : "ATxmega16D4",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x94, 0x42 ],
    "usbpid" : 0x2fe3,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x400,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x4000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x803000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x804000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x5000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x16a4",
    "desc" : "ATxmega16A4",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x94, 0x41 ],
    "usbpid" : 0x2fe3,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x400,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x4000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x803000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x804000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x5000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x32a4u",
    "desc" : "ATxmega32A4U",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x95, 0x41 ],
    "usbpid" : 0x2fe4,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x400,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x8000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x807000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x808000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x9000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x32c4",
    "desc" : "ATxmega32C4",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x94, 0x43 ],
    "usbpid" : 0x2fe4,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x400,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x8000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x807000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x808000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x9000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x32d4",
    "desc" : "ATxmega32D4",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x95, 0x42 ],
    "usbpid" : 0x2fe4,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x400,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x8000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x807000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x808000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x9000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x32a4",
    "desc" : "ATxmega32A4",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x95, 0x41 ],
    "usbpid" : 0x2fe4,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x400,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x8000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x807000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x808000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x9000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x64a4u",
    "desc" : "ATxmega64A4U",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x46 ],
    "usbpid" : 0x2fe5,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x64c3",
    "desc" : "ATxmega64C3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x49 ],
    "usbpid" : 0x2fd6,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x64d3",
    "desc" : "ATxmega64D3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x4a ],
    "usbpid" : 0x2fe5,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x64d4",
    "desc" : "ATxmega64D4",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x47 ],
    "usbpid" : 0x2fe5,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x64a1",
    "desc" : "ATxmega64A1",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x4e ],
    "usbpid" : 0x2fe5,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x64a1u",
    "desc" : "ATxmega64A1U",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x4e ],
    "usbpid" : 0x2fe8,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x64a3",
    "desc" : "ATxmega64A3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x42 ],
    "usbpid" : 0x2fe5,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x64a3u",
    "desc" : "ATxmega64A3U",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x42 ],
    "usbpid" : 0x2fe5,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x64a4",
    "desc" : "ATxmega64A4",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x46 ],
    "usbpid" : 0x2fe5,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x64b1",
    "desc" : "ATxmega64B1",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x52 ],
    "usbpid" : 0x2fe1,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x64b3",
    "desc" : "ATxmega64B3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x96, 0x51 ],
    "usbpid" : 0x2fdf,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x10000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x80f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x810000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x11000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x128c3",
    "desc" : "ATxmega128C3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x52 ],
    "usbpid" : 0x2fd7,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x81e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x128d3",
    "desc" : "ATxmega128D3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x48 ],
    "usbpid" : 0x2fd7,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x81e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x128d4",
    "desc" : "ATxmega128D4",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x47 ],
    "usbpid" : 0x2fd7,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x81e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x128a1",
    "desc" : "ATxmega128A1",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x4c ],
    "usbpid" : 0x2fd7,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x81e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x128a1d",
    "desc" : "ATxmega128A1revD",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x41 ],
    "usbpid" : 0x2fd7,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x81e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x128a1u",
    "desc" : "ATxmega128A1U",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x4c ],
    "usbpid" : 0x2fed,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x81e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x128a3",
    "desc" : "ATxmega128A3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x42 ],
    "usbpid" : 0x2fd7,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x81e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x128a3u",
    "desc" : "ATxmega128A3U",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x42 ],
    "usbpid" : 0x2fe6,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x81e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x128a4",
    "desc" : "ATxmega128A4",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x46 ],
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x81f000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x128a4u",
    "desc" : "ATxmega128A4U",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x46 ],
    "usbpid" : 0x2fde,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x81f000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x128b1",
    "desc" : "ATxmega128B1",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x4d ],
    "usbpid" : 0x2fea,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x81e000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x128b3",
    "desc" : "ATxmega128B3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x4b ],
    "usbpid" : 0x2fe0,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x20000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x81e000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x820000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x22000,
        "offset" : 0x800000,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x100,
        "offset" : 0x8e0400,
        "page_size" : 0x100,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x192c3",
    "desc" : "ATxmega192C3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x51 ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x30000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x82e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x830000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x32000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x192d3",
    "desc" : "ATxmega192D3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x49 ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x30000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x82e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x830000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x32000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x192a1",
    "desc" : "ATxmega192A1",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x4e ],
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x30000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x82e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x830000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x32000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x192a3",
    "desc" : "ATxmega192A3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x44 ],
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x30000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x82e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x830000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x32000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x192a3u",
    "desc" : "ATxmega192A3U",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x97, 0x44 ],
    "has_jtag" : true,
    "usbpid" : 0x2fe7,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x800,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x30000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x82e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x830000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x32000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x256c3",
    "desc" : "ATxmega256C3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x98, 0x46 ],
    "usbpid" : 0x2fda,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x1000,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x40000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x83e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x840000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x42000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x256d3",
    "desc" : "ATxmega256D3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x98, 0x44 ],
    "usbpid" : 0x2fda,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x1000,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x40000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x83e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x840000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x42000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x256a1",
    "desc" : "ATxmega256A1",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x98, 0x46 ],
    "usbpid" : 0x2fda,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x1000,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x40000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x83e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x840000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x42000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x256a3",
    "desc" : "ATxmega256A3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x98, 0x42 ],
    "usbpid" : 0x2fda,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x1000,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x40000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x83e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x840000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x42000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x256a3u",
    "desc" : "ATxmega256A3U",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x98, 0x42 ],
    "usbpid" : 0x2fec,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x1000,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x40000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x83e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x840000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x42000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x256a3b",
    "desc" : "ATxmega256A3B",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x98, 0x43 ],
    "usbpid" : 0x2fda,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x1000,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x40000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x83e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x840000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x42000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x256a3bu",
    "desc" : "ATxmega256A3BU",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x98, 0x43 ],
    "usbpid" : 0x2fe2,
    "has_jtag" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x1000,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x40000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x83e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x840000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x42000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "fuse0" : {
        "size" : 1,
        "offset" : 0x8f0020
      }
    }
  }, {
    "id" : "x384c3",
    "desc" : "ATxmega384C3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x98, 0x45 ],
    "usbpid" : 0x2fdb,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x1000,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x60000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x85e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x860000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x62000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x384d3",
    "desc" : "ATxmega384D3",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x98, 0x47 ],
    "usbpid" : 0x2fdb,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x1000,
        "offset" : 0x8c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x60000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x2000,
        "offset" : 0x85e000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x2000,
        "offset" : 0x860000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x62000,
        "offset" : 0x800000,
        "page_size" : 0x200,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x200,
        "offset" : 0x8e0400,
        "page_size" : 0x200,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x8e5",
    "desc" : "ATxmega8E5",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x93, 0x41 ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x0200,
        "offset" : 0x08c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x2000,
        "offset" : 0x0800000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x800,
        "offset" : 0x00801800,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x800,
        "offset" : 0x00802000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x2800,
        "offset" : 0x0800000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x80,
        "offset" : 0x8e0400,
        "page_size" : 0x80,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x16e5",
    "desc" : "ATxmega16E5",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x94, 0x45 ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x0200,
        "offset" : 0x08c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x4000,
        "offset" : 0x0800000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x00803000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x00804000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x5000,
        "offset" : 0x0800000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x80,
        "offset" : 0x8e0400,
        "page_size" : 0x80,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "x32e5",
    "desc" : "ATxmega32E5",
    "has_pdi" : true,
    "nvm_base" : 0x01c0,
    "mcu_base" : 0x0090,
    "signature" : [ 0x1e, 0x95, 0x4c ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x1000090
      },
      "prodsig" : {
        "size" : 0x32,
        "offset" : 0x8e0200,
        "page_size" : 0x32,
        "readsize" : 0x32
      },
      "fuse1" : {
        "size" : 1,
        "offset" : 0x8f0021
      },
      "fuse2" : {
        "size" : 1,
        "offset" : 0x8f0022
      },
      "fuse4" : {
        "size" : 1,
        "offset" : 0x8f0024
      },
      "fuse5" : {
        "size" : 1,
        "offset" : 0x8f0025
      },
      "lock" : {
        "size" : 1,
        "offset" : 0x8f0027
      },
      "data" : {
        "offset" : 0x1000000
      },
      "eeprom" : {
        "size" : 0x0400,
        "offset" : 0x08c0000,
        "page_size" : 0x20,
        "readsize" : 0x100
      },
      "application" : {
        "size" : 0x8000,
        "offset" : 0x0800000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "apptable" : {
        "size" : 0x1000,
        "offset" : 0x00807000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "boot" : {
        "size" : 0x1000,
        "offset" : 0x00808000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "flash" : {
        "size" : 0x9000,
        "offset" : 0x0800000,
        "page_size" : 0x80,
        "readsize" : 0x100
      },
      "usersig" : {
        "size" : 0x80,
        "offset" : 0x8e0400,
        "page_size" : 0x80,
        "readsize" : 0x100
      }
    }
  }, {
    "id" : "uc3a0512",
    "desc" : "AT32UC3A0512",
    "signature" : [ 0xed, 0xc0, 0x3f ],
    "has_jtag" : true,
    "is_avr32" : true,
    "memories" : {
      "flash" : {
        "paged" : true,
        "page_size" : 512,
        "readsize" : 512,
        "num_pages" : 1024,
        "size" : 0x00080000,
        "offset" : 0x80000000
      }
    }
  }, {
    "id" : "ucr2",
    "desc" : "deprecated, use 'uc3a0512'",
    "signature" : [ 0xed, 0xc0, 0x3f ],
    "has_jtag" : true,
    "is_avr32" : true,
    "memories" : {
      "flash" : {
        "paged" : true,
        "page_size" : 512,
        "readsize" : 512,
        "num_pages" : 1024,
        "size" : 0x00080000,
        "offset" : 0x80000000
      }
    }
  }, {
    "id" : "t1634",
    "desc" : "ATtiny1634",
    "has_debugwire" : true,
    "flash_instr" : [ 0xb6, 0x01, 0x11 ],
    "eeprom_instr" : [ 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf ],
    "stk500_devcode" : 0x86,
    "signature" : [ 0x1e, 0x94, 0x12 ],
    "pagel" : 0xb3,
    "bs2" : 0xb1,
    "reset" : "io",
    "chip_erase_delay" : 9000,
    "pgm_enable" : [ "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x" ],
    "chip_erase" : [ "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x" ],
    "timeout" : 200,
    "stabdelay" : 100,
    "cmdexedelay" : 25,
    "synchloops" : 32,
    "bytedelay" : 0,
    "pollindex" : 3,
    "pollvalue" : 0x53,
    "predelay" : 1,
    "postdelay" : 1,
    "pollmethod" : 1,
    "pp_controlstack" : [ 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, 0x26, 0x36, 0x66, 0x76, 0x2a, 0x3a, 0x6a, 0x7a, 0x2e, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 ],
    "hventerstabdelay" : 100,
    "progmodedelay" : 0,
    "latchcycles" : 0,
    "togglevtg" : 1,
    "poweroffdelay" : 15,
    "resetdelayms" : 1,
    "resetdelayus" : 0,
    "hvleavestabdelay" : 15,
    "resetdelay" : 15,
    "chiperasepulsewidth" : 0,
    "chiperasepolltimeout" : 10,
    "programfusepulsewidth" : 0,
    "programfusepolltimeout" : 5,
    "programlockpulsewidth" : 0,
    "programlockpolltimeout" : 5,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "page_size" : 4,
        "size" : 256,
        "min_write_delay" : 3600,
        "max_write_delay" : 3600,
        "readback_p1" : 0xff,
        "readback_p2" : 0xff,
        "read" : [ " 1 0 1 0 0 0 0 0", " 0 0 0 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", " 0 0 0 x x x x 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   x  a8", " a7  a6  a5  a4     a3  a2   0   0", "  x   x   x   x      x   x   x   x" ],
        "mode" : 0x41,
        "delay" : 5,
        "blocksize" : 4,
        "readsize" : 256
      },
      "flash" : {
        "paged" : true,
        "size" : 16384,
        "page_size" : 32,
        "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", " 0 0 0 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 0 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 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 0 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 0 a12 a11 a10 a9 a8", " a7 a6 x x x x x x", " x x x x x x x x" ],
        "mode" : 0x41,
        "delay" : 6,
        "blocksize" : 128,
        "readsize" : 256
      },
      "lfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "hfuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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" ]
      },
      "efuse" : {
        "size" : 1,
        "min_write_delay" : 4500,
        "max_write_delay" : 4500,
        "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 x x x o o o o o" ],
        "write" : [ "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "x x x x x x x x x x x i i i i i" ]
      },
      "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 x x x x 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 1 1 1 1 i i" ]
      },
      "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" ]
      },
      "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" ]
      }
    }
  }, {
    "id" : ".reduced_core_tiny",
    "desc" : "Common values for reduced core tinys",
    "has_tpi" : true,
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x3fc0,
        "page_size" : 16
      },
      "fuse" : {
        "size" : 1,
        "offset" : 0x3f40,
        "page_size" : 16,
        "blocksize" : 4
      },
      "calibration" : {
        "size" : 1,
        "offset" : 0x3f80,
        "page_size" : 16
      },
      "lockbits" : {
        "size" : 1,
        "offset" : 0x3f00,
        "page_size" : 16
      }
    }
  }, {
    "id" : "t4",
    "desc" : "ATtiny4",
    "has_tpi" : true,
    "signature" : [ 0x1e, 0x8f, 0x0a ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x3fc0,
        "page_size" : 16
      },
      "fuse" : {
        "size" : 1,
        "offset" : 0x3f40,
        "page_size" : 16,
        "blocksize" : 4
      },
      "calibration" : {
        "size" : 1,
        "offset" : 0x3f80,
        "page_size" : 16
      },
      "lockbits" : {
        "size" : 1,
        "offset" : 0x3f00,
        "page_size" : 16
      },
      "flash" : {
        "size" : 512,
        "offset" : 0x4000,
        "page_size" : 16,
        "blocksize" : 128
      }
    }
  }, {
    "id" : "t5",
    "desc" : "ATtiny5",
    "has_tpi" : true,
    "signature" : [ 0x1e, 0x8f, 0x09 ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x3fc0,
        "page_size" : 16
      },
      "fuse" : {
        "size" : 1,
        "offset" : 0x3f40,
        "page_size" : 16,
        "blocksize" : 4
      },
      "calibration" : {
        "size" : 1,
        "offset" : 0x3f80,
        "page_size" : 16
      },
      "lockbits" : {
        "size" : 1,
        "offset" : 0x3f00,
        "page_size" : 16
      },
      "flash" : {
        "size" : 512,
        "offset" : 0x4000,
        "page_size" : 16,
        "blocksize" : 128
      }
    }
  }, {
    "id" : "t9",
    "desc" : "ATtiny9",
    "has_tpi" : true,
    "signature" : [ 0x1e, 0x90, 0x08 ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x3fc0,
        "page_size" : 16
      },
      "fuse" : {
        "size" : 1,
        "offset" : 0x3f40,
        "page_size" : 16,
        "blocksize" : 4
      },
      "calibration" : {
        "size" : 1,
        "offset" : 0x3f80,
        "page_size" : 16
      },
      "lockbits" : {
        "size" : 1,
        "offset" : 0x3f00,
        "page_size" : 16
      },
      "flash" : {
        "size" : 1024,
        "offset" : 0x4000,
        "page_size" : 16,
        "blocksize" : 128
      }
    }
  }, {
    "id" : "t10",
    "desc" : "ATtiny10",
    "has_tpi" : true,
    "signature" : [ 0x1e, 0x90, 0x03 ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x3fc0,
        "page_size" : 16
      },
      "fuse" : {
        "size" : 1,
        "offset" : 0x3f40,
        "page_size" : 16,
        "blocksize" : 4
      },
      "calibration" : {
        "size" : 1,
        "offset" : 0x3f80,
        "page_size" : 16
      },
      "lockbits" : {
        "size" : 1,
        "offset" : 0x3f00,
        "page_size" : 16
      },
      "flash" : {
        "size" : 1024,
        "offset" : 0x4000,
        "page_size" : 16,
        "blocksize" : 128
      }
    }
  }, {
    "id" : "t20",
    "desc" : "ATtiny20",
    "has_tpi" : true,
    "signature" : [ 0x1e, 0x91, 0x0f ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x3fc0,
        "page_size" : 16
      },
      "fuse" : {
        "size" : 1,
        "offset" : 0x3f40,
        "page_size" : 16,
        "blocksize" : 4
      },
      "calibration" : {
        "size" : 1,
        "offset" : 0x3f80,
        "page_size" : 16
      },
      "lockbits" : {
        "size" : 1,
        "offset" : 0x3f00,
        "page_size" : 16
      },
      "flash" : {
        "size" : 2048,
        "offset" : 0x4000,
        "page_size" : 16,
        "blocksize" : 128
      }
    }
  }, {
    "id" : "t40",
    "desc" : "ATtiny40",
    "has_tpi" : true,
    "signature" : [ 0x1e, 0x92, 0x0e ],
    "memories" : {
      "signature" : {
        "size" : 3,
        "offset" : 0x3fc0,
        "page_size" : 16
      },
      "fuse" : {
        "size" : 1,
        "offset" : 0x3f40,
        "page_size" : 16,
        "blocksize" : 4
      },
      "calibration" : {
        "size" : 1,
        "offset" : 0x3f80,
        "page_size" : 16
      },
      "lockbits" : {
        "size" : 1,
        "offset" : 0x3f00,
        "page_size" : 16
      },
      "flash" : {
        "size" : 4096,
        "offset" : 0x4000,
        "page_size" : 64,
        "blocksize" : 128
      }
    }
  }, {
    "id" : "m406",
    "desc" : "ATMEGA406",
    "has_jtag" : true,
    "signature" : [ 0x1e, 0x95, 0x07 ],
    "pagel" : 0xa7,
    "bs2" : 0xa0,
    "serial" : false,
    "parallel" : true,
    "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 ],
    "allowfullpagebitstream" : false,
    "enablepageprogramming" : true,
    "idr" : 0x51,
    "rampz" : 0x00,
    "spmcr" : 0x57,
    "eecr" : 0x3f,
    "memories" : {
      "eeprom" : {
        "paged" : false,
        "size" : 512,
        "page_size" : 4,
        "blocksize" : 4,
        "readsize" : 4,
        "num_pages" : 128
      },
      "flash" : {
        "paged" : true,
        "size" : 40960,
        "page_size" : 128,
        "blocksize" : 128,
        "readsize" : 128,
        "num_pages" : 320
      },
      "hfuse" : {
        "size" : 1
      },
      "lfuse" : {
        "size" : 1
      },
      "lockbits" : {
        "size" : 1
      },
      "signature" : {
        "size" : 3
      }
    }
  } ]
}

REST resources