PageRenderTime 152ms CodeModel.GetById 32ms RepoModel.GetById 1ms app.codeStats 0ms

/dist/tools-mac/avrdude.conf

http://github.com/makerbot/G3Firmware
Config | 11721 lines | 10075 code | 1646 blank | 0 comment | 0 complexity | 25c20925af5af4d9bc18a1ef0562e96e MD5 | raw file
Possible License(s): GPL-3.0, BSD-3-Clause
  1. # $Id: avrdude.conf.in,v 1.122 2007/05/16 21:29:36 joerg_wunsch Exp $
  2. #
  3. # AVRDUDE Configuration File
  4. #
  5. # This file contains configuration data used by AVRDUDE which describes
  6. # the programming hardware pinouts and also provides part definitions.
  7. # AVRDUDE's "-C" command line option specifies the location of the
  8. # configuration file. The "-c" option names the programmer configuration
  9. # which must match one of the entry's "id" parameter. The "-p" option
  10. # identifies which part AVRDUDE is going to be programming and must match
  11. # one of the parts' "id" parameter.
  12. #
  13. # Possible entry formats are:
  14. #
  15. # programmer
  16. # id = <id1> [, <id2> [, <id3>] ...] ; # <idN> are quoted strings
  17. # desc = <description> ; # quoted string
  18. # type = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic |
  19. # avr910 | butterfly | usbasp |
  20. # jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw |
  21. # dragon_dw | dragon_jtag | dragon_isp | dragon_pp |
  22. # dragon_hvsp; # programmer type
  23. # baudrate = <num> ; # baudrate for avr910-programmer
  24. # vcc = <num1> [, <num2> ... ] ; # pin number(s)
  25. # reset = <num> ; # pin number
  26. # sck = <num> ; # pin number
  27. # mosi = <num> ; # pin number
  28. # miso = <num> ; # pin number
  29. # errled = <num> ; # pin number
  30. # rdyled = <num> ; # pin number
  31. # pgmled = <num> ; # pin number
  32. # vfyled = <num> ; # pin number
  33. # ;
  34. #
  35. # part
  36. # id = <id> ; # quoted string
  37. # desc = <description> ; # quoted string
  38. # has_jtag = <yes/no> ; # part has JTAG i/f
  39. # has_debugwire = <yes/no> ; # part has debugWire i/f
  40. # devicecode = <num> ; # deprecated, use stk500_devcode
  41. # stk500_devcode = <num> ; # numeric
  42. # avr910_devcode = <num> ; # numeric
  43. # signature = <num> <num> <num> ; # signature bytes
  44. # chip_erase_delay = <num> ; # micro-seconds
  45. # reset = dedicated | io;
  46. # retry_pulse = reset | sck;
  47. # pgm_enable = <instruction format> ;
  48. # chip_erase = <instruction format> ;
  49. # chip_erase_delay = <num> ; # chip erase delay (us)
  50. # # STK500 parameters (parallel programming IO lines)
  51. # pagel = <num> ; # pin name in hex, i.e., 0xD7
  52. # bs2 = <num> ; # pin name in hex, i.e., 0xA0
  53. # serial = <yes/no> ; # can use serial downloading
  54. # parallel = <yes/no/pseudo>; # can use par. programming
  55. # # STK500v2 parameters, to be taken from Atmel's XML files
  56. # timeout = <num> ;
  57. # stabdelay = <num> ;
  58. # cmdexedelay = <num> ;
  59. # synchloops = <num> ;
  60. # bytedelay = <num> ;
  61. # pollvalue = <num> ;
  62. # pollindex = <num> ;
  63. # predelay = <num> ;
  64. # postdelay = <num> ;
  65. # pollmethod = <num> ;
  66. # mode = <num> ;
  67. # delay = <num> ;
  68. # blocksize = <num> ;
  69. # readsize = <num> ;
  70. # hvspcmdexedelay = <num> ;
  71. # # STK500v2 HV programming parameters, from XML
  72. # pp_controlstack = <num>, <num>, ...; # PP only
  73. # hvsp_controlstack = <num>, <num>, ...; # HVSP only
  74. # hventerstabdelay = <num>;
  75. # progmodedelay = <num>; # PP only
  76. # latchcycles = <num>;
  77. # togglevtg = <num>;
  78. # poweroffdelay = <num>;
  79. # resetdelayms = <num>;
  80. # resetdelayus = <num>;
  81. # hvleavestabdelay = <num>;
  82. # resetdelay = <num>;
  83. # synchcycles = <num>; # HVSP only
  84. # chiperasepulsewidth = <num>; # PP only
  85. # chiperasepolltimeout = <num>;
  86. # chiperasetime = <num>; # HVSP only
  87. # programfusepulsewidth = <num>; # PP only
  88. # programfusepolltimeout = <num>;
  89. # programlockpulsewidth = <num>; # PP only
  90. # programlockpolltimeout = <num>;
  91. # # JTAG ICE mkII parameters, also from XML files
  92. # allowfullpagebitstream = <yes/no> ;
  93. # enablepageprogramming = <yes/no> ;
  94. # idr = <num> ; # IO addr of IDR (OCD) reg.
  95. # rampz = <num> ; # IO addr of RAMPZ reg.
  96. # spmcr = <num> ; # mem addr of SPMC[S]R reg.
  97. # eecr = <num> ; # mem addr of EECR reg.
  98. # # (only when != 0x3c)
  99. #
  100. # memory <memtype>
  101. # paged = <yes/no> ; # yes / no
  102. # size = <num> ; # bytes
  103. # page_size = <num> ; # bytes
  104. # num_pages = <num> ; # numeric
  105. # min_write_delay = <num> ; # micro-seconds
  106. # max_write_delay = <num> ; # micro-seconds
  107. # readback_p1 = <num> ; # byte value
  108. # readback_p2 = <num> ; # byte value
  109. # pwroff_after_write = <yes/no> ; # yes / no
  110. # read = <instruction format> ;
  111. # write = <instruction format> ;
  112. # read_lo = <instruction format> ;
  113. # read_hi = <instruction format> ;
  114. # write_lo = <instruction format> ;
  115. # write_hi = <instruction format> ;
  116. # loadpage_lo = <instruction format> ;
  117. # loadpage_hi = <instruction format> ;
  118. # writepage = <instruction format> ;
  119. # ;
  120. # ;
  121. #
  122. # If any of the above parameters are not specified, the default value
  123. # of 0 is used for numerics or the empty string ("") for string
  124. # values. If a required parameter is left empty, AVRDUDE will
  125. # complain.
  126. #
  127. # NOTES:
  128. # * 'devicecode' is the device code used by the STK500 (see codes
  129. # listed below)
  130. # * Not all memory types will implement all instructions.
  131. # * AVR Fuse bits and Lock bits are implemented as a type of memory.
  132. # * Example memory types are:
  133. # "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high
  134. # fuse), "signature", "calibration", "lock"
  135. # * The memory type specified on the avrdude command line must match
  136. # one of the memory types defined for the specified chip.
  137. # * The pwroff_after_write flag causes avrdude to attempt to
  138. # power the device off and back on after an unsuccessful write to
  139. # the affected memory area if VCC programmer pins are defined. If
  140. # VCC pins are not defined for the programmer, a message
  141. # indicating that the device needs a power-cycle is printed out.
  142. # This flag was added to work around a problem with the
  143. # at90s4433/2333's; see the at90s4433 errata at:
  144. #
  145. # http://www.atmel.com/atmel/acrobat/doc1280.pdf
  146. #
  147. # INSTRUCTION FORMATS
  148. #
  149. # Instruction formats are specified as a comma seperated list of
  150. # string values containing information (bit specifiers) about each
  151. # of the 32 bits of the instruction. Bit specifiers may be one of
  152. # the following formats:
  153. #
  154. # '1' = the bit is always set on input as well as output
  155. #
  156. # '0' = the bit is always clear on input as well as output
  157. #
  158. # 'x' = the bit is ignored on input and output
  159. #
  160. # 'a' = the bit is an address bit, the bit-number matches this bit
  161. # specifier's position within the current instruction byte
  162. #
  163. # 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12
  164. # is address bit 12 on input, a0 is address bit 0.
  165. #
  166. # 'i' = the bit is an input data bit
  167. #
  168. # 'o' = the bit is an output data bit
  169. #
  170. # Each instruction must be composed of 32 bit specifiers. The
  171. # instruction specification closely follows the instruction data
  172. # provided in Atmel's data sheets for their parts.
  173. #
  174. # See below for some examples.
  175. #
  176. #
  177. # The following are STK500 part device codes to use for the
  178. # "devicecode" field of the part. These came from Atmel's software
  179. # section avr061.zip which accompanies the application note
  180. # AVR061 available from:
  181. #
  182. # http://www.atmel.com/atmel/acrobat/doc2525.pdf
  183. #
  184. #define ATTINY10 0x10
  185. #define ATTINY11 0x11
  186. #define ATTINY12 0x12
  187. #define ATTINY15 0x13
  188. #define ATTINY13 0x14
  189. #define ATTINY22 0x20
  190. #define ATTINY26 0x21
  191. #define ATTINY28 0x22
  192. #define ATTINY2313 0x23
  193. #define AT90S1200 0x33
  194. #define AT90S2313 0x40
  195. #define AT90S2323 0x41
  196. #define AT90S2333 0x42
  197. #define AT90S2343 0x43
  198. #define AT90S4414 0x50
  199. #define AT90S4433 0x51
  200. #define AT90S4434 0x52
  201. #define ATMEGA48 0x59
  202. #define AT90S8515 0x60
  203. #define AT90S8535 0x61
  204. #define AT90C8534 0x62
  205. #define ATMEGA8515 0x63
  206. #define ATMEGA8535 0x64
  207. #define ATMEGA8 0x70
  208. #define ATMEGA88 0x73
  209. #define ATMEGA168 0x86
  210. #define ATMEGA161 0x80
  211. #define ATMEGA163 0x81
  212. #define ATMEGA16 0x82
  213. #define ATMEGA162 0x83
  214. #define ATMEGA169 0x84
  215. #define ATMEGA323 0x90
  216. #define ATMEGA32 0x91
  217. #define ATMEGA64 0xA0
  218. #define ATMEGA103 0xB1
  219. #define ATMEGA128 0xB2
  220. #define AT90CAN128 0xB3
  221. #define AT86RF401 0xD0
  222. #define AT89START 0xE0
  223. #define AT89S51 0xE0
  224. #define AT89S52 0xE1
  225. # The following table lists the devices in the original AVR910
  226. # appnote:
  227. # |Device |Signature | Code |
  228. # +-------+----------+------+
  229. # |tiny12 | 1E 90 05 | 0x55 |
  230. # |tiny15 | 1E 90 06 | 0x56 |
  231. # | | | |
  232. # | S1200 | 1E 90 01 | 0x13 |
  233. # | | | |
  234. # | S2313 | 1E 91 01 | 0x20 |
  235. # | S2323 | 1E 91 02 | 0x48 |
  236. # | S2333 | 1E 91 05 | 0x34 |
  237. # | S2343 | 1E 91 03 | 0x4C |
  238. # | | | |
  239. # | S4414 | 1E 92 01 | 0x28 |
  240. # | S4433 | 1E 92 03 | 0x30 |
  241. # | S4434 | 1E 92 02 | 0x6C |
  242. # | | | |
  243. # | S8515 | 1E 93 01 | 0x38 |
  244. # | S8535 | 1E 93 03 | 0x68 |
  245. # | | | |
  246. # |mega32 | 1E 95 01 | 0x72 |
  247. # |mega83 | 1E 93 05 | 0x65 |
  248. # |mega103| 1E 97 01 | 0x41 |
  249. # |mega161| 1E 94 01 | 0x60 |
  250. # |mega163| 1E 94 02 | 0x64 |
  251. # Appnote AVR109 also has a table of AVR910 device codes, which
  252. # lists:
  253. # dev avr910 signature
  254. # ATmega8 0x77 0x1E 0x93 0x07
  255. # ATmega8515 0x3B 0x1E 0x93 0x06
  256. # ATmega8535 0x6A 0x1E 0x93 0x08
  257. # ATmega16 0x75 0x1E 0x94 0x03
  258. # ATmega162 0x63 0x1E 0x94 0x04
  259. # ATmega163 0x66 0x1E 0x94 0x02
  260. # ATmega169 0x79 0x1E 0x94 0x05
  261. # ATmega32 0x7F 0x1E 0x95 0x02
  262. # ATmega323 0x73 0x1E 0x95 0x01
  263. # ATmega64 0x46 0x1E 0x96 0x02
  264. # ATmega128 0x44 0x1E 0x97 0x02
  265. #
  266. # These codes refer to "BOOT" device codes which are apparently
  267. # different than standard device codes, for whatever reasons
  268. # (often one above the standard code).
  269. # There are several extended versions of AVR910 implementations around
  270. # in the Internet. These add the following codes (only devices that
  271. # actually exist are listed):
  272. # ATmega8515 0x3A
  273. # ATmega128 0x43
  274. # ATmega64 0x45
  275. # ATtiny26 0x5E
  276. # ATmega8535 0x69
  277. # ATmega32 0x72
  278. # ATmega16 0x74
  279. # ATmega8 0x76
  280. # ATmega169 0x78
  281. #
  282. # Overall avrdude defaults
  283. #
  284. default_parallel = "unknown";
  285. default_serial = "unknown";
  286. #
  287. # PROGRAMMER DEFINITIONS
  288. #
  289. programmer
  290. id = "avrisp";
  291. desc = "Atmel AVR ISP";
  292. type = stk500;
  293. ;
  294. programmer
  295. id = "avrispv2";
  296. desc = "Atmel AVR ISP V2";
  297. type = stk500v2;
  298. ;
  299. programmer
  300. id = "avrispmkII";
  301. desc = "Atmel AVR ISP mkII";
  302. type = stk500v2;
  303. ;
  304. programmer
  305. id = "avrisp2";
  306. desc = "Atmel AVR ISP mkII";
  307. type = stk500v2;
  308. ;
  309. # This is supposed to be the "default" STK500 entry.
  310. # Attempts to select the correct firmware version
  311. # by probing for it. Better use one of the entries
  312. # below instead.
  313. programmer
  314. id = "stk500";
  315. desc = "Atmel STK500";
  316. type = stk500generic;
  317. ;
  318. programmer
  319. id = "stk500v1";
  320. desc = "Atmel STK500 Version 1.x firmware";
  321. type = stk500;
  322. ;
  323. programmer
  324. id = "stk500v2";
  325. desc = "Atmel STK500 Version 2.x firmware";
  326. type = stk500v2;
  327. ;
  328. programmer
  329. id = "stk500pp";
  330. desc = "Atmel STK500 V2 in parallel programming mode";
  331. type = stk500pp;
  332. ;
  333. programmer
  334. id = "stk500hvsp";
  335. desc = "Atmel STK500 V2 in high-voltage serial programming mode";
  336. type = stk500hvsp;
  337. ;
  338. programmer
  339. id = "avr910";
  340. desc = "Atmel Low Cost Serial Programmer";
  341. type = avr910;
  342. ;
  343. programmer
  344. id = "usbasp";
  345. desc = "USBasp, http://www.fischl.de/usbasp/";
  346. type = usbasp;
  347. ;
  348. programmer
  349. id = "usbtiny";
  350. desc = "USBtiny simple USB programmer";
  351. type = usbtiny;
  352. ;
  353. programmer
  354. id = "butterfly";
  355. desc = "Atmel Butterfly Development Board";
  356. type = butterfly;
  357. ;
  358. programmer
  359. id = "avr109";
  360. desc = "Atmel AppNote AVR109 Boot Loader";
  361. type = butterfly;
  362. ;
  363. programmer
  364. id = "avr911";
  365. desc = "Atmel AppNote AVR911 AVROSP";
  366. type = butterfly;
  367. ;
  368. programmer
  369. id = "jtagmkI";
  370. desc = "Atmel JTAG ICE (mkI)";
  371. baudrate = 115200; # default is 115200
  372. type = jtagmki;
  373. ;
  374. # easier to type
  375. programmer
  376. id = "jtag1";
  377. desc = "Atmel JTAG ICE (mkI)";
  378. baudrate = 115200; # default is 115200
  379. type = jtagmki;
  380. ;
  381. # easier to type
  382. programmer
  383. id = "jtag1slow";
  384. desc = "Atmel JTAG ICE (mkI)";
  385. baudrate = 19200;
  386. type = jtagmki;
  387. ;
  388. programmer
  389. id = "jtagmkII";
  390. desc = "Atmel JTAG ICE mkII";
  391. baudrate = 19200; # default is 19200
  392. type = jtagmkii;
  393. ;
  394. # easier to type
  395. programmer
  396. id = "jtag2slow";
  397. desc = "Atmel JTAG ICE mkII";
  398. baudrate = 19200; # default is 19200
  399. type = jtagmkii;
  400. ;
  401. # JTAG ICE mkII @ 115200 Bd
  402. programmer
  403. id = "jtag2fast";
  404. desc = "Atmel JTAG ICE mkII";
  405. baudrate = 115200;
  406. type = jtagmkii;
  407. ;
  408. # make the fast one the default, people will love that
  409. programmer
  410. id = "jtag2";
  411. desc = "Atmel JTAG ICE mkII";
  412. baudrate = 115200;
  413. type = jtagmkii;
  414. ;
  415. # JTAG ICE mkII in ISP mode
  416. programmer
  417. id = "jtag2isp";
  418. desc = "Atmel JTAG ICE mkII in ISP mode";
  419. baudrate = 115200;
  420. type = jtagmkii_isp;
  421. ;
  422. # JTAG ICE mkII in debugWire mode
  423. programmer
  424. id = "jtag2dw";
  425. desc = "Atmel JTAG ICE mkII in debugWire mode";
  426. baudrate = 115200;
  427. type = jtagmkii_dw;
  428. ;
  429. # AVR Dragon in JTAG mode
  430. programmer
  431. id = "dragon_jtag";
  432. desc = "Atmel AVR Dragon in JTAG mode";
  433. baudrate = 115200;
  434. type = dragon_jtag;
  435. ;
  436. # AVR Dragon in ISP mode
  437. programmer
  438. id = "dragon_isp";
  439. desc = "Atmel AVR Dragon in ISP mode";
  440. baudrate = 115200;
  441. type = dragon_isp;
  442. ;
  443. # AVR Dragon in PP mode
  444. programmer
  445. id = "dragon_pp";
  446. desc = "Atmel AVR Dragon in PP mode";
  447. baudrate = 115200;
  448. type = dragon_pp;
  449. ;
  450. # AVR Dragon in HVSP mode
  451. programmer
  452. id = "dragon_hvsp";
  453. desc = "Atmel AVR Dragon in HVSP mode";
  454. baudrate = 115200;
  455. type = dragon_hvsp;
  456. ;
  457. # AVR Dragon in debugWire mode
  458. programmer
  459. id = "dragon_dw";
  460. desc = "Atmel AVR Dragon in debugWire mode";
  461. baudrate = 115200;
  462. type = dragon_dw;
  463. ;
  464. programmer
  465. id = "pavr";
  466. desc = "Jason Kyle's pAVR Serial Programmer";
  467. type = avr910;
  468. ;
  469. #
  470. # some ultra cheap programmers use bitbanging on the
  471. # serialport.
  472. #
  473. # PC - DB9 - Pins for RS232:
  474. #
  475. # GND 5 -- |O
  476. # | O| <- 9 RI
  477. # DTR 4 <- |O |
  478. # | O| <- 8 CTS
  479. # TXD 3 <- |O |
  480. # | O| -> 7 RTS
  481. # RXD 2 -> |O |
  482. # | O| <- 6 DSR
  483. # DCD 1 -> |O
  484. #
  485. # Using RXD is currently not supported.
  486. # Using RI is not supported under Win32 but is supported under Posix.
  487. # serial ponyprog design (dasa2 in uisp)
  488. # reset=!txd sck=rts mosi=dtr miso=cts
  489. programmer
  490. id = "ponyser";
  491. desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts";
  492. type = serbb;
  493. reset = ~3;
  494. sck = 7;
  495. mosi = 4;
  496. miso = 8;
  497. ;
  498. # Same as above, different name
  499. # reset=!txd sck=rts mosi=dtr miso=cts
  500. programmer
  501. id = "siprog";
  502. desc = "Lancos SI-Prog <http://www.lancos.com/siprogsch.html>";
  503. type = serbb;
  504. reset = ~3;
  505. sck = 7;
  506. mosi = 4;
  507. miso = 8;
  508. ;
  509. # unknown (dasa in uisp)
  510. # reset=rts sck=dtr mosi=txd miso=cts
  511. programmer
  512. id = "dasa";
  513. desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts";
  514. type = serbb;
  515. reset = 7;
  516. sck = 4;
  517. mosi = 3;
  518. miso = 8;
  519. ;
  520. # unknown (dasa3 in uisp)
  521. # reset=!dtr sck=rts mosi=txd miso=cts
  522. programmer
  523. id = "dasa3";
  524. desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts";
  525. type = serbb;
  526. reset = ~4;
  527. sck = 7;
  528. mosi = 3;
  529. miso = 8;
  530. ;
  531. #
  532. # PART DEFINITIONS
  533. #
  534. #------------------------------------------------------------
  535. # ATtiny11
  536. #------------------------------------------------------------
  537. # This is an HVSP-only device.
  538. part
  539. id = "t11";
  540. desc = "ATtiny11";
  541. stk500_devcode = 0x11;
  542. signature = 0x1e 0x90 0x04;
  543. chip_erase_delay = 20000;
  544. timeout = 200;
  545. hvsp_controlstack =
  546. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
  547. 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
  548. 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  549. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
  550. hventerstabdelay = 100;
  551. progmodedelay = 0;
  552. hvspcmdexedelay = 0;
  553. synchcycles = 6;
  554. latchcycles = 1;
  555. togglevtg = 1;
  556. poweroffdelay = 25;
  557. resetdelayms = 0;
  558. resetdelayus = 50;
  559. hvleavestabdelay = 100;
  560. resetdelay = 25;
  561. chiperasepolltimeout = 40;
  562. chiperasetime = 0;
  563. programfusepolltimeout = 25;
  564. programlockpolltimeout = 25;
  565. memory "eeprom"
  566. size = 64;
  567. blocksize = 64;
  568. readsize = 256;
  569. delay = 5;
  570. ;
  571. memory "flash"
  572. size = 1024;
  573. blocksize = 128;
  574. readsize = 256;
  575. delay = 3;
  576. ;
  577. memory "signature"
  578. size = 3;
  579. ;
  580. memory "lock"
  581. size = 1;
  582. ;
  583. memory "calibration"
  584. size = 1;
  585. ;
  586. memory "fuse"
  587. size = 1;
  588. ;
  589. ;
  590. #------------------------------------------------------------
  591. # ATtiny12
  592. #------------------------------------------------------------
  593. part
  594. id = "t12";
  595. desc = "ATtiny12";
  596. stk500_devcode = 0x12;
  597. avr910_devcode = 0x55;
  598. signature = 0x1e 0x90 0x05;
  599. chip_erase_delay = 20000;
  600. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  601. "x x x x x x x x x x x x x x x x";
  602. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  603. "x x x x x x x x x x x x x x x x";
  604. timeout = 200;
  605. stabdelay = 100;
  606. cmdexedelay = 25;
  607. synchloops = 32;
  608. bytedelay = 0;
  609. pollindex = 3;
  610. pollvalue = 0x53;
  611. predelay = 1;
  612. postdelay = 1;
  613. pollmethod = 0;
  614. hvsp_controlstack =
  615. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
  616. 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
  617. 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  618. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
  619. hventerstabdelay = 100;
  620. hvspcmdexedelay = 0;
  621. synchcycles = 6;
  622. latchcycles = 1;
  623. togglevtg = 1;
  624. poweroffdelay = 25;
  625. resetdelayms = 0;
  626. resetdelayus = 50;
  627. hvleavestabdelay = 100;
  628. resetdelay = 25;
  629. chiperasepolltimeout = 40;
  630. chiperasetime = 0;
  631. programfusepolltimeout = 25;
  632. programlockpolltimeout = 25;
  633. memory "eeprom"
  634. size = 64;
  635. min_write_delay = 9000;
  636. max_write_delay = 20000;
  637. readback_p1 = 0xff;
  638. readback_p2 = 0xff;
  639. read = "1 0 1 0 0 0 0 0 x x x x x x x x",
  640. "x x a5 a4 a3 a2 a1 a0 o o o o o o o o";
  641. write = "1 1 0 0 0 0 0 0 x x x x x x x x",
  642. "x x a5 a4 a3 a2 a1 a0 i i i i i i i i";
  643. mode = 0x04;
  644. delay = 8;
  645. blocksize = 64;
  646. readsize = 256;
  647. ;
  648. memory "flash"
  649. size = 1024;
  650. min_write_delay = 4500;
  651. max_write_delay = 20000;
  652. readback_p1 = 0xff;
  653. readback_p2 = 0xff;
  654. read_lo = " 0 0 1 0 0 0 0 0",
  655. " x x x x x x x a8",
  656. " a7 a6 a5 a4 a3 a2 a1 a0",
  657. " o o o o o o o o";
  658. read_hi = " 0 0 1 0 1 0 0 0",
  659. " x x x x x x x a8",
  660. " a7 a6 a5 a4 a3 a2 a1 a0",
  661. " o o o o o o o o";
  662. write_lo = " 0 1 0 0 0 0 0 0",
  663. " x x x x x x x a8",
  664. " a7 a6 a5 a4 a3 a2 a1 a0",
  665. " i i i i i i i i";
  666. write_hi = " 0 1 0 0 1 0 0 0",
  667. " x x x x x x x a8",
  668. " a7 a6 a5 a4 a3 a2 a1 a0",
  669. " i i i i i i i i";
  670. mode = 0x04;
  671. delay = 5;
  672. blocksize = 128;
  673. readsize = 256;
  674. ;
  675. memory "signature"
  676. size = 3;
  677. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  678. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  679. ;
  680. memory "lock"
  681. size = 1;
  682. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  683. "x x x x x x x x x x x x x o o x";
  684. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  685. "x x x x x x x x x x x x x x x x";
  686. min_write_delay = 9000;
  687. max_write_delay = 9000;
  688. ;
  689. memory "calibration"
  690. size = 1;
  691. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  692. "0 0 0 0 0 0 0 0 o o o o o o o o";
  693. ;
  694. memory "fuse"
  695. size = 1;
  696. read = "0 1 0 1 0 0 0 0 x x x x x x x x",
  697. "x x x x x x x x o o o o o o o o";
  698. write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x",
  699. "x x x x x x x x i i i i i i i i";
  700. min_write_delay = 9000;
  701. max_write_delay = 9000;
  702. ;
  703. ;
  704. #------------------------------------------------------------
  705. # ATtiny13
  706. #------------------------------------------------------------
  707. part
  708. id = "t13";
  709. desc = "ATtiny13";
  710. has_debugwire = yes;
  711. flash_instr = 0xB4, 0x0E, 0x1E;
  712. eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  713. 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC,
  714. 0x99, 0xE1, 0xBB, 0xAC;
  715. stk500_devcode = 0x14;
  716. signature = 0x1e 0x90 0x07;
  717. chip_erase_delay = 4000;
  718. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  719. "x x x x x x x x x x x x x x x x";
  720. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  721. "x x x x x x x x x x x x x x x x";
  722. timeout = 200;
  723. stabdelay = 100;
  724. cmdexedelay = 25;
  725. synchloops = 32;
  726. bytedelay = 0;
  727. pollindex = 3;
  728. pollvalue = 0x53;
  729. predelay = 1;
  730. postdelay = 1;
  731. pollmethod = 1;
  732. hvsp_controlstack =
  733. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
  734. 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
  735. 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  736. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
  737. hventerstabdelay = 100;
  738. progmodedelay = 0;
  739. hvspcmdexedelay = 0;
  740. synchcycles = 6;
  741. latchcycles = 1;
  742. togglevtg = 1;
  743. poweroffdelay = 25;
  744. resetdelayms = 0;
  745. resetdelayus = 90;
  746. hvleavestabdelay = 100;
  747. resetdelay = 25;
  748. chiperasepolltimeout = 40;
  749. chiperasetime = 0;
  750. programfusepolltimeout = 25;
  751. programlockpolltimeout = 25;
  752. memory "eeprom"
  753. size = 64;
  754. page_size = 4;
  755. min_write_delay = 4000;
  756. max_write_delay = 4000;
  757. readback_p1 = 0xff;
  758. readback_p2 = 0xff;
  759. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x",
  760. "x x a5 a4 a3 a2 a1 a0 o o o o o o o o";
  761. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x",
  762. "x x a5 a4 a3 a2 a1 a0 i i i i i i i i";
  763. loadpage_lo = " 1 1 0 0 0 0 0 1",
  764. " 0 0 0 0 0 0 0 0",
  765. " 0 0 0 0 0 0 a1 a0",
  766. " i i i i i i i i";
  767. writepage = " 1 1 0 0 0 0 1 0",
  768. " 0 0 x x x x x x",
  769. " x x a5 a4 a3 a2 0 0",
  770. " x x x x x x x x";
  771. mode = 0x41;
  772. delay = 5;
  773. blocksize = 4;
  774. readsize = 256;
  775. ;
  776. memory "flash"
  777. paged = yes;
  778. size = 1024;
  779. page_size = 32;
  780. num_pages = 32;
  781. min_write_delay = 4500;
  782. max_write_delay = 4500;
  783. readback_p1 = 0xff;
  784. readback_p2 = 0xff;
  785. read_lo = " 0 0 1 0 0 0 0 0",
  786. " 0 0 0 0 0 0 0 a8",
  787. " a7 a6 a5 a4 a3 a2 a1 a0",
  788. " o o o o o o o o";
  789. read_hi = " 0 0 1 0 1 0 0 0",
  790. " 0 0 0 0 0 0 0 a8",
  791. " a7 a6 a5 a4 a3 a2 a1 a0",
  792. " o o o o o o o o";
  793. loadpage_lo = " 0 1 0 0 0 0 0 0",
  794. " 0 0 0 x x x x x",
  795. " x x x x a3 a2 a1 a0",
  796. " i i i i i i i i";
  797. loadpage_hi = " 0 1 0 0 1 0 0 0",
  798. " 0 0 0 x x x x x",
  799. " x x x x a3 a2 a1 a0",
  800. " i i i i i i i i";
  801. writepage = " 0 1 0 0 1 1 0 0",
  802. " 0 0 0 0 0 0 0 a8",
  803. " a7 a6 a5 a4 x x x x",
  804. " x x x x x x x x";
  805. mode = 0x41;
  806. delay = 6;
  807. blocksize = 32;
  808. readsize = 256;
  809. ;
  810. memory "signature"
  811. size = 3;
  812. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  813. "x x x x x x a1 a0 o o o o o o o o";
  814. ;
  815. memory "lock"
  816. size = 1;
  817. min_write_delay = 4500;
  818. max_write_delay = 4500;
  819. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  820. "x x x x x x x x x x o o o o o o";
  821. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  822. "x x x x x x x x 1 1 i i i i i i";
  823. ;
  824. memory "calibration"
  825. size = 2;
  826. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  827. "0 0 0 0 0 0 0 a0 o o o o o o o o";
  828. ;
  829. memory "lfuse"
  830. size = 1;
  831. min_write_delay = 4500;
  832. max_write_delay = 4500;
  833. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  834. "x x x x x x x x i i i i i i i i";
  835. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  836. "x x x x x x x x o o o o o o o o";
  837. ;
  838. memory "hfuse"
  839. size = 1;
  840. min_write_delay = 4500;
  841. max_write_delay = 4500;
  842. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  843. "x x x x x x x x i i i i i i i i";
  844. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  845. "x x x x x x x x o o o o o o o o";
  846. ;
  847. ;
  848. #------------------------------------------------------------
  849. # ATtiny15
  850. #------------------------------------------------------------
  851. part
  852. id = "t15";
  853. desc = "ATtiny15";
  854. stk500_devcode = 0x13;
  855. avr910_devcode = 0x56;
  856. signature = 0x1e 0x90 0x06;
  857. chip_erase_delay = 8200;
  858. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  859. "x x x x x x x x x x x x x x x x";
  860. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  861. "x x x x x x x x x x x x x x x x";
  862. timeout = 200;
  863. stabdelay = 100;
  864. cmdexedelay = 25;
  865. synchloops = 32;
  866. bytedelay = 0;
  867. pollindex = 3;
  868. pollvalue = 0x53;
  869. predelay = 1;
  870. postdelay = 1;
  871. pollmethod = 0;
  872. hvsp_controlstack =
  873. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
  874. 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
  875. 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  876. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
  877. hventerstabdelay = 100;
  878. hvspcmdexedelay = 5;
  879. synchcycles = 6;
  880. latchcycles = 16;
  881. togglevtg = 1;
  882. poweroffdelay = 25;
  883. resetdelayms = 0;
  884. resetdelayus = 50;
  885. hvleavestabdelay = 100;
  886. resetdelay = 25;
  887. chiperasepolltimeout = 40;
  888. chiperasetime = 0;
  889. programfusepolltimeout = 25;
  890. programlockpolltimeout = 25;
  891. memory "eeprom"
  892. size = 64;
  893. min_write_delay = 8200;
  894. max_write_delay = 8200;
  895. readback_p1 = 0xff;
  896. readback_p2 = 0xff;
  897. read = "1 0 1 0 0 0 0 0 x x x x x x x x",
  898. "x x a5 a4 a3 a2 a1 a0 o o o o o o o o";
  899. write = "1 1 0 0 0 0 0 0 x x x x x x x x",
  900. "x x a5 a4 a3 a2 a1 a0 i i i i i i i i";
  901. mode = 0x04;
  902. delay = 10;
  903. blocksize = 64;
  904. readsize = 256;
  905. ;
  906. memory "flash"
  907. size = 1024;
  908. min_write_delay = 4100;
  909. max_write_delay = 4100;
  910. readback_p1 = 0xff;
  911. readback_p2 = 0xff;
  912. read_lo = " 0 0 1 0 0 0 0 0",
  913. " x x x x x x x a8",
  914. " a7 a6 a5 a4 a3 a2 a1 a0",
  915. " o o o o o o o o";
  916. read_hi = " 0 0 1 0 1 0 0 0",
  917. " x x x x x x x a8",
  918. " a7 a6 a5 a4 a3 a2 a1 a0",
  919. " o o o o o o o o";
  920. write_lo = " 0 1 0 0 0 0 0 0",
  921. " x x x x x x x a8",
  922. " a7 a6 a5 a4 a3 a2 a1 a0",
  923. " i i i i i i i i";
  924. write_hi = " 0 1 0 0 1 0 0 0",
  925. " x x x x x x x a8",
  926. " a7 a6 a5 a4 a3 a2 a1 a0",
  927. " i i i i i i i i";
  928. mode = 0x04;
  929. delay = 5;
  930. blocksize = 128;
  931. readsize = 256;
  932. ;
  933. memory "signature"
  934. size = 3;
  935. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  936. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  937. ;
  938. memory "lock"
  939. size = 1;
  940. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  941. "x x x x x x x x x x x x x o o x";
  942. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  943. "x x x x x x x x x x x x x x x x";
  944. min_write_delay = 9000;
  945. max_write_delay = 9000;
  946. ;
  947. memory "calibration"
  948. size = 1;
  949. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  950. "0 0 0 0 0 0 0 0 o o o o o o o o";
  951. ;
  952. memory "fuse"
  953. size = 1;
  954. read = "0 1 0 1 0 0 0 0 x x x x x x x x",
  955. "x x x x x x x x o o o o x x o o";
  956. write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x",
  957. "x x x x x x x x i i i i 1 1 i i";
  958. min_write_delay = 9000;
  959. max_write_delay = 9000;
  960. ;
  961. ;
  962. #------------------------------------------------------------
  963. # AT90s1200
  964. #------------------------------------------------------------
  965. part
  966. id = "1200";
  967. desc = "AT90S1200";
  968. stk500_devcode = 0x33;
  969. avr910_devcode = 0x13;
  970. signature = 0x1e 0x90 0x01;
  971. pagel = 0xd7;
  972. bs2 = 0xa0;
  973. chip_erase_delay = 20000;
  974. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  975. "x x x x x x x x x x x x x x x x";
  976. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  977. "x x x x x x x x x x x x x x x x";
  978. timeout = 200;
  979. stabdelay = 100;
  980. cmdexedelay = 25;
  981. synchloops = 1;
  982. bytedelay = 0;
  983. pollindex = 0;
  984. pollvalue = 0xFF;
  985. predelay = 1;
  986. postdelay = 1;
  987. pollmethod = 0;
  988. pp_controlstack =
  989. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  990. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  991. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  992. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  993. hventerstabdelay = 100;
  994. progmodedelay = 0;
  995. latchcycles = 0;
  996. togglevtg = 0;
  997. poweroffdelay = 0;
  998. resetdelayms = 0;
  999. resetdelayus = 0;
  1000. hvleavestabdelay = 15;
  1001. chiperasepulsewidth = 15;
  1002. chiperasepolltimeout = 0;
  1003. programfusepulsewidth = 2;
  1004. programfusepolltimeout = 0;
  1005. programlockpulsewidth = 0;
  1006. programlockpolltimeout = 1;
  1007. memory "eeprom"
  1008. size = 64;
  1009. min_write_delay = 4000;
  1010. max_write_delay = 9000;
  1011. readback_p1 = 0x00;
  1012. readback_p2 = 0xff;
  1013. read = "1 0 1 0 0 0 0 0 x x x x x x x x",
  1014. "x x a5 a4 a3 a2 a1 a0 o o o o o o o o";
  1015. write = "1 1 0 0 0 0 0 0 x x x x x x x x",
  1016. "x x a5 a4 a3 a2 a1 a0 i i i i i i i i";
  1017. mode = 0x04;
  1018. delay = 20;
  1019. blocksize = 32;
  1020. readsize = 256;
  1021. ;
  1022. memory "flash"
  1023. size = 1024;
  1024. min_write_delay = 4000;
  1025. max_write_delay = 9000;
  1026. readback_p1 = 0xff;
  1027. readback_p2 = 0xff;
  1028. read_lo = " 0 0 1 0 0 0 0 0",
  1029. " x x x x x x x a8",
  1030. " a7 a6 a5 a4 a3 a2 a1 a0",
  1031. " o o o o o o o o";
  1032. read_hi = " 0 0 1 0 1 0 0 0",
  1033. " x x x x x x x a8",
  1034. " a7 a6 a5 a4 a3 a2 a1 a0",
  1035. " o o o o o o o o";
  1036. write_lo = " 0 1 0 0 0 0 0 0",
  1037. " x x x x x x x a8",
  1038. " a7 a6 a5 a4 a3 a2 a1 a0",
  1039. " i i i i i i i i";
  1040. write_hi = " 0 1 0 0 1 0 0 0",
  1041. " x x x x x x x a8",
  1042. " a7 a6 a5 a4 a3 a2 a1 a0",
  1043. " i i i i i i i i";
  1044. mode = 0x02;
  1045. delay = 15;
  1046. blocksize = 128;
  1047. readsize = 256;
  1048. ;
  1049. memory "signature"
  1050. size = 3;
  1051. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  1052. "x x x x x x a1 a0 o o o o o o o o";
  1053. ;
  1054. memory "fuse"
  1055. size = 1;
  1056. ;
  1057. memory "lock"
  1058. size = 1;
  1059. min_write_delay = 9000;
  1060. max_write_delay = 20000;
  1061. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  1062. "x x x x x x x x x x x x x x x x";
  1063. ;
  1064. ;
  1065. #------------------------------------------------------------
  1066. # AT90s4414
  1067. #------------------------------------------------------------
  1068. part
  1069. id = "4414";
  1070. desc = "AT90S4414";
  1071. stk500_devcode = 0x50;
  1072. avr910_devcode = 0x28;
  1073. signature = 0x1e 0x92 0x01;
  1074. chip_erase_delay = 20000;
  1075. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  1076. "x x x x x x x x x x x x x x x x";
  1077. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  1078. "x x x x x x x x x x x x x x x x";
  1079. timeout = 200;
  1080. stabdelay = 100;
  1081. cmdexedelay = 25;
  1082. synchloops = 32;
  1083. bytedelay = 0;
  1084. pollindex = 3;
  1085. pollvalue = 0x53;
  1086. predelay = 1;
  1087. postdelay = 1;
  1088. pollmethod = 0;
  1089. pp_controlstack =
  1090. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  1091. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  1092. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  1093. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
  1094. hventerstabdelay = 100;
  1095. progmodedelay = 0;
  1096. latchcycles = 0;
  1097. togglevtg = 0;
  1098. poweroffdelay = 0;
  1099. resetdelayms = 0;
  1100. resetdelayus = 0;
  1101. hvleavestabdelay = 15;
  1102. chiperasepulsewidth = 15;
  1103. chiperasepolltimeout = 0;
  1104. programfusepulsewidth = 2;
  1105. programfusepolltimeout = 0;
  1106. programlockpulsewidth = 0;
  1107. programlockpolltimeout = 1;
  1108. memory "eeprom"
  1109. size = 256;
  1110. min_write_delay = 9000;
  1111. max_write_delay = 20000;
  1112. readback_p1 = 0x80;
  1113. readback_p2 = 0x7f;
  1114. read = " 1 0 1 0 0 0 0 0 x x x x x x x a8",
  1115. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  1116. write = " 1 1 0 0 0 0 0 0 x x x x x x x a8",
  1117. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  1118. mode = 0x04;
  1119. delay = 12;
  1120. blocksize = 64;
  1121. readsize = 256;
  1122. ;
  1123. memory "flash"
  1124. size = 4096;
  1125. min_write_delay = 9000;
  1126. max_write_delay = 20000;
  1127. readback_p1 = 0x7f;
  1128. readback_p2 = 0x7f;
  1129. read_lo = " 0 0 1 0 0 0 0 0",
  1130. " x x x x a11 a10 a9 a8",
  1131. " a7 a6 a5 a4 a3 a2 a1 a0",
  1132. " o o o o o o o o";
  1133. read_hi = " 0 0 1 0 1 0 0 0",
  1134. " x x x x a11 a10 a9 a8",
  1135. " a7 a6 a5 a4 a3 a2 a1 a0",
  1136. " o o o o o o o o";
  1137. write_lo = " 0 1 0 0 0 0 0 0",
  1138. " x x x x a11 a10 a9 a8",
  1139. " a7 a6 a5 a4 a3 a2 a1 a0",
  1140. " i i i i i i i i";
  1141. write_hi = " 0 1 0 0 1 0 0 0",
  1142. " x x x x a11 a10 a9 a8",
  1143. " a7 a6 a5 a4 a3 a2 a1 a0",
  1144. " i i i i i i i i";
  1145. mode = 0x04;
  1146. delay = 12;
  1147. blocksize = 64;
  1148. readsize = 256;
  1149. ;
  1150. memory "signature"
  1151. size = 3;
  1152. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  1153. "x x x x x x a1 a0 o o o o o o o o";
  1154. ;
  1155. memory "fuse"
  1156. size = 1;
  1157. ;
  1158. memory "lock"
  1159. size = 1;
  1160. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  1161. "x x x x x x x x x x x x x x x x";
  1162. min_write_delay = 9000;
  1163. max_write_delay = 9000;
  1164. ;
  1165. ;
  1166. #------------------------------------------------------------
  1167. # AT90s2313
  1168. #------------------------------------------------------------
  1169. part
  1170. id = "2313";
  1171. desc = "AT90S2313";
  1172. stk500_devcode = 0x40;
  1173. avr910_devcode = 0x20;
  1174. signature = 0x1e 0x91 0x01;
  1175. chip_erase_delay = 20000;
  1176. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  1177. "x x x x x x x x x x x x x x x x";
  1178. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  1179. "x x x x x x x x x x x x x x x x";
  1180. timeout = 200;
  1181. stabdelay = 100;
  1182. cmdexedelay = 25;
  1183. synchloops = 32;
  1184. bytedelay = 0;
  1185. pollindex = 3;
  1186. pollvalue = 0x53;
  1187. predelay = 1;
  1188. postdelay = 1;
  1189. pollmethod = 0;
  1190. pp_controlstack =
  1191. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  1192. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  1193. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  1194. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  1195. hventerstabdelay = 100;
  1196. progmodedelay = 0;
  1197. latchcycles = 0;
  1198. togglevtg = 0;
  1199. poweroffdelay = 0;
  1200. resetdelayms = 0;
  1201. resetdelayus = 0;
  1202. hvleavestabdelay = 15;
  1203. chiperasepulsewidth = 15;
  1204. chiperasepolltimeout = 0;
  1205. programfusepulsewidth = 2;
  1206. programfusepolltimeout = 0;
  1207. programlockpulsewidth = 0;
  1208. programlockpolltimeout = 1;
  1209. memory "eeprom"
  1210. size = 128;
  1211. min_write_delay = 4000;
  1212. max_write_delay = 9000;
  1213. readback_p1 = 0x80;
  1214. readback_p2 = 0x7f;
  1215. read = "1 0 1 0 0 0 0 0 x x x x x x x x",
  1216. "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  1217. write = "1 1 0 0 0 0 0 0 x x x x x x x x",
  1218. "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  1219. mode = 0x04;
  1220. delay = 12;
  1221. blocksize = 64;
  1222. readsize = 256;
  1223. ;
  1224. memory "flash"
  1225. size = 2048;
  1226. min_write_delay = 4000;
  1227. max_write_delay = 9000;
  1228. readback_p1 = 0x7f;
  1229. readback_p2 = 0x7f;
  1230. read_lo = " 0 0 1 0 0 0 0 0",
  1231. " x x x x x x a9 a8",
  1232. " a7 a6 a5 a4 a3 a2 a1 a0",
  1233. " o o o o o o o o";
  1234. read_hi = " 0 0 1 0 1 0 0 0",
  1235. " x x x x x x a9 a8",
  1236. " a7 a6 a5 a4 a3 a2 a1 a0",
  1237. " o o o o o o o o";
  1238. write_lo = " 0 1 0 0 0 0 0 0",
  1239. " x x x x x x a9 a8",
  1240. " a7 a6 a5 a4 a3 a2 a1 a0",
  1241. " i i i i i i i i";
  1242. write_hi = " 0 1 0 0 1 0 0 0",
  1243. " x x x x x x a9 a8",
  1244. " a7 a6 a5 a4 a3 a2 a1 a0",
  1245. " i i i i i i i i";
  1246. mode = 0x04;
  1247. delay = 12;
  1248. blocksize = 128;
  1249. readsize = 256;
  1250. ;
  1251. memory "signature"
  1252. size = 3;
  1253. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  1254. "x x x x x x a1 a0 o o o o o o o o";
  1255. ;
  1256. memory "fuse"
  1257. size = 1;
  1258. ;
  1259. memory "lock"
  1260. size = 1;
  1261. write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x",
  1262. "x x x x x x x x x x x x x x x x";
  1263. min_write_delay = 9000;
  1264. max_write_delay = 9000;
  1265. ;
  1266. ;
  1267. #------------------------------------------------------------
  1268. # AT90s2333
  1269. #------------------------------------------------------------
  1270. part
  1271. id = "2333";
  1272. ##### WARNING: No XML file for device 'AT90S2333'! #####
  1273. desc = "AT90S2333";
  1274. stk500_devcode = 0x42;
  1275. avr910_devcode = 0x34;
  1276. signature = 0x1e 0x91 0x05;
  1277. chip_erase_delay = 20000;
  1278. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  1279. "x x x x x x x x x x x x x x x x";
  1280. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  1281. "x x x x x x x x x x x x x x x x";
  1282. memory "eeprom"
  1283. size = 128;
  1284. min_write_delay = 9000;
  1285. max_write_delay = 20000;
  1286. readback_p1 = 0x00;
  1287. readback_p2 = 0xff;
  1288. read = "1 0 1 0 0 0 0 0 x x x x x x x x",
  1289. "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  1290. write = "1 1 0 0 0 0 0 0 x x x x x x x x",
  1291. "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  1292. ;
  1293. memory "flash"
  1294. size = 2048;
  1295. min_write_delay = 9000;
  1296. max_write_delay = 20000;
  1297. readback_p1 = 0xff;
  1298. readback_p2 = 0xff;
  1299. read_lo = " 0 0 1 0 0 0 0 0",
  1300. " x x x x x x a9 a8",
  1301. " a7 a6 a5 a4 a3 a2 a1 a0",
  1302. " o o o o o o o o";
  1303. read_hi = " 0 0 1 0 1 0 0 0",
  1304. " x x x x x x a9 a8",
  1305. " a7 a6 a5 a4 a3 a2 a1 a0",
  1306. " o o o o o o o o";
  1307. write_lo = " 0 1 0 0 0 0 0 0",
  1308. " x x x x x x a9 a8",
  1309. " a7 a6 a5 a4 a3 a2 a1 a0",
  1310. " i i i i i i i i";
  1311. write_hi = " 0 1 0 0 1 0 0 0",
  1312. " x x x x x x a9 a8",
  1313. " a7 a6 a5 a4 a3 a2 a1 a0",
  1314. " i i i i i i i i";
  1315. ;
  1316. memory "signature"
  1317. size = 3;
  1318. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  1319. "x x x x x x a1 a0 o o o o o o o o";
  1320. ;
  1321. memory "fuse"
  1322. size = 1;
  1323. min_write_delay = 9000;
  1324. max_write_delay = 20000;
  1325. pwroff_after_write = yes;
  1326. read = "0 1 0 1 0 0 0 0 x x x x x x x x",
  1327. "x x x x x x x x x x o o o o o o";
  1328. write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i",
  1329. "x x x x x x x x x x x x x x x x";
  1330. ;
  1331. memory "lock"
  1332. size = 1;
  1333. min_write_delay = 9000;
  1334. max_write_delay = 20000;
  1335. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  1336. "x x x x x x x x x x x x x o o x";
  1337. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  1338. "x x x x x x x x x x x x x x x x";
  1339. ;
  1340. ;
  1341. #------------------------------------------------------------
  1342. # AT90s2343 (also AT90s2323 and ATtiny22)
  1343. #------------------------------------------------------------
  1344. part
  1345. id = "2343";
  1346. desc = "AT90S2343";
  1347. stk500_devcode = 0x43;
  1348. avr910_devcode = 0x4c;
  1349. signature = 0x1e 0x91 0x03;
  1350. chip_erase_delay = 18000;
  1351. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  1352. "x x x x x x x x x x x x x x x x";
  1353. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  1354. "x x x x x x x x x x x x x x x x";
  1355. timeout = 200;
  1356. stabdelay = 100;
  1357. cmdexedelay = 25;
  1358. synchloops = 32;
  1359. bytedelay = 0;
  1360. pollindex = 3;
  1361. pollvalue = 0x53;
  1362. predelay = 1;
  1363. postdelay = 1;
  1364. pollmethod = 0;
  1365. hvsp_controlstack =
  1366. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
  1367. 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
  1368. 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  1369. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
  1370. hventerstabdelay = 100;
  1371. hvspcmdexedelay = 0;
  1372. synchcycles = 6;
  1373. latchcycles = 1;
  1374. togglevtg = 0;
  1375. poweroffdelay = 25;
  1376. resetdelayms = 0;
  1377. resetdelayus = 50;
  1378. hvleavestabdelay = 100;
  1379. resetdelay = 25;
  1380. chiperasepolltimeout = 40;
  1381. chiperasetime = 0;
  1382. programfusepolltimeout = 25;
  1383. programlockpolltimeout = 25;
  1384. memory "eeprom"
  1385. size = 128;
  1386. min_write_delay = 9000;
  1387. max_write_delay = 20000;
  1388. readback_p1 = 0x00;
  1389. readback_p2 = 0xff;
  1390. read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0",
  1391. "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  1392. write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0",
  1393. "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  1394. mode = 0x04;
  1395. delay = 12;
  1396. blocksize = 64;
  1397. readsize = 256;
  1398. ;
  1399. memory "flash"
  1400. size = 2048;
  1401. min_write_delay = 9000;
  1402. max_write_delay = 20000;
  1403. readback_p1 = 0xff;
  1404. readback_p2 = 0xff;
  1405. read_lo = " 0 0 1 0 0 0 0 0",
  1406. " x x x x x x a9 a8",
  1407. " a7 a6 a5 a4 a3 a2 a1 a0",
  1408. " o o o o o o o o";
  1409. read_hi = " 0 0 1 0 1 0 0 0",
  1410. " x x x x x x a9 a8",
  1411. " a7 a6 a5 a4 a3 a2 a1 a0",
  1412. " o o o o o o o o";
  1413. write_lo = " 0 1 0 0 0 0 0 0",
  1414. " x x x x x x a9 a8",
  1415. " a7 a6 a5 a4 a3 a2 a1 a0",
  1416. " i i i i i i i i";
  1417. write_hi = " 0 1 0 0 1 0 0 0",
  1418. " x x x x x x a9 a8",
  1419. " a7 a6 a5 a4 a3 a2 a1 a0",
  1420. " i i i i i i i i";
  1421. mode = 0x04;
  1422. delay = 12;
  1423. blocksize = 128;
  1424. readsize = 128;
  1425. ;
  1426. memory "signature"
  1427. size = 3;
  1428. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  1429. "x x x x x x a1 a0 o o o o o o o o";
  1430. ;
  1431. memory "fuse"
  1432. size = 1;
  1433. min_write_delay = 9000;
  1434. max_write_delay = 20000;
  1435. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  1436. "x x x x x x x x o o o x x x x o";
  1437. write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i",
  1438. "x x x x x x x x x x x x x x x x";
  1439. ;
  1440. memory "lock"
  1441. size = 1;
  1442. min_write_delay = 9000;
  1443. max_write_delay = 20000;
  1444. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  1445. "x x x x x x x x o o o x x x x o";
  1446. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  1447. "x x x x x x x x x x x x x x x x";
  1448. ;
  1449. ;
  1450. #------------------------------------------------------------
  1451. # AT90s4433
  1452. #------------------------------------------------------------
  1453. part
  1454. id = "4433";
  1455. desc = "AT90S4433";
  1456. stk500_devcode = 0x51;
  1457. avr910_devcode = 0x30;
  1458. signature = 0x1e 0x92 0x03;
  1459. chip_erase_delay = 20000;
  1460. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  1461. "x x x x x x x x x x x x x x x x";
  1462. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  1463. "x x x x x x x x x x x x x x x x";
  1464. timeout = 200;
  1465. stabdelay = 100;
  1466. cmdexedelay = 25;
  1467. synchloops = 32;
  1468. bytedelay = 0;
  1469. pollindex = 3;
  1470. pollvalue = 0x53;
  1471. predelay = 1;
  1472. postdelay = 1;
  1473. pollmethod = 0;
  1474. pp_controlstack =
  1475. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  1476. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  1477. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  1478. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  1479. hventerstabdelay = 100;
  1480. progmodedelay = 0;
  1481. latchcycles = 0;
  1482. togglevtg = 0;
  1483. poweroffdelay = 0;
  1484. resetdelayms = 0;
  1485. resetdelayus = 0;
  1486. hvleavestabdelay = 15;
  1487. chiperasepulsewidth = 15;
  1488. chiperasepolltimeout = 0;
  1489. programfusepulsewidth = 2;
  1490. programfusepolltimeout = 0;
  1491. programlockpulsewidth = 0;
  1492. programlockpolltimeout = 1;
  1493. memory "eeprom"
  1494. size = 256;
  1495. min_write_delay = 9000;
  1496. max_write_delay = 20000;
  1497. readback_p1 = 0x00;
  1498. readback_p2 = 0xff;
  1499. read = " 1 0 1 0 0 0 0 0 x x x x x x x x",
  1500. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  1501. write = " 1 1 0 0 0 0 0 0 x x x x x x x x",
  1502. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  1503. mode = 0x04;
  1504. delay = 12;
  1505. blocksize = 128;
  1506. readsize = 256;
  1507. ;
  1508. memory "flash"
  1509. size = 4096;
  1510. min_write_delay = 9000;
  1511. max_write_delay = 20000;
  1512. readback_p1 = 0xff;
  1513. readback_p2 = 0xff;
  1514. read_lo = " 0 0 1 0 0 0 0 0",
  1515. " x x x x x a10 a9 a8",
  1516. " a7 a6 a5 a4 a3 a2 a1 a0",
  1517. " o o o o o o o o";
  1518. read_hi = " 0 0 1 0 1 0 0 0",
  1519. " x x x x x a10 a9 a8",
  1520. " a7 a6 a5 a4 a3 a2 a1 a0",
  1521. " o o o o o o o o";
  1522. write_lo = " 0 1 0 0 0 0 0 0",
  1523. " x x x x x a10 a9 a8",
  1524. " a7 a6 a5 a4 a3 a2 a1 a0",
  1525. " i i i i i i i i";
  1526. write_hi = " 0 1 0 0 1 0 0 0",
  1527. " x x x x x a10 a9 a8",
  1528. " a7 a6 a5 a4 a3 a2 a1 a0",
  1529. " i i i i i i i i";
  1530. mode = 0x04;
  1531. delay = 12;
  1532. blocksize = 128;
  1533. readsize = 256;
  1534. ;
  1535. memory "signature"
  1536. size = 3;
  1537. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  1538. "x x x x x x a1 a0 o o o o o o o o";
  1539. ;
  1540. memory "fuse"
  1541. size = 1;
  1542. min_write_delay = 9000;
  1543. max_write_delay = 20000;
  1544. pwroff_after_write = yes;
  1545. read = "0 1 0 1 0 0 0 0 x x x x x x x x",
  1546. "x x x x x x x x x x o o o o o o";
  1547. write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i",
  1548. "x x x x x x x x x x x x x x x x";
  1549. ;
  1550. memory "lock"
  1551. size = 1;
  1552. min_write_delay = 9000;
  1553. max_write_delay = 20000;
  1554. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  1555. "x x x x x x x x x x x x x o o x";
  1556. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  1557. "x x x x x x x x x x x x x x x x";
  1558. ;
  1559. ;
  1560. #------------------------------------------------------------
  1561. # AT90s4434
  1562. #------------------------------------------------------------
  1563. part
  1564. id = "4434";
  1565. ##### WARNING: No XML file for device 'AT90S4434'! #####
  1566. desc = "AT90S4434";
  1567. stk500_devcode = 0x52;
  1568. avr910_devcode = 0x6c;
  1569. signature = 0x1e 0x92 0x02;
  1570. chip_erase_delay = 20000;
  1571. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  1572. "x x x x x x x x x x x x x x x x";
  1573. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  1574. "x x x x x x x x x x x x x x x x";
  1575. memory "eeprom"
  1576. size = 256;
  1577. min_write_delay = 9000;
  1578. max_write_delay = 20000;
  1579. readback_p1 = 0x00;
  1580. readback_p2 = 0xff;
  1581. read = " 1 0 1 0 0 0 0 0 x x x x x x x x",
  1582. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  1583. write = " 1 1 0 0 0 0 0 0 x x x x x x x x",
  1584. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  1585. ;
  1586. memory "flash"
  1587. size = 4096;
  1588. min_write_delay = 9000;
  1589. max_write_delay = 20000;
  1590. readback_p1 = 0xff;
  1591. readback_p2 = 0xff;
  1592. read_lo = " 0 0 1 0 0 0 0 0",
  1593. " x x x x x a10 a9 a8",
  1594. " a7 a6 a5 a4 a3 a2 a1 a0",
  1595. " o o o o o o o o";
  1596. read_hi = " 0 0 1 0 1 0 0 0",
  1597. " x x x x x a10 a9 a8",
  1598. " a7 a6 a5 a4 a3 a2 a1 a0",
  1599. " o o o o o o o o";
  1600. write_lo = " 0 1 0 0 0 0 0 0",
  1601. " x x x x x a10 a9 a8",
  1602. " a7 a6 a5 a4 a3 a2 a1 a0",
  1603. " i i i i i i i i";
  1604. write_hi = " 0 1 0 0 1 0 0 0",
  1605. " x x x x x a10 a9 a8",
  1606. " a7 a6 a5 a4 a3 a2 a1 a0",
  1607. " i i i i i i i i";
  1608. ;
  1609. memory "signature"
  1610. size = 3;
  1611. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  1612. "x x x x x x a1 a0 o o o o o o o o";
  1613. ;
  1614. memory "fuse"
  1615. size = 1;
  1616. min_write_delay = 9000;
  1617. max_write_delay = 20000;
  1618. read = "0 1 0 1 0 0 0 0 x x x x x x x x",
  1619. "x x x x x x x x x x o o o o o o";
  1620. write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i",
  1621. "x x x x x x x x x x x x x x x x";
  1622. ;
  1623. memory "lock"
  1624. size = 1;
  1625. min_write_delay = 9000;
  1626. max_write_delay = 20000;
  1627. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  1628. "x x x x x x x x x x x x x o o x";
  1629. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  1630. "x x x x x x x x x x x x x x x x";
  1631. ;
  1632. ;
  1633. #------------------------------------------------------------
  1634. # AT90s8515
  1635. #------------------------------------------------------------
  1636. part
  1637. id = "8515";
  1638. desc = "AT90S8515";
  1639. stk500_devcode = 0x60;
  1640. avr910_devcode = 0x38;
  1641. signature = 0x1e 0x93 0x01;
  1642. chip_erase_delay = 20000;
  1643. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  1644. "x x x x x x x x x x x x x x x x";
  1645. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  1646. "x x x x x x x x x x x x x x x x";
  1647. timeout = 200;
  1648. stabdelay = 100;
  1649. cmdexedelay = 25;
  1650. synchloops = 32;
  1651. bytedelay = 0;
  1652. pollindex = 3;
  1653. pollvalue = 0x53;
  1654. predelay = 1;
  1655. postdelay = 1;
  1656. pollmethod = 0;
  1657. pp_controlstack =
  1658. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  1659. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  1660. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  1661. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  1662. hventerstabdelay = 100;
  1663. progmodedelay = 0;
  1664. latchcycles = 0;
  1665. togglevtg = 0;
  1666. poweroffdelay = 0;
  1667. resetdelayms = 0;
  1668. resetdelayus = 0;
  1669. hvleavestabdelay = 15;
  1670. resetdelay = 15;
  1671. chiperasepulsewidth = 15;
  1672. chiperasepolltimeout = 0;
  1673. programfusepulsewidth = 2;
  1674. programfusepolltimeout = 0;
  1675. programlockpulsewidth = 0;
  1676. programlockpolltimeout = 1;
  1677. memory "eeprom"
  1678. size = 512;
  1679. min_write_delay = 4000;
  1680. max_write_delay = 9000;
  1681. readback_p1 = 0x80;
  1682. readback_p2 = 0x7f;
  1683. read = " 1 0 1 0 0 0 0 0 x x x x x x x a8",
  1684. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  1685. write = " 1 1 0 0 0 0 0 0 x x x x x x x a8",
  1686. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  1687. mode = 0x04;
  1688. delay = 12;
  1689. blocksize = 128;
  1690. readsize = 256;
  1691. ;
  1692. memory "flash"
  1693. size = 8192;
  1694. min_write_delay = 4000;
  1695. max_write_delay = 9000;
  1696. readback_p1 = 0x7f;
  1697. readback_p2 = 0x7f;
  1698. read_lo = " 0 0 1 0 0 0 0 0",
  1699. " x x x x a11 a10 a9 a8",
  1700. " a7 a6 a5 a4 a3 a2 a1 a0",
  1701. " o o o o o o o o";
  1702. read_hi = " 0 0 1 0 1 0 0 0",
  1703. " x x x x a11 a10 a9 a8",
  1704. " a7 a6 a5 a4 a3 a2 a1 a0",
  1705. " o o o o o o o o";
  1706. write_lo = " 0 1 0 0 0 0 0 0",
  1707. " x x x x a11 a10 a9 a8",
  1708. " a7 a6 a5 a4 a3 a2 a1 a0",
  1709. " i i i i i i i i";
  1710. write_hi = " 0 1 0 0 1 0 0 0",
  1711. " x x x x a11 a10 a9 a8",
  1712. " a7 a6 a5 a4 a3 a2 a1 a0",
  1713. " i i i i i i i i";
  1714. mode = 0x04;
  1715. delay = 12;
  1716. blocksize = 128;
  1717. readsize = 256;
  1718. ;
  1719. memory "signature"
  1720. size = 3;
  1721. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  1722. "x x x x x x a1 a0 o o o o o o o o";
  1723. ;
  1724. memory "fuse"
  1725. size = 1;
  1726. ;
  1727. memory "lock"
  1728. size = 1;
  1729. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  1730. "x x x x x x x x x x x x x x x x";
  1731. min_write_delay = 9000;
  1732. max_write_delay = 9000;
  1733. ;
  1734. ;
  1735. #------------------------------------------------------------
  1736. # AT90s8535
  1737. #------------------------------------------------------------
  1738. part
  1739. id = "8535";
  1740. desc = "AT90S8535";
  1741. stk500_devcode = 0x61;
  1742. avr910_devcode = 0x68;
  1743. signature = 0x1e 0x93 0x03;
  1744. chip_erase_delay = 20000;
  1745. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  1746. "x x x x x x x x x x x x x x x x";
  1747. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  1748. "x x x x x x x x x x x x x x x x";
  1749. timeout = 200;
  1750. stabdelay = 100;
  1751. cmdexedelay = 25;
  1752. synchloops = 32;
  1753. bytedelay = 0;
  1754. pollindex = 3;
  1755. pollvalue = 0x53;
  1756. predelay = 1;
  1757. postdelay = 1;
  1758. pollmethod = 0;
  1759. pp_controlstack =
  1760. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  1761. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  1762. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  1763. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  1764. hventerstabdelay = 100;
  1765. progmodedelay = 0;
  1766. latchcycles = 0;
  1767. togglevtg = 0;
  1768. poweroffdelay = 0;
  1769. resetdelayms = 0;
  1770. resetdelayus = 0;
  1771. hvleavestabdelay = 15;
  1772. chiperasepulsewidth = 15;
  1773. chiperasepolltimeout = 0;
  1774. programfusepulsewidth = 2;
  1775. programfusepolltimeout = 0;
  1776. programlockpulsewidth = 0;
  1777. programlockpolltimeout = 1;
  1778. memory "eeprom"
  1779. size = 512;
  1780. min_write_delay = 9000;
  1781. max_write_delay = 20000;
  1782. readback_p1 = 0x00;
  1783. readback_p2 = 0xff;
  1784. read = " 1 0 1 0 0 0 0 0 x x x x x x x a8",
  1785. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  1786. write = " 1 1 0 0 0 0 0 0 x x x x x x x a8",
  1787. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  1788. mode = 0x04;
  1789. delay = 12;
  1790. blocksize = 128;
  1791. readsize = 256;
  1792. ;
  1793. memory "flash"
  1794. size = 8192;
  1795. min_write_delay = 9000;
  1796. max_write_delay = 20000;
  1797. readback_p1 = 0xff;
  1798. readback_p2 = 0xff;
  1799. read_lo = " 0 0 1 0 0 0 0 0",
  1800. " x x x x a11 a10 a9 a8",
  1801. " a7 a6 a5 a4 a3 a2 a1 a0",
  1802. " o o o o o o o o";
  1803. read_hi = " 0 0 1 0 1 0 0 0",
  1804. " x x x x a11 a10 a9 a8",
  1805. " a7 a6 a5 a4 a3 a2 a1 a0",
  1806. " o o o o o o o o";
  1807. write_lo = " 0 1 0 0 0 0 0 0",
  1808. " x x x x a11 a10 a9 a8",
  1809. " a7 a6 a5 a4 a3 a2 a1 a0",
  1810. " i i i i i i i i";
  1811. write_hi = " 0 1 0 0 1 0 0 0",
  1812. " x x x x a11 a10 a9 a8",
  1813. " a7 a6 a5 a4 a3 a2 a1 a0",
  1814. " i i i i i i i i";
  1815. mode = 0x04;
  1816. delay = 12;
  1817. blocksize = 128;
  1818. readsize = 256;
  1819. ;
  1820. memory "signature"
  1821. size = 3;
  1822. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  1823. "x x x x x x a1 a0 o o o o o o o o";
  1824. ;
  1825. memory "fuse"
  1826. size = 1;
  1827. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  1828. "x x x x x x x x x x x x x x x o";
  1829. write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i",
  1830. "x x x x x x x x x x x x x x x x";
  1831. min_write_delay = 9000;
  1832. max_write_delay = 9000;
  1833. ;
  1834. memory "lock"
  1835. size = 1;
  1836. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  1837. "x x x x x x x x o o x x x x x x";
  1838. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  1839. "x x x x x x x x x x x x x x x x";
  1840. min_write_delay = 9000;
  1841. max_write_delay = 9000;
  1842. ;
  1843. ;
  1844. #------------------------------------------------------------
  1845. # ATmega103
  1846. #------------------------------------------------------------
  1847. part
  1848. id = "m103";
  1849. desc = "ATMEGA103";
  1850. stk500_devcode = 0xB1;
  1851. avr910_devcode = 0x41;
  1852. signature = 0x1e 0x97 0x01;
  1853. chip_erase_delay = 112000;
  1854. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  1855. "x x x x x x x x x x x x x x x x";
  1856. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  1857. "x x x x x x x x x x x x x x x x";
  1858. timeout = 200;
  1859. stabdelay = 100;
  1860. cmdexedelay = 25;
  1861. synchloops = 32;
  1862. bytedelay = 0;
  1863. pollindex = 3;
  1864. pollvalue = 0x53;
  1865. predelay = 1;
  1866. postdelay = 1;
  1867. pollmethod = 0;
  1868. pp_controlstack =
  1869. 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE,
  1870. 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE,
  1871. 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A,
  1872. 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  1873. hventerstabdelay = 100;
  1874. progmodedelay = 0;
  1875. latchcycles = 0;
  1876. togglevtg = 0;
  1877. poweroffdelay = 0;
  1878. resetdelayms = 0;
  1879. resetdelayus = 0;
  1880. hvleavestabdelay = 15;
  1881. chiperasepulsewidth = 15;
  1882. chiperasepolltimeout = 0;
  1883. programfusepulsewidth = 2;
  1884. programfusepolltimeout = 0;
  1885. programlockpulsewidth = 0;
  1886. programlockpolltimeout = 10;
  1887. memory "eeprom"
  1888. size = 4096;
  1889. min_write_delay = 4000;
  1890. max_write_delay = 9000;
  1891. readback_p1 = 0x80;
  1892. readback_p2 = 0x7f;
  1893. read = " 1 0 1 0 0 0 0 0",
  1894. " x x x x a11 a10 a9 a8",
  1895. " a7 a6 a5 a4 a3 a2 a1 a0",
  1896. " o o o o o o o o";
  1897. write = " 1 1 0 0 0 0 0 0",
  1898. " x x x x a11 a10 a9 a8",
  1899. " a7 a6 a5 a4 a3 a2 a1 a0",
  1900. " i i i i i i i i";
  1901. mode = 0x04;
  1902. delay = 12;
  1903. blocksize = 64;
  1904. readsize = 256;
  1905. ;
  1906. memory "flash"
  1907. paged = yes;
  1908. size = 131072;
  1909. page_size = 256;
  1910. num_pages = 512;
  1911. min_write_delay = 22000;
  1912. max_write_delay = 56000;
  1913. readback_p1 = 0xff;
  1914. readback_p2 = 0xff;
  1915. read_lo = " 0 0 1 0 0 0 0 0",
  1916. "a15 a14 a13 a12 a11 a10 a9 a8",
  1917. " a7 a6 a5 a4 a3 a2 a1 a0",
  1918. " o o o o o o o o";
  1919. read_hi = " 0 0 1 0 1 0 0 0",
  1920. "a15 a14 a13 a12 a11 a10 a9 a8",
  1921. " a7 a6 a5 a4 a3 a2 a1 a0",
  1922. " o o o o o o o o";
  1923. loadpage_lo = " 0 1 0 0 0 0 0 0",
  1924. " x x x x x x x x",
  1925. " x a6 a5 a4 a3 a2 a1 a0",
  1926. " i i i i i i i i";
  1927. loadpage_hi = " 0 1 0 0 1 0 0 0",
  1928. " x x x x x x x x",
  1929. " x a6 a5 a4 a3 a2 a1 a0",
  1930. " i i i i i i i i";
  1931. writepage = " 0 1 0 0 1 1 0 0",
  1932. "a15 a14 a13 a12 a11 a10 a9 a8",
  1933. " a7 x x x x x x x",
  1934. " x x x x x x x x";
  1935. mode = 0x11;
  1936. delay = 70;
  1937. blocksize = 256;
  1938. readsize = 256;
  1939. ;
  1940. memory "fuse"
  1941. size = 1;
  1942. read = "0 1 0 1 0 0 0 0 x x x x x x x x",
  1943. "x x x x x x x x x x o x o 1 o o";
  1944. write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i",
  1945. "x x x x x x x x x x x x x x x x";
  1946. min_write_delay = 9000;
  1947. max_write_delay = 9000;
  1948. ;
  1949. memory "lock"
  1950. size = 1;
  1951. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  1952. "x x x x x x x x x x x x x o o x";
  1953. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1",
  1954. "x x x x x x x x x x x x x x x x";
  1955. min_write_delay = 9000;
  1956. max_write_delay = 9000;
  1957. ;
  1958. memory "signature"
  1959. size = 3;
  1960. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  1961. "x x x x x x a1 a0 o o o o o o o o";
  1962. ;
  1963. ;
  1964. #------------------------------------------------------------
  1965. # ATmega64
  1966. #------------------------------------------------------------
  1967. part
  1968. id = "m64";
  1969. desc = "ATMEGA64";
  1970. has_jtag = yes;
  1971. stk500_devcode = 0xA0;
  1972. avr910_devcode = 0x45;
  1973. signature = 0x1e 0x96 0x02;
  1974. chip_erase_delay = 9000;
  1975. pagel = 0xD7;
  1976. bs2 = 0xA0;
  1977. reset = dedicated;
  1978. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  1979. "x x x x x x x x x x x x x x x x";
  1980. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  1981. "x x x x x x x x x x x x x x x x";
  1982. timeout = 200;
  1983. stabdelay = 100;
  1984. cmdexedelay = 25;
  1985. synchloops = 32;
  1986. bytedelay = 0;
  1987. pollindex = 3;
  1988. pollvalue = 0x53;
  1989. predelay = 1;
  1990. postdelay = 1;
  1991. pollmethod = 0;
  1992. pp_controlstack =
  1993. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  1994. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  1995. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  1996. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  1997. hventerstabdelay = 100;
  1998. progmodedelay = 0;
  1999. latchcycles = 6;
  2000. togglevtg = 0;
  2001. poweroffdelay = 0;
  2002. resetdelayms = 0;
  2003. resetdelayus = 0;
  2004. hvleavestabdelay = 15;
  2005. chiperasepulsewidth = 0;
  2006. chiperasepolltimeout = 10;
  2007. programfusepulsewidth = 0;
  2008. programfusepolltimeout = 5;
  2009. programlockpulsewidth = 0;
  2010. programlockpolltimeout = 5;
  2011. idr = 0x22;
  2012. spmcr = 0x68;
  2013. allowfullpagebitstream = yes;
  2014. memory "eeprom"
  2015. paged = no; /* leave this "no" */
  2016. page_size = 8; /* for parallel programming */
  2017. size = 2048;
  2018. min_write_delay = 9000;
  2019. max_write_delay = 9000;
  2020. readback_p1 = 0xff;
  2021. readback_p2 = 0xff;
  2022. read = " 1 0 1 0 0 0 0 0",
  2023. " x x x x a11 a10 a9 a8",
  2024. " a7 a6 a5 a4 a3 a2 a1 a0",
  2025. " o o o o o o o o";
  2026. write = " 1 1 0 0 0 0 0 0",
  2027. " x x x x a11 a10 a9 a8",
  2028. " a7 a6 a5 a4 a3 a2 a1 a0",
  2029. " i i i i i i i i";
  2030. mode = 0x04;
  2031. delay = 20;
  2032. blocksize = 64;
  2033. readsize = 256;
  2034. ;
  2035. memory "flash"
  2036. paged = yes;
  2037. size = 65536;
  2038. page_size = 256;
  2039. num_pages = 256;
  2040. min_write_delay = 4500;
  2041. max_write_delay = 4500;
  2042. readback_p1 = 0xff;
  2043. readback_p2 = 0xff;
  2044. read_lo = " 0 0 1 0 0 0 0 0",
  2045. " x a14 a13 a12 a11 a10 a9 a8",
  2046. " a7 a6 a5 a4 a3 a2 a1 a0",
  2047. " o o o o o o o o";
  2048. read_hi = " 0 0 1 0 1 0 0 0",
  2049. " x a14 a13 a12 a11 a10 a9 a8",
  2050. " a7 a6 a5 a4 a3 a2 a1 a0",
  2051. " o o o o o o o o";
  2052. loadpage_lo = " 0 1 0 0 0 0 0 0",
  2053. " x x x x x x x x",
  2054. " x a6 a5 a4 a3 a2 a1 a0",
  2055. " i i i i i i i i";
  2056. loadpage_hi = " 0 1 0 0 1 0 0 0",
  2057. " x x x x x x x x",
  2058. " x a6 a5 a4 a3 a2 a1 a0",
  2059. " i i i i i i i i";
  2060. writepage = " 0 1 0 0 1 1 0 0",
  2061. " x a14 a13 a12 a11 a10 a9 a8",
  2062. " a7 x x x x x x x",
  2063. " x x x x x x x x";
  2064. mode = 0x21;
  2065. delay = 6;
  2066. blocksize = 128;
  2067. readsize = 256;
  2068. ;
  2069. memory "lfuse"
  2070. size = 1;
  2071. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  2072. "x x x x x x x x i i i i i i i i";
  2073. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  2074. "x x x x x x x x o o o o o o o o";
  2075. min_write_delay = 9000;
  2076. max_write_delay = 9000;
  2077. ;
  2078. memory "hfuse"
  2079. size = 1;
  2080. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  2081. "x x x x x x x x i i i i i i i i";
  2082. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  2083. "x x x x x x x x o o o o o o o o";
  2084. min_write_delay = 9000;
  2085. max_write_delay = 9000;
  2086. ;
  2087. memory "efuse"
  2088. size = 1;
  2089. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  2090. "x x x x x x x x x x x x x x i i";
  2091. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  2092. "x x x x x x x x o o o o o o o o";
  2093. min_write_delay = 9000;
  2094. max_write_delay = 9000;
  2095. ;
  2096. memory "lock"
  2097. size = 1;
  2098. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  2099. "x x x x x x x x x x o o o o o o";
  2100. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  2101. "x x x x x x x x 1 1 i i i i i i";
  2102. min_write_delay = 9000;
  2103. max_write_delay = 9000;
  2104. ;
  2105. memory "calibration"
  2106. size = 4;
  2107. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  2108. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  2109. ;
  2110. memory "signature"
  2111. size = 3;
  2112. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  2113. "x x x x x x a1 a0 o o o o o o o o";
  2114. ;
  2115. ;
  2116. #------------------------------------------------------------
  2117. # ATmega128
  2118. #------------------------------------------------------------
  2119. part
  2120. id = "m128";
  2121. desc = "ATMEGA128";
  2122. has_jtag = yes;
  2123. stk500_devcode = 0xB2;
  2124. avr910_devcode = 0x43;
  2125. signature = 0x1e 0x97 0x02;
  2126. chip_erase_delay = 9000;
  2127. pagel = 0xD7;
  2128. bs2 = 0xA0;
  2129. reset = dedicated;
  2130. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  2131. "x x x x x x x x x x x x x x x x";
  2132. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  2133. "x x x x x x x x x x x x x x x x";
  2134. timeout = 200;
  2135. stabdelay = 100;
  2136. cmdexedelay = 25;
  2137. synchloops = 32;
  2138. bytedelay = 0;
  2139. pollindex = 3;
  2140. pollvalue = 0x53;
  2141. predelay = 1;
  2142. postdelay = 1;
  2143. pollmethod = 0;
  2144. pp_controlstack =
  2145. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  2146. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  2147. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  2148. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  2149. hventerstabdelay = 100;
  2150. progmodedelay = 0;
  2151. latchcycles = 6;
  2152. togglevtg = 0;
  2153. poweroffdelay = 0;
  2154. resetdelayms = 0;
  2155. resetdelayus = 0;
  2156. hvleavestabdelay = 15;
  2157. chiperasepulsewidth = 0;
  2158. chiperasepolltimeout = 10;
  2159. programfusepulsewidth = 0;
  2160. programfusepolltimeout = 5;
  2161. programlockpulsewidth = 0;
  2162. programlockpolltimeout = 5;
  2163. idr = 0x22;
  2164. spmcr = 0x68;
  2165. rampz = 0x3b;
  2166. allowfullpagebitstream = yes;
  2167. memory "eeprom"
  2168. paged = no; /* leave this "no" */
  2169. page_size = 8; /* for parallel programming */
  2170. size = 4096;
  2171. min_write_delay = 9000;
  2172. max_write_delay = 9000;
  2173. readback_p1 = 0xff;
  2174. readback_p2 = 0xff;
  2175. read = " 1 0 1 0 0 0 0 0",
  2176. " x x x x a11 a10 a9 a8",
  2177. " a7 a6 a5 a4 a3 a2 a1 a0",
  2178. " o o o o o o o o";
  2179. write = " 1 1 0 0 0 0 0 0",
  2180. " x x x x a11 a10 a9 a8",
  2181. " a7 a6 a5 a4 a3 a2 a1 a0",
  2182. " i i i i i i i i";
  2183. mode = 0x04;
  2184. delay = 12;
  2185. blocksize = 64;
  2186. readsize = 256;
  2187. ;
  2188. memory "flash"
  2189. paged = yes;
  2190. size = 131072;
  2191. page_size = 256;
  2192. num_pages = 512;
  2193. min_write_delay = 4500;
  2194. max_write_delay = 4500;
  2195. readback_p1 = 0xff;
  2196. readback_p2 = 0xff;
  2197. read_lo = " 0 0 1 0 0 0 0 0",
  2198. "a15 a14 a13 a12 a11 a10 a9 a8",
  2199. " a7 a6 a5 a4 a3 a2 a1 a0",
  2200. " o o o o o o o o";
  2201. read_hi = " 0 0 1 0 1 0 0 0",
  2202. "a15 a14 a13 a12 a11 a10 a9 a8",
  2203. " a7 a6 a5 a4 a3 a2 a1 a0",
  2204. " o o o o o o o o";
  2205. loadpage_lo = " 0 1 0 0 0 0 0 0",
  2206. " x x x x x x x x",
  2207. " x a6 a5 a4 a3 a2 a1 a0",
  2208. " i i i i i i i i";
  2209. loadpage_hi = " 0 1 0 0 1 0 0 0",
  2210. " x x x x x x x x",
  2211. " x a6 a5 a4 a3 a2 a1 a0",
  2212. " i i i i i i i i";
  2213. writepage = " 0 1 0 0 1 1 0 0",
  2214. "a15 a14 a13 a12 a11 a10 a9 a8",
  2215. " a7 x x x x x x x",
  2216. " x x x x x x x x";
  2217. mode = 0x21;
  2218. delay = 6;
  2219. blocksize = 128;
  2220. readsize = 256;
  2221. ;
  2222. memory "lfuse"
  2223. size = 1;
  2224. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  2225. "x x x x x x x x i i i i i i i i";
  2226. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  2227. "x x x x x x x x o o o o o o o o";
  2228. min_write_delay = 9000;
  2229. max_write_delay = 9000;
  2230. ;
  2231. memory "hfuse"
  2232. size = 1;
  2233. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  2234. "x x x x x x x x i i i i i i i i";
  2235. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  2236. "x x x x x x x x o o o o o o o o";
  2237. min_write_delay = 9000;
  2238. max_write_delay = 9000;
  2239. ;
  2240. memory "efuse"
  2241. size = 1;
  2242. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  2243. "x x x x x x x x x x x x x x i i";
  2244. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  2245. "x x x x x x x x o o o o o o o o";
  2246. min_write_delay = 9000;
  2247. max_write_delay = 9000;
  2248. ;
  2249. memory "lock"
  2250. size = 1;
  2251. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  2252. "x x x x x x x x x x o o o o o o";
  2253. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  2254. "x x x x x x x x 1 1 i i i i i i";
  2255. min_write_delay = 9000;
  2256. max_write_delay = 9000;
  2257. ;
  2258. memory "calibration"
  2259. size = 4;
  2260. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  2261. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  2262. ;
  2263. memory "signature"
  2264. size = 3;
  2265. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  2266. "x x x x x x a1 a0 o o o o o o o o";
  2267. ;
  2268. ;
  2269. #------------------------------------------------------------
  2270. # AT90CAN128
  2271. #------------------------------------------------------------
  2272. part
  2273. id = "c128";
  2274. desc = "AT90CAN128";
  2275. has_jtag = yes;
  2276. stk500_devcode = 0xB3;
  2277. # avr910_devcode = 0x43;
  2278. signature = 0x1e 0x97 0x81;
  2279. chip_erase_delay = 9000;
  2280. pagel = 0xD7;
  2281. bs2 = 0xA0;
  2282. reset = dedicated;
  2283. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  2284. "x x x x x x x x x x x x x x x x";
  2285. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  2286. "x x x x x x x x x x x x x x x x";
  2287. timeout = 200;
  2288. stabdelay = 100;
  2289. cmdexedelay = 25;
  2290. synchloops = 32;
  2291. bytedelay = 0;
  2292. pollindex = 3;
  2293. pollvalue = 0x53;
  2294. predelay = 1;
  2295. postdelay = 1;
  2296. pollmethod = 1;
  2297. pp_controlstack =
  2298. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  2299. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  2300. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  2301. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
  2302. hventerstabdelay = 100;
  2303. progmodedelay = 0;
  2304. latchcycles = 6;
  2305. togglevtg = 0;
  2306. poweroffdelay = 0;
  2307. resetdelayms = 0;
  2308. resetdelayus = 0;
  2309. hvleavestabdelay = 15;
  2310. chiperasepulsewidth = 0;
  2311. chiperasepolltimeout = 10;
  2312. programfusepulsewidth = 0;
  2313. programfusepolltimeout = 5;
  2314. programlockpulsewidth = 0;
  2315. programlockpolltimeout = 5;
  2316. idr = 0x31;
  2317. spmcr = 0x57;
  2318. rampz = 0x3b;
  2319. eecr = 0x3f;
  2320. allowfullpagebitstream = no;
  2321. memory "eeprom"
  2322. paged = no; /* leave this "no" */
  2323. page_size = 8; /* for parallel programming */
  2324. size = 4096;
  2325. min_write_delay = 9000;
  2326. max_write_delay = 9000;
  2327. readback_p1 = 0xff;
  2328. readback_p2 = 0xff;
  2329. read = " 1 0 1 0 0 0 0 0",
  2330. " 0 0 0 x a11 a10 a9 a8",
  2331. " a7 a6 a5 a4 a3 a2 a1 a0",
  2332. " o o o o o o o o";
  2333. write = " 1 1 0 0 0 0 0 0",
  2334. " 0 0 0 x a11 a10 a9 a8",
  2335. " a7 a6 a5 a4 a3 a2 a1 a0",
  2336. " i i i i i i i i";
  2337. loadpage_lo = " 1 1 0 0 0 0 0 1",
  2338. " 0 0 0 0 0 0 0 0",
  2339. " 0 0 0 0 0 a2 a1 a0",
  2340. " i i i i i i i i";
  2341. writepage = " 1 1 0 0 0 0 1 0",
  2342. " 0 0 x x a11 a10 a9 a8",
  2343. " a7 a6 a5 a4 a3 0 0 0",
  2344. " x x x x x x x x";
  2345. mode = 0x41;
  2346. delay = 20;
  2347. blocksize = 8;
  2348. readsize = 256;
  2349. ;
  2350. memory "flash"
  2351. paged = yes;
  2352. size = 131072;
  2353. page_size = 256;
  2354. num_pages = 512;
  2355. min_write_delay = 4500;
  2356. max_write_delay = 4500;
  2357. readback_p1 = 0xff;
  2358. readback_p2 = 0xff;
  2359. read_lo = " 0 0 1 0 0 0 0 0",
  2360. "a15 a14 a13 a12 a11 a10 a9 a8",
  2361. " a7 a6 a5 a4 a3 a2 a1 a0",
  2362. " o o o o o o o o";
  2363. read_hi = " 0 0 1 0 1 0 0 0",
  2364. "a15 a14 a13 a12 a11 a10 a9 a8",
  2365. " a7 a6 a5 a4 a3 a2 a1 a0",
  2366. " o o o o o o o o";
  2367. loadpage_lo = " 0 1 0 0 0 0 0 0",
  2368. " 0 0 0 x x x x x",
  2369. " x a6 a5 a4 a3 a2 a1 a0",
  2370. " i i i i i i i i";
  2371. loadpage_hi = " 0 1 0 0 1 0 0 0",
  2372. " 0 0 0 x x x x x",
  2373. " x a6 a5 a4 a3 a2 a1 a0",
  2374. " i i i i i i i i";
  2375. writepage = " 0 1 0 0 1 1 0 0",
  2376. "a15 a14 a13 a12 a11 a10 a9 a8",
  2377. " a7 x x x x x x x",
  2378. " x x x x x x x x";
  2379. mode = 0x41;
  2380. delay = 6;
  2381. blocksize = 256;
  2382. readsize = 256;
  2383. ;
  2384. memory "lfuse"
  2385. size = 1;
  2386. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  2387. "x x x x x x x x i i i i i i i i";
  2388. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  2389. "x x x x x x x x o o o o o o o o";
  2390. min_write_delay = 9000;
  2391. max_write_delay = 9000;
  2392. ;
  2393. memory "hfuse"
  2394. size = 1;
  2395. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  2396. "x x x x x x x x i i i i i i i i";
  2397. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  2398. "x x x x x x x x o o o o o o o o";
  2399. min_write_delay = 9000;
  2400. max_write_delay = 9000;
  2401. ;
  2402. memory "efuse"
  2403. size = 1;
  2404. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  2405. "x x x x x x x x x x x x i i i i";
  2406. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  2407. "x x x x x x x x o o o o o o o o";
  2408. min_write_delay = 9000;
  2409. max_write_delay = 9000;
  2410. ;
  2411. memory "lock"
  2412. size = 1;
  2413. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  2414. "x x x x x x x x x x o o o o o o";
  2415. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  2416. "x x x x x x x x 1 1 i i i i i i";
  2417. min_write_delay = 9000;
  2418. max_write_delay = 9000;
  2419. ;
  2420. memory "calibration"
  2421. size = 1;
  2422. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  2423. "0 0 0 0 0 0 0 0 o o o o o o o o";
  2424. ;
  2425. memory "signature"
  2426. size = 3;
  2427. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  2428. "x x x x x x a1 a0 o o o o o o o o";
  2429. ;
  2430. ;
  2431. #------------------------------------------------------------
  2432. # ATmega16
  2433. #------------------------------------------------------------
  2434. part
  2435. id = "m16";
  2436. desc = "ATMEGA16";
  2437. has_jtag = yes;
  2438. stk500_devcode = 0x82;
  2439. avr910_devcode = 0x74;
  2440. signature = 0x1e 0x94 0x03;
  2441. pagel = 0xd7;
  2442. bs2 = 0xa0;
  2443. chip_erase_delay = 9000;
  2444. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  2445. "x x x x x x x x x x x x x x x x";
  2446. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  2447. "x x x x x x x x x x x x x x x x";
  2448. timeout = 200;
  2449. stabdelay = 100;
  2450. cmdexedelay = 25;
  2451. synchloops = 32;
  2452. bytedelay = 0;
  2453. pollindex = 3;
  2454. pollvalue = 0x53;
  2455. predelay = 1;
  2456. postdelay = 1;
  2457. pollmethod = 0;
  2458. pp_controlstack =
  2459. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  2460. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  2461. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  2462. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  2463. hventerstabdelay = 100;
  2464. progmodedelay = 100;
  2465. latchcycles = 6;
  2466. togglevtg = 0;
  2467. poweroffdelay = 0;
  2468. resetdelayms = 0;
  2469. resetdelayus = 0;
  2470. hvleavestabdelay = 15;
  2471. resetdelay = 15;
  2472. chiperasepulsewidth = 0;
  2473. chiperasepolltimeout = 10;
  2474. programfusepulsewidth = 0;
  2475. programfusepolltimeout = 5;
  2476. programlockpulsewidth = 0;
  2477. programlockpolltimeout = 5;
  2478. idr = 0x31;
  2479. spmcr = 0x57;
  2480. allowfullpagebitstream = yes;
  2481. memory "eeprom"
  2482. paged = no; /* leave this "no" */
  2483. page_size = 4; /* for parallel programming */
  2484. size = 512;
  2485. min_write_delay = 9000;
  2486. max_write_delay = 9000;
  2487. readback_p1 = 0xff;
  2488. readback_p2 = 0xff;
  2489. read = " 1 0 1 0 0 0 0 0",
  2490. " 0 0 x x x x a9 a8",
  2491. " a7 a6 a5 a4 a3 a2 a1 a0",
  2492. " o o o o o o o o";
  2493. write = " 1 1 0 0 0 0 0 0",
  2494. " 0 0 x x x x a9 a8",
  2495. " a7 a6 a5 a4 a3 a2 a1 a0",
  2496. " i i i i i i i i";
  2497. loadpage_lo = " 1 1 0 0 0 0 0 1",
  2498. " 0 0 0 0 0 0 0 0",
  2499. " 0 0 0 0 0 0 a1 a0",
  2500. " i i i i i i i i";
  2501. writepage = " 1 1 0 0 0 0 1 0",
  2502. " 0 0 x x x x a9 a8",
  2503. " a7 a6 a5 a4 a3 a2 0 0",
  2504. " x x x x x x x x";
  2505. mode = 0x04;
  2506. delay = 10;
  2507. blocksize = 128;
  2508. readsize = 256;
  2509. ;
  2510. memory "flash"
  2511. paged = yes;
  2512. size = 16384;
  2513. page_size = 128;
  2514. num_pages = 128;
  2515. min_write_delay = 4500;
  2516. max_write_delay = 4500;
  2517. readback_p1 = 0xff;
  2518. readback_p2 = 0xff;
  2519. read_lo = " 0 0 1 0 0 0 0 0",
  2520. " 0 0 a13 a12 a11 a10 a9 a8",
  2521. " a7 a6 a5 a4 a3 a2 a1 a0",
  2522. " o o o o o o o o";
  2523. read_hi = " 0 0 1 0 1 0 0 0",
  2524. " 0 0 a13 a12 a11 a10 a9 a8",
  2525. " a7 a6 a5 a4 a3 a2 a1 a0",
  2526. " o o o o o o o o";
  2527. loadpage_lo = " 0 1 0 0 0 0 0 0",
  2528. " 0 0 x x x x x x",
  2529. " x x a5 a4 a3 a2 a1 a0",
  2530. " i i i i i i i i";
  2531. loadpage_hi = " 0 1 0 0 1 0 0 0",
  2532. " 0 0 x x x x x x",
  2533. " x x a5 a4 a3 a2 a1 a0",
  2534. " i i i i i i i i";
  2535. writepage = " 0 1 0 0 1 1 0 0",
  2536. " 0 0 a13 a12 a11 a10 a9 a8",
  2537. " a7 a6 x x x x x x",
  2538. " x x x x x x x x";
  2539. mode = 0x21;
  2540. delay = 6;
  2541. blocksize = 128;
  2542. readsize = 256;
  2543. ;
  2544. memory "lock"
  2545. size = 1;
  2546. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  2547. "x x x x x x x x x x o o o o o o";
  2548. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  2549. "x x x x x x x x 1 1 i i i i i i";
  2550. min_write_delay = 9000;
  2551. max_write_delay = 9000;
  2552. ;
  2553. memory "lfuse"
  2554. size = 1;
  2555. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  2556. "x x x x x x x x o o o o o o o o";
  2557. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  2558. "x x x x x x x x i i i i i i i i";
  2559. min_write_delay = 9000;
  2560. max_write_delay = 9000;
  2561. ;
  2562. memory "hfuse"
  2563. size = 1;
  2564. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  2565. "x x x x x x x x o o o o o o o o";
  2566. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  2567. "x x x x x x x x i i i i i i i i";
  2568. min_write_delay = 9000;
  2569. max_write_delay = 9000;
  2570. ;
  2571. memory "signature"
  2572. size = 3;
  2573. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  2574. "x x x x x x a1 a0 o o o o o o o o";
  2575. ;
  2576. memory "calibration"
  2577. size = 4;
  2578. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  2579. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  2580. ;
  2581. ;
  2582. #------------------------------------------------------------
  2583. # ATmega164P
  2584. #------------------------------------------------------------
  2585. # close to ATmega16
  2586. part
  2587. id = "m164p";
  2588. desc = "ATMEGA164P";
  2589. has_jtag = yes;
  2590. # stk500_devcode = 0x82; # no STK500v1 support
  2591. # avr910_devcode = 0x?; # try the ATmega16 one:^
  2592. avr910_devcode = 0x74;
  2593. signature = 0x1e 0x94 0x0a;
  2594. pagel = 0xd7;
  2595. bs2 = 0xa0;
  2596. chip_erase_delay = 9000;
  2597. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  2598. "x x x x x x x x x x x x x x x x";
  2599. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  2600. "x x x x x x x x x x x x x x x x";
  2601. timeout = 200;
  2602. stabdelay = 100;
  2603. cmdexedelay = 25;
  2604. synchloops = 32;
  2605. bytedelay = 0;
  2606. pollindex = 3;
  2607. pollvalue = 0x53;
  2608. predelay = 1;
  2609. postdelay = 1;
  2610. pollmethod = 0;
  2611. pp_controlstack =
  2612. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  2613. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  2614. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  2615. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  2616. hventerstabdelay = 100;
  2617. progmodedelay = 0;
  2618. latchcycles = 5;
  2619. togglevtg = 1;
  2620. poweroffdelay = 15;
  2621. resetdelayms = 1;
  2622. resetdelayus = 0;
  2623. hvleavestabdelay = 15;
  2624. chiperasepulsewidth = 0;
  2625. chiperasepolltimeout = 10;
  2626. programfusepulsewidth = 0;
  2627. programfusepolltimeout = 5;
  2628. programlockpulsewidth = 0;
  2629. programlockpolltimeout = 5;
  2630. idr = 0x31;
  2631. spmcr = 0x57;
  2632. allowfullpagebitstream = no;
  2633. memory "eeprom"
  2634. paged = no; /* leave this "no" */
  2635. page_size = 4; /* for parallel programming */
  2636. size = 512;
  2637. min_write_delay = 9000;
  2638. max_write_delay = 9000;
  2639. readback_p1 = 0xff;
  2640. readback_p2 = 0xff;
  2641. read = " 1 0 1 0 0 0 0 0",
  2642. " 0 0 x x x x a9 a8",
  2643. " a7 a6 a5 a4 a3 a2 a1 a0",
  2644. " o o o o o o o o";
  2645. write = " 1 1 0 0 0 0 0 0",
  2646. " 0 0 x x x x a9 a8",
  2647. " a7 a6 a5 a4 a3 a2 a1 a0",
  2648. " i i i i i i i i";
  2649. loadpage_lo = " 1 1 0 0 0 0 0 1",
  2650. " 0 0 0 0 0 0 0 0",
  2651. " 0 0 0 0 0 0 a1 a0",
  2652. " i i i i i i i i";
  2653. writepage = " 1 1 0 0 0 0 1 0",
  2654. " 0 0 x x x x a9 a8",
  2655. " a7 a6 a5 a4 a3 a2 0 0",
  2656. " x x x x x x x x";
  2657. mode = 0x41;
  2658. delay = 10;
  2659. blocksize = 128;
  2660. readsize = 256;
  2661. ;
  2662. memory "flash"
  2663. paged = yes;
  2664. size = 16384;
  2665. page_size = 128;
  2666. num_pages = 128;
  2667. min_write_delay = 4500;
  2668. max_write_delay = 4500;
  2669. readback_p1 = 0xff;
  2670. readback_p2 = 0xff;
  2671. read_lo = " 0 0 1 0 0 0 0 0",
  2672. " 0 0 a13 a12 a11 a10 a9 a8",
  2673. " a7 a6 a5 a4 a3 a2 a1 a0",
  2674. " o o o o o o o o";
  2675. read_hi = " 0 0 1 0 1 0 0 0",
  2676. " 0 0 a13 a12 a11 a10 a9 a8",
  2677. " a7 a6 a5 a4 a3 a2 a1 a0",
  2678. " o o o o o o o o";
  2679. loadpage_lo = " 0 1 0 0 0 0 0 0",
  2680. " 0 0 x x x x x x",
  2681. " x x a5 a4 a3 a2 a1 a0",
  2682. " i i i i i i i i";
  2683. loadpage_hi = " 0 1 0 0 1 0 0 0",
  2684. " 0 0 x x x x x x",
  2685. " x x a5 a4 a3 a2 a1 a0",
  2686. " i i i i i i i i";
  2687. writepage = " 0 1 0 0 1 1 0 0",
  2688. " 0 0 a13 a12 a11 a10 a9 a8",
  2689. " a7 a6 x x x x x x",
  2690. " x x x x x x x x";
  2691. mode = 0x21;
  2692. delay = 6;
  2693. blocksize = 128;
  2694. readsize = 256;
  2695. ;
  2696. memory "lock"
  2697. size = 1;
  2698. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  2699. "x x x x x x x x x x o o o o o o";
  2700. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  2701. "x x x x x x x x 1 1 i i i i i i";
  2702. min_write_delay = 9000;
  2703. max_write_delay = 9000;
  2704. ;
  2705. memory "lfuse"
  2706. size = 1;
  2707. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  2708. "x x x x x x x x o o o o o o o o";
  2709. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  2710. "x x x x x x x x i i i i i i i i";
  2711. min_write_delay = 9000;
  2712. max_write_delay = 9000;
  2713. ;
  2714. memory "hfuse"
  2715. size = 1;
  2716. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  2717. "x x x x x x x x o o o o o o o o";
  2718. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  2719. "x x x x x x x x i i i i i i i i";
  2720. min_write_delay = 9000;
  2721. max_write_delay = 9000;
  2722. ;
  2723. memory "efuse"
  2724. size = 1;
  2725. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  2726. "x x x x x x x x o o o o o o o o";
  2727. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  2728. "x x x x x x x x 1 1 1 1 1 i i i";
  2729. min_write_delay = 9000;
  2730. max_write_delay = 9000;
  2731. ;
  2732. memory "signature"
  2733. size = 3;
  2734. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  2735. "x x x x x x a1 a0 o o o o o o o o";
  2736. ;
  2737. memory "calibration"
  2738. size = 1;
  2739. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  2740. "0 0 0 0 0 0 0 0 o o o o o o o o";
  2741. ;
  2742. ;
  2743. #------------------------------------------------------------
  2744. # ATmega324P
  2745. #------------------------------------------------------------
  2746. # similar to ATmega164P
  2747. part
  2748. id = "m324p";
  2749. desc = "ATMEGA324P";
  2750. has_jtag = yes;
  2751. # stk500_devcode = 0x82; # no STK500v1 support
  2752. # avr910_devcode = 0x?; # try the ATmega16 one:^
  2753. avr910_devcode = 0x74;
  2754. signature = 0x1e 0x95 0x08;
  2755. pagel = 0xd7;
  2756. bs2 = 0xa0;
  2757. chip_erase_delay = 9000;
  2758. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  2759. "x x x x x x x x x x x x x x x x";
  2760. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  2761. "x x x x x x x x x x x x x x x x";
  2762. timeout = 200;
  2763. stabdelay = 100;
  2764. cmdexedelay = 25;
  2765. synchloops = 32;
  2766. bytedelay = 0;
  2767. pollindex = 3;
  2768. pollvalue = 0x53;
  2769. predelay = 1;
  2770. postdelay = 1;
  2771. pollmethod = 0;
  2772. pp_controlstack =
  2773. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  2774. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  2775. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  2776. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  2777. hventerstabdelay = 100;
  2778. progmodedelay = 0;
  2779. latchcycles = 5;
  2780. togglevtg = 1;
  2781. poweroffdelay = 15;
  2782. resetdelayms = 1;
  2783. resetdelayus = 0;
  2784. hvleavestabdelay = 15;
  2785. chiperasepulsewidth = 0;
  2786. chiperasepolltimeout = 10;
  2787. programfusepulsewidth = 0;
  2788. programfusepolltimeout = 5;
  2789. programlockpulsewidth = 0;
  2790. programlockpolltimeout = 5;
  2791. idr = 0x31;
  2792. spmcr = 0x57;
  2793. allowfullpagebitstream = no;
  2794. memory "eeprom"
  2795. paged = no; /* leave this "no" */
  2796. page_size = 4; /* for parallel programming */
  2797. size = 1024;
  2798. min_write_delay = 9000;
  2799. max_write_delay = 9000;
  2800. readback_p1 = 0xff;
  2801. readback_p2 = 0xff;
  2802. read = " 1 0 1 0 0 0 0 0",
  2803. " 0 0 x x x a10 a9 a8",
  2804. " a7 a6 a5 a4 a3 a2 a1 a0",
  2805. " o o o o o o o o";
  2806. write = " 1 1 0 0 0 0 0 0",
  2807. " 0 0 x x x a10 a9 a8",
  2808. " a7 a6 a5 a4 a3 a2 a1 a0",
  2809. " i i i i i i i i";
  2810. loadpage_lo = " 1 1 0 0 0 0 0 1",
  2811. " 0 0 0 0 0 0 0 0",
  2812. " 0 0 0 0 0 0 a1 a0",
  2813. " i i i i i i i i";
  2814. writepage = " 1 1 0 0 0 0 1 0",
  2815. " 0 0 x x x a10 a9 a8",
  2816. " a7 a6 a5 a4 a3 a2 0 0",
  2817. " x x x x x x x x";
  2818. mode = 0x41;
  2819. delay = 10;
  2820. blocksize = 128;
  2821. readsize = 256;
  2822. ;
  2823. memory "flash"
  2824. paged = yes;
  2825. size = 32768;
  2826. page_size = 128;
  2827. num_pages = 256;
  2828. min_write_delay = 4500;
  2829. max_write_delay = 4500;
  2830. readback_p1 = 0xff;
  2831. readback_p2 = 0xff;
  2832. read_lo = " 0 0 1 0 0 0 0 0",
  2833. " 0 a14 a13 a12 a11 a10 a9 a8",
  2834. " a7 a6 a5 a4 a3 a2 a1 a0",
  2835. " o o o o o o o o";
  2836. read_hi = " 0 0 1 0 1 0 0 0",
  2837. " 0 a14 a13 a12 a11 a10 a9 a8",
  2838. " a7 a6 a5 a4 a3 a2 a1 a0",
  2839. " o o o o o o o o";
  2840. loadpage_lo = " 0 1 0 0 0 0 0 0",
  2841. " 0 0 x x x x x x",
  2842. " x x a5 a4 a3 a2 a1 a0",
  2843. " i i i i i i i i";
  2844. loadpage_hi = " 0 1 0 0 1 0 0 0",
  2845. " 0 0 x x x x x x",
  2846. " x x a5 a4 a3 a2 a1 a0",
  2847. " i i i i i i i i";
  2848. writepage = " 0 1 0 0 1 1 0 0",
  2849. " 0 a14 a13 a12 a11 a10 a9 a8",
  2850. " a7 a6 x x x x x x",
  2851. " x x x x x x x x";
  2852. mode = 0x21;
  2853. delay = 6;
  2854. blocksize = 256;
  2855. readsize = 256;
  2856. ;
  2857. memory "lock"
  2858. size = 1;
  2859. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  2860. "x x x x x x x x x x o o o o o o";
  2861. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  2862. "x x x x x x x x 1 1 i i i i i i";
  2863. min_write_delay = 9000;
  2864. max_write_delay = 9000;
  2865. ;
  2866. memory "lfuse"
  2867. size = 1;
  2868. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  2869. "x x x x x x x x o o o o o o o o";
  2870. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  2871. "x x x x x x x x i i i i i i i i";
  2872. min_write_delay = 9000;
  2873. max_write_delay = 9000;
  2874. ;
  2875. memory "hfuse"
  2876. size = 1;
  2877. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  2878. "x x x x x x x x o o o o o o o o";
  2879. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  2880. "x x x x x x x x i i i i i i i i";
  2881. min_write_delay = 9000;
  2882. max_write_delay = 9000;
  2883. ;
  2884. memory "efuse"
  2885. size = 1;
  2886. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  2887. "x x x x x x x x o o o o o o o o";
  2888. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  2889. "x x x x x x x x 1 1 1 1 1 i i i";
  2890. min_write_delay = 9000;
  2891. max_write_delay = 9000;
  2892. ;
  2893. memory "signature"
  2894. size = 3;
  2895. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  2896. "x x x x x x a1 a0 o o o o o o o o";
  2897. ;
  2898. memory "calibration"
  2899. size = 1;
  2900. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  2901. "0 0 0 0 0 0 0 0 o o o o o o o o";
  2902. ;
  2903. ;
  2904. #------------------------------------------------------------
  2905. # ATmega644
  2906. #------------------------------------------------------------
  2907. # similar to ATmega164
  2908. part
  2909. id = "m644";
  2910. desc = "ATMEGA644";
  2911. has_jtag = yes;
  2912. # stk500_devcode = 0x82; # no STK500v1 support
  2913. # avr910_devcode = 0x?; # try the ATmega16 one:^
  2914. avr910_devcode = 0x74;
  2915. signature = 0x1e 0x96 0x09;
  2916. pagel = 0xd7;
  2917. bs2 = 0xa0;
  2918. chip_erase_delay = 9000;
  2919. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  2920. "x x x x x x x x x x x x x x x x";
  2921. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  2922. "x x x x x x x x x x x x x x x x";
  2923. timeout = 200;
  2924. stabdelay = 100;
  2925. cmdexedelay = 25;
  2926. synchloops = 32;
  2927. bytedelay = 0;
  2928. pollindex = 3;
  2929. pollvalue = 0x53;
  2930. predelay = 1;
  2931. postdelay = 1;
  2932. pollmethod = 0;
  2933. pp_controlstack =
  2934. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  2935. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  2936. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  2937. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
  2938. hventerstabdelay = 100;
  2939. progmodedelay = 0;
  2940. latchcycles = 6;
  2941. togglevtg = 0;
  2942. poweroffdelay = 0;
  2943. resetdelayms = 0;
  2944. resetdelayus = 0;
  2945. hvleavestabdelay = 15;
  2946. chiperasepulsewidth = 0;
  2947. chiperasepolltimeout = 10;
  2948. programfusepulsewidth = 0;
  2949. programfusepolltimeout = 5;
  2950. programlockpulsewidth = 0;
  2951. programlockpolltimeout = 5;
  2952. idr = 0x31;
  2953. spmcr = 0x57;
  2954. allowfullpagebitstream = no;
  2955. memory "eeprom"
  2956. paged = no; /* leave this "no" */
  2957. page_size = 8; /* for parallel programming */
  2958. size = 2048;
  2959. min_write_delay = 9000;
  2960. max_write_delay = 9000;
  2961. readback_p1 = 0xff;
  2962. readback_p2 = 0xff;
  2963. read = " 1 0 1 0 0 0 0 0",
  2964. " 0 0 x x a11 a10 a9 a8",
  2965. " a7 a6 a5 a4 a3 a2 a1 a0",
  2966. " o o o o o o o o";
  2967. write = " 1 1 0 0 0 0 0 0",
  2968. " 0 0 x x a11 a10 a9 a8",
  2969. " a7 a6 a5 a4 a3 a2 a1 a0",
  2970. " i i i i i i i i";
  2971. loadpage_lo = " 1 1 0 0 0 0 0 1",
  2972. " 0 0 0 0 0 0 0 0",
  2973. " 0 0 0 0 0 a2 a1 a0",
  2974. " i i i i i i i i";
  2975. writepage = " 1 1 0 0 0 0 1 0",
  2976. " 0 0 x x a11 a10 a9 a8",
  2977. " a7 a6 a5 a4 a3 0 0 0",
  2978. " x x x x x x x x";
  2979. mode = 0x41;
  2980. delay = 10;
  2981. blocksize = 128;
  2982. readsize = 256;
  2983. ;
  2984. memory "flash"
  2985. paged = yes;
  2986. size = 65536;
  2987. page_size = 256;
  2988. num_pages = 256;
  2989. min_write_delay = 4500;
  2990. max_write_delay = 4500;
  2991. readback_p1 = 0xff;
  2992. readback_p2 = 0xff;
  2993. read_lo = " 0 0 1 0 0 0 0 0",
  2994. "a15 a14 a13 a12 a11 a10 a9 a8",
  2995. " a7 a6 a5 a4 a3 a2 a1 a0",
  2996. " o o o o o o o o";
  2997. read_hi = " 0 0 1 0 1 0 0 0",
  2998. "a15 a14 a13 a12 a11 a10 a9 a8",
  2999. " a7 a6 a5 a4 a3 a2 a1 a0",
  3000. " o o o o o o o o";
  3001. loadpage_lo = " 0 1 0 0 0 0 0 0",
  3002. " 0 0 x x x x x x",
  3003. " x a6 a5 a4 a3 a2 a1 a0",
  3004. " i i i i i i i i";
  3005. loadpage_hi = " 0 1 0 0 1 0 0 0",
  3006. " 0 0 x x x x x x",
  3007. " x a6 a5 a4 a3 a2 a1 a0",
  3008. " i i i i i i i i";
  3009. writepage = " 0 1 0 0 1 1 0 0",
  3010. "a15 a14 a13 a12 a11 a10 a9 a8",
  3011. " a7 x x x x x x x",
  3012. " x x x x x x x x";
  3013. mode = 0x21;
  3014. delay = 6;
  3015. blocksize = 256;
  3016. readsize = 256;
  3017. ;
  3018. memory "lock"
  3019. size = 1;
  3020. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  3021. "x x x x x x x x x x o o o o o o";
  3022. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  3023. "x x x x x x x x 1 1 i i i i i i";
  3024. min_write_delay = 9000;
  3025. max_write_delay = 9000;
  3026. ;
  3027. memory "lfuse"
  3028. size = 1;
  3029. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  3030. "x x x x x x x x o o o o o o o o";
  3031. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  3032. "x x x x x x x x i i i i i i i i";
  3033. min_write_delay = 9000;
  3034. max_write_delay = 9000;
  3035. ;
  3036. memory "hfuse"
  3037. size = 1;
  3038. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  3039. "x x x x x x x x o o o o o o o o";
  3040. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  3041. "x x x x x x x x i i i i i i i i";
  3042. min_write_delay = 9000;
  3043. max_write_delay = 9000;
  3044. ;
  3045. memory "efuse"
  3046. size = 1;
  3047. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  3048. "x x x x x x x x o o o o o o o o";
  3049. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  3050. "x x x x x x x x 1 1 1 1 1 i i i";
  3051. min_write_delay = 9000;
  3052. max_write_delay = 9000;
  3053. ;
  3054. memory "signature"
  3055. size = 3;
  3056. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  3057. "x x x x x x a1 a0 o o o o o o o o";
  3058. ;
  3059. memory "calibration"
  3060. size = 1;
  3061. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  3062. "0 0 0 0 0 0 0 0 o o o o o o o o";
  3063. ;
  3064. ;
  3065. #------------------------------------------------------------
  3066. # ATmega644P
  3067. #------------------------------------------------------------
  3068. # similar to ATmega164p
  3069. part
  3070. id = "m644p";
  3071. desc = "ATMEGA644P";
  3072. has_jtag = yes;
  3073. # stk500_devcode = 0x82; # no STK500v1 support
  3074. # avr910_devcode = 0x?; # try the ATmega16 one:^
  3075. avr910_devcode = 0x74;
  3076. signature = 0x1e 0x96 0x0a;
  3077. pagel = 0xd7;
  3078. bs2 = 0xa0;
  3079. chip_erase_delay = 9000;
  3080. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  3081. "x x x x x x x x x x x x x x x x";
  3082. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  3083. "x x x x x x x x x x x x x x x x";
  3084. timeout = 200;
  3085. stabdelay = 100;
  3086. cmdexedelay = 25;
  3087. synchloops = 32;
  3088. bytedelay = 0;
  3089. pollindex = 3;
  3090. pollvalue = 0x53;
  3091. predelay = 1;
  3092. postdelay = 1;
  3093. pollmethod = 0;
  3094. pp_controlstack =
  3095. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  3096. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  3097. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  3098. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
  3099. hventerstabdelay = 100;
  3100. progmodedelay = 0;
  3101. latchcycles = 6;
  3102. togglevtg = 0;
  3103. poweroffdelay = 0;
  3104. resetdelayms = 0;
  3105. resetdelayus = 0;
  3106. hvleavestabdelay = 15;
  3107. chiperasepulsewidth = 0;
  3108. chiperasepolltimeout = 10;
  3109. programfusepulsewidth = 0;
  3110. programfusepolltimeout = 5;
  3111. programlockpulsewidth = 0;
  3112. programlockpolltimeout = 5;
  3113. idr = 0x31;
  3114. spmcr = 0x57;
  3115. allowfullpagebitstream = no;
  3116. memory "eeprom"
  3117. paged = no; /* leave this "no" */
  3118. page_size = 8; /* for parallel programming */
  3119. size = 2048;
  3120. min_write_delay = 9000;
  3121. max_write_delay = 9000;
  3122. readback_p1 = 0xff;
  3123. readback_p2 = 0xff;
  3124. read = " 1 0 1 0 0 0 0 0",
  3125. " 0 0 x x a11 a10 a9 a8",
  3126. " a7 a6 a5 a4 a3 a2 a1 a0",
  3127. " o o o o o o o o";
  3128. write = " 1 1 0 0 0 0 0 0",
  3129. " 0 0 x x a11 a10 a9 a8",
  3130. " a7 a6 a5 a4 a3 a2 a1 a0",
  3131. " i i i i i i i i";
  3132. loadpage_lo = " 1 1 0 0 0 0 0 1",
  3133. " 0 0 0 0 0 0 0 0",
  3134. " 0 0 0 0 0 a2 a1 a0",
  3135. " i i i i i i i i";
  3136. writepage = " 1 1 0 0 0 0 1 0",
  3137. " 0 0 x x a11 a10 a9 a8",
  3138. " a7 a6 a5 a4 a3 0 0 0",
  3139. " x x x x x x x x";
  3140. mode = 0x41;
  3141. delay = 10;
  3142. blocksize = 128;
  3143. readsize = 256;
  3144. ;
  3145. memory "flash"
  3146. paged = yes;
  3147. size = 65536;
  3148. page_size = 256;
  3149. num_pages = 256;
  3150. min_write_delay = 4500;
  3151. max_write_delay = 4500;
  3152. readback_p1 = 0xff;
  3153. readback_p2 = 0xff;
  3154. read_lo = " 0 0 1 0 0 0 0 0",
  3155. "a15 a14 a13 a12 a11 a10 a9 a8",
  3156. " a7 a6 a5 a4 a3 a2 a1 a0",
  3157. " o o o o o o o o";
  3158. read_hi = " 0 0 1 0 1 0 0 0",
  3159. "a15 a14 a13 a12 a11 a10 a9 a8",
  3160. " a7 a6 a5 a4 a3 a2 a1 a0",
  3161. " o o o o o o o o";
  3162. loadpage_lo = " 0 1 0 0 0 0 0 0",
  3163. " 0 0 x x x x x x",
  3164. " x a6 a5 a4 a3 a2 a1 a0",
  3165. " i i i i i i i i";
  3166. loadpage_hi = " 0 1 0 0 1 0 0 0",
  3167. " 0 0 x x x x x x",
  3168. " x a6 a5 a4 a3 a2 a1 a0",
  3169. " i i i i i i i i";
  3170. writepage = " 0 1 0 0 1 1 0 0",
  3171. "a15 a14 a13 a12 a11 a10 a9 a8",
  3172. " a7 x x x x x x x",
  3173. " x x x x x x x x";
  3174. mode = 0x21;
  3175. delay = 6;
  3176. blocksize = 256;
  3177. readsize = 256;
  3178. ;
  3179. memory "lock"
  3180. size = 1;
  3181. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  3182. "x x x x x x x x x x o o o o o o";
  3183. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  3184. "x x x x x x x x 1 1 i i i i i i";
  3185. min_write_delay = 9000;
  3186. max_write_delay = 9000;
  3187. ;
  3188. memory "lfuse"
  3189. size = 1;
  3190. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  3191. "x x x x x x x x o o o o o o o o";
  3192. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  3193. "x x x x x x x x i i i i i i i i";
  3194. min_write_delay = 9000;
  3195. max_write_delay = 9000;
  3196. ;
  3197. memory "hfuse"
  3198. size = 1;
  3199. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  3200. "x x x x x x x x o o o o o o o o";
  3201. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  3202. "x x x x x x x x i i i i i i i i";
  3203. min_write_delay = 9000;
  3204. max_write_delay = 9000;
  3205. ;
  3206. memory "efuse"
  3207. size = 1;
  3208. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  3209. "x x x x x x x x o o o o o o o o";
  3210. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  3211. "x x x x x x x x 1 1 1 1 1 i i i";
  3212. min_write_delay = 9000;
  3213. max_write_delay = 9000;
  3214. ;
  3215. memory "signature"
  3216. size = 3;
  3217. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  3218. "x x x x x x a1 a0 o o o o o o o o";
  3219. ;
  3220. memory "calibration"
  3221. size = 1;
  3222. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  3223. "0 0 0 0 0 0 0 0 o o o o o o o o";
  3224. ;
  3225. ;
  3226. #------------------------------------------------------------
  3227. # ATmega162
  3228. #------------------------------------------------------------
  3229. part
  3230. id = "m162";
  3231. desc = "ATMEGA162";
  3232. has_jtag = yes;
  3233. stk500_devcode = 0x83;
  3234. avr910_devcode = 0x63;
  3235. signature = 0x1e 0x94 0x04;
  3236. chip_erase_delay = 9000;
  3237. pagel = 0xd7;
  3238. bs2 = 0xa0;
  3239. idr = 0x04;
  3240. spmcr = 0x57;
  3241. allowfullpagebitstream = yes;
  3242. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  3243. "x x x x x x x x x x x x x x x x";
  3244. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  3245. "x x x x x x x x x x x x x x x x";
  3246. memory "flash"
  3247. paged = yes;
  3248. size = 16384;
  3249. page_size = 128;
  3250. num_pages = 128;
  3251. min_write_delay = 4500;
  3252. max_write_delay = 4500;
  3253. readback_p1 = 0xff;
  3254. readback_p2 = 0xff;
  3255. read_lo = " 0 0 1 0 0 0 0 0",
  3256. " 0 0 a13 a12 a11 a10 a9 a8",
  3257. " a7 a6 a5 a4 a3 a2 a1 a0",
  3258. " o o o o o o o o";
  3259. read_hi = " 0 0 1 0 1 0 0 0",
  3260. " 0 0 a13 a12 a11 a10 a9 a8",
  3261. " a7 a6 a5 a4 a3 a2 a1 a0",
  3262. " o o o o o o o o";
  3263. loadpage_lo = " 0 1 0 0 0 0 0 0",
  3264. " 0 0 x x x x x x",
  3265. " x x a5 a4 a3 a2 a1 a0",
  3266. " i i i i i i i i";
  3267. loadpage_hi = " 0 1 0 0 1 0 0 0",
  3268. " 0 0 x x x x x x",
  3269. " x x a5 a4 a3 a2 a1 a0",
  3270. " i i i i i i i i";
  3271. writepage = " 0 1 0 0 1 1 0 0",
  3272. " 0 0 a13 a12 a11 a10 a9 a8",
  3273. " a7 a6 x x x x x x",
  3274. " x x x x x x x x";
  3275. mode = 0x41;
  3276. delay = 10;
  3277. blocksize = 128;
  3278. readsize = 256;
  3279. ;
  3280. timeout = 200;
  3281. stabdelay = 100;
  3282. cmdexedelay = 25;
  3283. synchloops = 32;
  3284. bytedelay = 0;
  3285. pollindex = 3;
  3286. pollvalue = 0x53;
  3287. predelay = 1;
  3288. postdelay = 1;
  3289. pollmethod = 0;
  3290. pp_controlstack =
  3291. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  3292. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  3293. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  3294. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  3295. hventerstabdelay = 100;
  3296. progmodedelay = 0;
  3297. latchcycles = 6;
  3298. togglevtg = 0;
  3299. poweroffdelay = 0;
  3300. resetdelayms = 0;
  3301. resetdelayus = 0;
  3302. hvleavestabdelay = 15;
  3303. chiperasepulsewidth = 0;
  3304. chiperasepolltimeout = 10;
  3305. programfusepulsewidth = 0;
  3306. programfusepolltimeout = 5;
  3307. programlockpulsewidth = 0;
  3308. programlockpolltimeout = 5;
  3309. memory "eeprom"
  3310. paged = no; /* leave this "no" */
  3311. page_size = 4; /* for parallel programming */
  3312. size = 512;
  3313. min_write_delay = 9000;
  3314. max_write_delay = 9000;
  3315. readback_p1 = 0xff;
  3316. readback_p2 = 0xff;
  3317. read = " 1 0 1 0 0 0 0 0",
  3318. " 0 0 x x x x a9 a8",
  3319. " a7 a6 a5 a4 a3 a2 a1 a0",
  3320. " o o o o o o o o";
  3321. write = " 1 1 0 0 0 0 0 0",
  3322. " 0 0 x x x x a9 a8",
  3323. " a7 a6 a5 a4 a3 a2 a1 a0",
  3324. " i i i i i i i i";
  3325. loadpage_lo = " 1 1 0 0 0 0 0 1",
  3326. " 0 0 0 0 0 0 0 0",
  3327. " 0 0 0 0 0 0 a1 a0",
  3328. " i i i i i i i i";
  3329. writepage = " 1 1 0 0 0 0 1 0",
  3330. " 0 0 x x x x a9 a8",
  3331. " a7 a6 a5 a4 a3 a2 0 0",
  3332. " x x x x x x x x";
  3333. mode = 0x41;
  3334. delay = 20;
  3335. blocksize = 4;
  3336. readsize = 256;
  3337. ;
  3338. memory "lfuse"
  3339. size = 1;
  3340. min_write_delay = 16000;
  3341. max_write_delay = 16000;
  3342. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  3343. "x x x x x x x x o o o o o o o o";
  3344. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  3345. "x x x x x x x x i i i i i i i i";
  3346. ;
  3347. memory "hfuse"
  3348. size = 1;
  3349. min_write_delay = 16000;
  3350. max_write_delay = 16000;
  3351. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  3352. "x x x x x x x x o o o o o o o o";
  3353. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  3354. "x x x x x x x x i i i i i i i i";
  3355. ;
  3356. memory "efuse"
  3357. size = 1;
  3358. min_write_delay = 16000;
  3359. max_write_delay = 16000;
  3360. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  3361. "x x x x x x x x o o o o o o o o";
  3362. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  3363. "x x x x x x x x 1 1 1 1 1 i i i";
  3364. ;
  3365. memory "lock"
  3366. size = 1;
  3367. min_write_delay = 16000;
  3368. max_write_delay = 16000;
  3369. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  3370. "x x x x x x x x x x o o o o o o";
  3371. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  3372. "x x x x x x x x 1 1 i i i i i i";
  3373. ;
  3374. memory "signature"
  3375. size = 3;
  3376. read = "0 0 1 1 0 0 0 0 0 0 x x x x x x",
  3377. "x x x x x x a1 a0 o o o o o o o o";
  3378. ;
  3379. memory "calibration"
  3380. size = 1;
  3381. read = "0 0 1 1 1 0 0 0 0 0 x x x x x x",
  3382. "0 0 0 0 0 0 0 0 o o o o o o o o";
  3383. ;
  3384. ;
  3385. #------------------------------------------------------------
  3386. # ATmega163
  3387. #------------------------------------------------------------
  3388. part
  3389. id = "m163";
  3390. desc = "ATMEGA163";
  3391. stk500_devcode = 0x81;
  3392. avr910_devcode = 0x64;
  3393. signature = 0x1e 0x94 0x02;
  3394. chip_erase_delay = 32000;
  3395. pagel = 0xd7;
  3396. bs2 = 0xa0;
  3397. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  3398. "x x x x x x x x x x x x x x x x";
  3399. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  3400. "x x x x x x x x x x x x x x x x";
  3401. pp_controlstack =
  3402. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  3403. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  3404. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  3405. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  3406. hventerstabdelay = 100;
  3407. progmodedelay = 0;
  3408. latchcycles = 0;
  3409. togglevtg = 0;
  3410. poweroffdelay = 0;
  3411. resetdelayms = 0;
  3412. resetdelayus = 0;
  3413. hvleavestabdelay = 15;
  3414. chiperasepulsewidth = 0;
  3415. chiperasepolltimeout = 30;
  3416. programfusepulsewidth = 0;
  3417. programfusepolltimeout = 2;
  3418. programlockpulsewidth = 0;
  3419. programlockpolltimeout = 2;
  3420. memory "eeprom"
  3421. size = 512;
  3422. min_write_delay = 4000;
  3423. max_write_delay = 4000;
  3424. readback_p1 = 0xff;
  3425. readback_p2 = 0xff;
  3426. read = " 1 0 1 0 0 0 0 0",
  3427. " x x x x x x x a8",
  3428. " a7 a6 a5 a4 a3 a2 a1 a0",
  3429. " o o o o o o o o";
  3430. write = " 1 1 0 0 0 0 0 0",
  3431. " x x x x x x x a8",
  3432. " a7 a6 a5 a4 a3 a2 a1 a0",
  3433. " i i i i i i i i";
  3434. ;
  3435. memory "flash"
  3436. paged = yes;
  3437. size = 16384;
  3438. page_size = 128;
  3439. num_pages = 128;
  3440. min_write_delay = 16000;
  3441. max_write_delay = 16000;
  3442. readback_p1 = 0xff;
  3443. readback_p2 = 0xff;
  3444. read_lo = " 0 0 1 0 0 0 0 0",
  3445. " x x x a12 a11 a10 a9 a8",
  3446. " a7 a6 a5 a4 a3 a2 a1 a0",
  3447. " o o o o o o o o";
  3448. read_hi = " 0 0 1 0 1 0 0 0",
  3449. " x x x a12 a11 a10 a9 a8",
  3450. " a7 a6 a5 a4 a3 a2 a1 a0",
  3451. " o o o o o o o o";
  3452. loadpage_lo = " 0 1 0 0 0 0 0 0",
  3453. " x x x x x x x x",
  3454. " x x a5 a4 a3 a2 a1 a0",
  3455. " i i i i i i i i";
  3456. loadpage_hi = " 0 1 0 0 1 0 0 0",
  3457. " x x x x x x x x",
  3458. " x x a5 a4 a3 a2 a1 a0",
  3459. " i i i i i i i i";
  3460. writepage = " 0 1 0 0 1 1 0 0",
  3461. " x x x a12 a11 a10 a9 a8",
  3462. " a7 a6 x x x x x x",
  3463. " x x x x x x x x";
  3464. mode = 0x41;
  3465. delay = 6;
  3466. blocksize = 128;
  3467. readsize = 256;
  3468. ;
  3469. memory "lfuse"
  3470. size = 1;
  3471. min_write_delay = 2000;
  3472. max_write_delay = 2000;
  3473. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  3474. "x x x x x x x x o o x x o o o o";
  3475. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  3476. "x x x x x x x x i i 1 1 i i i i";
  3477. ;
  3478. memory "hfuse"
  3479. size = 1;
  3480. min_write_delay = 2000;
  3481. max_write_delay = 2000;
  3482. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  3483. "x x x x x x x x x x x x 1 o o o";
  3484. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  3485. "x x x x x x x x 1 1 1 1 1 i i i";
  3486. ;
  3487. memory "lock"
  3488. size = 1;
  3489. min_write_delay = 2000;
  3490. max_write_delay = 2000;
  3491. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  3492. "x x x x 0 x x x x x o o o o o o";
  3493. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  3494. "x x x x x x x x 1 1 i i i i i i";
  3495. ;
  3496. memory "signature"
  3497. size = 3;
  3498. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  3499. "x x x x x x a1 a0 o o o o o o o o";
  3500. ;
  3501. memory "calibration"
  3502. size = 1;
  3503. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  3504. "0 0 0 0 0 0 0 0 o o o o o o o o";
  3505. ;
  3506. ;
  3507. #------------------------------------------------------------
  3508. # ATmega169
  3509. #------------------------------------------------------------
  3510. part
  3511. id = "m169";
  3512. desc = "ATMEGA169";
  3513. has_jtag = yes;
  3514. stk500_devcode = 0x85;
  3515. avr910_devcode = 0x78;
  3516. signature = 0x1e 0x94 0x05;
  3517. chip_erase_delay = 9000;
  3518. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  3519. "x x x x x x x x x x x x x x x x";
  3520. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  3521. "x x x x x x x x x x x x x x x x";
  3522. timeout = 200;
  3523. stabdelay = 100;
  3524. cmdexedelay = 25;
  3525. synchloops = 32;
  3526. bytedelay = 0;
  3527. pollindex = 3;
  3528. pollvalue = 0x53;
  3529. predelay = 1;
  3530. postdelay = 1;
  3531. pollmethod = 1;
  3532. pp_controlstack =
  3533. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  3534. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  3535. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  3536. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  3537. hventerstabdelay = 100;
  3538. progmodedelay = 0;
  3539. latchcycles = 5;
  3540. togglevtg = 1;
  3541. poweroffdelay = 15;
  3542. resetdelayms = 1;
  3543. resetdelayus = 0;
  3544. hvleavestabdelay = 15;
  3545. chiperasepulsewidth = 0;
  3546. chiperasepolltimeout = 10;
  3547. programfusepulsewidth = 0;
  3548. programfusepolltimeout = 5;
  3549. programlockpulsewidth = 0;
  3550. programlockpolltimeout = 5;
  3551. idr = 0x31;
  3552. spmcr = 0x57;
  3553. memory "eeprom"
  3554. paged = no; /* leave this "no" */
  3555. page_size = 4; /* for parallel programming */
  3556. size = 512;
  3557. min_write_delay = 9000;
  3558. max_write_delay = 9000;
  3559. readback_p1 = 0xff;
  3560. readback_p2 = 0xff;
  3561. read = " 1 0 1 0 0 0 0 0",
  3562. " x x x x x x x a8",
  3563. " a7 a6 a5 a4 a3 a2 a1 a0",
  3564. " o o o o o o o o";
  3565. write = " 1 1 0 0 0 0 0 0",
  3566. " x x x x x x x a8",
  3567. " a7 a6 a5 a4 a3 a2 a1 a0",
  3568. " i i i i i i i i";
  3569. loadpage_lo = " 1 1 0 0 0 0 0 1",
  3570. " 0 0 0 0 0 0 0 0",
  3571. " 0 0 0 0 0 0 a1 a0",
  3572. " i i i i i i i i";
  3573. writepage = " 1 1 0 0 0 0 1 0",
  3574. " 0 0 x x x x x a8",
  3575. " a7 a6 a5 a4 a3 a2 0 0",
  3576. " x x x x x x x x";
  3577. mode = 0x41;
  3578. delay = 20;
  3579. blocksize = 4;
  3580. readsize = 256;
  3581. ;
  3582. memory "flash"
  3583. paged = yes;
  3584. size = 16384;
  3585. page_size = 128;
  3586. num_pages = 128;
  3587. min_write_delay = 4500;
  3588. max_write_delay = 4500;
  3589. readback_p1 = 0xff;
  3590. readback_p2 = 0xff;
  3591. read_lo = " 0 0 1 0 0 0 0 0",
  3592. " x x x a12 a11 a10 a9 a8",
  3593. " a7 a6 a5 a4 a3 a2 a1 a0",
  3594. " o o o o o o o o";
  3595. read_hi = " 0 0 1 0 1 0 0 0",
  3596. " x x x a12 a11 a10 a9 a8",
  3597. " a7 a6 a5 a4 a3 a2 a1 a0",
  3598. " o o o o o o o o";
  3599. loadpage_lo = " 0 1 0 0 0 0 0 0",
  3600. " x x x x x x x x",
  3601. " x x a5 a4 a3 a2 a1 a0",
  3602. " i i i i i i i i";
  3603. loadpage_hi = " 0 1 0 0 1 0 0 0",
  3604. " x x x x x x x x",
  3605. " x x a5 a4 a3 a2 a1 a0",
  3606. " i i i i i i i i";
  3607. writepage = " 0 1 0 0 1 1 0 0",
  3608. " x x x a12 a11 a10 a9 a8",
  3609. " a7 a6 x x x x x x",
  3610. " x x x x x x x x";
  3611. mode = 0x41;
  3612. delay = 6;
  3613. blocksize = 128;
  3614. readsize = 256;
  3615. ;
  3616. memory "lfuse"
  3617. size = 1;
  3618. min_write_delay = 2000;
  3619. max_write_delay = 2000;
  3620. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  3621. "x x x x x x x x o o o o o o o o";
  3622. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  3623. "x x x x x x x x i i i i i i i i";
  3624. ;
  3625. memory "hfuse"
  3626. size = 1;
  3627. min_write_delay = 2000;
  3628. max_write_delay = 2000;
  3629. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  3630. "x x x x x x x x o o o o o o o o";
  3631. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  3632. "x x x x x x x x i i i i i i i i";
  3633. ;
  3634. memory "efuse"
  3635. size = 1;
  3636. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  3637. "x x x x x x x x x x x x i i i i";
  3638. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  3639. "x x x x x x x x o o o o o o o o";
  3640. ;
  3641. memory "lock"
  3642. size = 1;
  3643. min_write_delay = 2000;
  3644. max_write_delay = 2000;
  3645. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  3646. "x x x x x x x x x x o o o o o o";
  3647. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  3648. "x x x x x x x x 1 1 i i i i i i";
  3649. ;
  3650. memory "signature"
  3651. size = 3;
  3652. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  3653. "x x x x x x a1 a0 o o o o o o o o";
  3654. ;
  3655. memory "calibration"
  3656. size = 1;
  3657. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  3658. "0 0 0 0 0 0 0 0 o o o o o o o o";
  3659. ;
  3660. ;
  3661. #------------------------------------------------------------
  3662. # ATmega329
  3663. #------------------------------------------------------------
  3664. part
  3665. id = "m329";
  3666. desc = "ATMEGA329";
  3667. has_jtag = yes;
  3668. # stk500_devcode = 0x85; # no STK500 support, only STK500v2
  3669. # avr910_devcode = 0x?; # try the ATmega169 one:
  3670. avr910_devcode = 0x75;
  3671. signature = 0x1e 0x95 0x03;
  3672. chip_erase_delay = 9000;
  3673. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  3674. "x x x x x x x x x x x x x x x x";
  3675. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  3676. "x x x x x x x x x x x x x x x x";
  3677. timeout = 200;
  3678. stabdelay = 100;
  3679. cmdexedelay = 25;
  3680. synchloops = 32;
  3681. bytedelay = 0;
  3682. pollindex = 3;
  3683. pollvalue = 0x53;
  3684. predelay = 1;
  3685. postdelay = 1;
  3686. pollmethod = 1;
  3687. pp_controlstack =
  3688. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  3689. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  3690. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  3691. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  3692. hventerstabdelay = 100;
  3693. progmodedelay = 0;
  3694. latchcycles = 5;
  3695. togglevtg = 1;
  3696. poweroffdelay = 15;
  3697. resetdelayms = 1;
  3698. resetdelayus = 0;
  3699. hvleavestabdelay = 15;
  3700. chiperasepulsewidth = 0;
  3701. chiperasepolltimeout = 10;
  3702. programfusepulsewidth = 0;
  3703. programfusepolltimeout = 5;
  3704. programlockpulsewidth = 0;
  3705. programlockpolltimeout = 5;
  3706. idr = 0x31;
  3707. spmcr = 0x57;
  3708. memory "eeprom"
  3709. paged = no; /* leave this "no" */
  3710. page_size = 4; /* for parallel programming */
  3711. size = 1024;
  3712. min_write_delay = 9000;
  3713. max_write_delay = 9000;
  3714. readback_p1 = 0xff;
  3715. readback_p2 = 0xff;
  3716. read = " 1 0 1 0 0 0 0 0",
  3717. " x x x x x x a9 a8",
  3718. " a7 a6 a5 a4 a3 a2 a1 a0",
  3719. " o o o o o o o o";
  3720. write = " 1 1 0 0 0 0 0 0",
  3721. " x x x x x x a9 a8",
  3722. " a7 a6 a5 a4 a3 a2 a1 a0",
  3723. " i i i i i i i i";
  3724. loadpage_lo = " 1 1 0 0 0 0 0 1",
  3725. " 0 0 0 0 0 0 0 0",
  3726. " 0 0 0 0 0 0 a1 a0",
  3727. " i i i i i i i i";
  3728. writepage = " 1 1 0 0 0 0 1 0",
  3729. " 0 0 x x x x a9 a8",
  3730. " a7 a6 a5 a4 a3 a2 0 0",
  3731. " x x x x x x x x";
  3732. mode = 0x41;
  3733. delay = 20;
  3734. blocksize = 8;
  3735. readsize = 256;
  3736. ;
  3737. memory "flash"
  3738. paged = yes;
  3739. size = 32768;
  3740. page_size = 128;
  3741. num_pages = 256;
  3742. min_write_delay = 4500;
  3743. max_write_delay = 4500;
  3744. readback_p1 = 0xff;
  3745. readback_p2 = 0xff;
  3746. read_lo = " 0 0 1 0 0 0 0 0",
  3747. " x a14 a13 a12 a11 a10 a9 a8",
  3748. " a7 a6 a5 a4 a3 a2 a1 a0",
  3749. " o o o o o o o o";
  3750. read_hi = " 0 0 1 0 1 0 0 0",
  3751. " x a14 a13 a12 a11 a10 a9 a8",
  3752. " a7 a6 a5 a4 a3 a2 a1 a0",
  3753. " o o o o o o o o";
  3754. loadpage_lo = " 0 1 0 0 0 0 0 0",
  3755. " x x x x x x x x",
  3756. " x x a5 a4 a3 a2 a1 a0",
  3757. " i i i i i i i i";
  3758. loadpage_hi = " 0 1 0 0 1 0 0 0",
  3759. " x x x x x x x x",
  3760. " x x a5 a4 a3 a2 a1 a0",
  3761. " i i i i i i i i";
  3762. writepage = " 0 1 0 0 1 1 0 0",
  3763. " x x x a12 a11 a10 a9 a8",
  3764. " a7 a6 x x x x x x",
  3765. " x x x x x x x x";
  3766. mode = 0x41;
  3767. delay = 6;
  3768. blocksize = 256;
  3769. readsize = 256;
  3770. ;
  3771. memory "lfuse"
  3772. size = 1;
  3773. min_write_delay = 4500;
  3774. max_write_delay = 4500;
  3775. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  3776. "x x x x x x x x o o o o o o o o";
  3777. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  3778. "x x x x x x x x i i i i i i i i";
  3779. ;
  3780. memory "hfuse"
  3781. size = 1;
  3782. min_write_delay = 4500;
  3783. max_write_delay = 4500;
  3784. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  3785. "x x x x x x x x o o o o o o o o";
  3786. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  3787. "x x x x x x x x i i i i i i i i";
  3788. ;
  3789. memory "efuse"
  3790. size = 1;
  3791. min_write_delay = 4500;
  3792. max_write_delay = 4500;
  3793. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  3794. "x x x x x x x x o o o o o o o o";
  3795. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  3796. "x x x x x x x x x x x x x i i i";
  3797. ;
  3798. memory "lock"
  3799. size = 1;
  3800. min_write_delay = 4500;
  3801. max_write_delay = 4500;
  3802. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  3803. "x x x x x x x x x x o o o o o o";
  3804. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  3805. "x x x x x x x x 1 1 i i i i i i";
  3806. ;
  3807. memory "signature"
  3808. size = 3;
  3809. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  3810. "x x x x x x a1 a0 o o o o o o o o";
  3811. ;
  3812. memory "calibration"
  3813. size = 1;
  3814. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  3815. "0 0 0 0 0 0 0 0 o o o o o o o o";
  3816. ;
  3817. ;
  3818. #------------------------------------------------------------
  3819. # ATmega3290
  3820. #------------------------------------------------------------
  3821. # identical to ATmega329
  3822. part
  3823. id = "m3290";
  3824. desc = "ATMEGA3290";
  3825. has_jtag = yes;
  3826. # stk500_devcode = 0x85; # no STK500 support, only STK500v2
  3827. # avr910_devcode = 0x?; # try the ATmega169 one:
  3828. avr910_devcode = 0x75;
  3829. signature = 0x1e 0x95 0x04;
  3830. chip_erase_delay = 9000;
  3831. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  3832. "x x x x x x x x x x x x x x x x";
  3833. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  3834. "x x x x x x x x x x x x x x x x";
  3835. timeout = 200;
  3836. stabdelay = 100;
  3837. cmdexedelay = 25;
  3838. synchloops = 32;
  3839. bytedelay = 0;
  3840. pollindex = 3;
  3841. pollvalue = 0x53;
  3842. predelay = 1;
  3843. postdelay = 1;
  3844. pollmethod = 1;
  3845. pp_controlstack =
  3846. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  3847. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  3848. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  3849. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  3850. hventerstabdelay = 100;
  3851. progmodedelay = 0;
  3852. latchcycles = 5;
  3853. togglevtg = 1;
  3854. poweroffdelay = 15;
  3855. resetdelayms = 1;
  3856. resetdelayus = 0;
  3857. hvleavestabdelay = 15;
  3858. chiperasepulsewidth = 0;
  3859. chiperasepolltimeout = 10;
  3860. programfusepulsewidth = 0;
  3861. programfusepolltimeout = 5;
  3862. programlockpulsewidth = 0;
  3863. programlockpolltimeout = 5;
  3864. idr = 0x31;
  3865. spmcr = 0x57;
  3866. memory "eeprom"
  3867. paged = no; /* leave this "no" */
  3868. page_size = 4; /* for parallel programming */
  3869. size = 1024;
  3870. min_write_delay = 9000;
  3871. max_write_delay = 9000;
  3872. readback_p1 = 0xff;
  3873. readback_p2 = 0xff;
  3874. read = " 1 0 1 0 0 0 0 0",
  3875. " x x x x x x a9 a8",
  3876. " a7 a6 a5 a4 a3 a2 a1 a0",
  3877. " o o o o o o o o";
  3878. write = " 1 1 0 0 0 0 0 0",
  3879. " x x x x x x a9 a8",
  3880. " a7 a6 a5 a4 a3 a2 a1 a0",
  3881. " i i i i i i i i";
  3882. loadpage_lo = " 1 1 0 0 0 0 0 1",
  3883. " 0 0 0 0 0 0 0 0",
  3884. " 0 0 0 0 0 0 a1 a0",
  3885. " i i i i i i i i";
  3886. writepage = " 1 1 0 0 0 0 1 0",
  3887. " 0 0 x x x x a9 a8",
  3888. " a7 a6 a5 a4 a3 a3 0 0",
  3889. " x x x x x x x x";
  3890. mode = 0x41;
  3891. delay = 20;
  3892. blocksize = 8;
  3893. readsize = 256;
  3894. ;
  3895. memory "flash"
  3896. paged = yes;
  3897. size = 32768;
  3898. page_size = 128;
  3899. num_pages = 256;
  3900. min_write_delay = 4500;
  3901. max_write_delay = 4500;
  3902. readback_p1 = 0xff;
  3903. readback_p2 = 0xff;
  3904. read_lo = " 0 0 1 0 0 0 0 0",
  3905. " x a14 a13 a12 a11 a10 a9 a8",
  3906. " a7 a6 a5 a4 a3 a2 a1 a0",
  3907. " o o o o o o o o";
  3908. read_hi = " 0 0 1 0 1 0 0 0",
  3909. " x a14 a13 a12 a11 a10 a9 a8",
  3910. " a7 a6 a5 a4 a3 a2 a1 a0",
  3911. " o o o o o o o o";
  3912. loadpage_lo = " 0 1 0 0 0 0 0 0",
  3913. " x x x x x x x x",
  3914. " x x a5 a4 a3 a2 a1 a0",
  3915. " i i i i i i i i";
  3916. loadpage_hi = " 0 1 0 0 1 0 0 0",
  3917. " x x x x x x x x",
  3918. " x x a5 a4 a3 a2 a1 a0",
  3919. " i i i i i i i i";
  3920. writepage = " 0 1 0 0 1 1 0 0",
  3921. " x x x a12 a11 a10 a9 a8",
  3922. " a7 a6 x x x x x x",
  3923. " x x x x x x x x";
  3924. mode = 0x41;
  3925. delay = 6;
  3926. blocksize = 256;
  3927. readsize = 256;
  3928. ;
  3929. memory "lfuse"
  3930. size = 1;
  3931. min_write_delay = 4500;
  3932. max_write_delay = 4500;
  3933. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  3934. "x x x x x x x x o o o o o o o o";
  3935. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  3936. "x x x x x x x x i i i i i i i i";
  3937. ;
  3938. memory "hfuse"
  3939. size = 1;
  3940. min_write_delay = 4500;
  3941. max_write_delay = 4500;
  3942. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  3943. "x x x x x x x x o o o o o o o o";
  3944. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  3945. "x x x x x x x x i i i i i i i i";
  3946. ;
  3947. memory "efuse"
  3948. size = 1;
  3949. min_write_delay = 4500;
  3950. max_write_delay = 4500;
  3951. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  3952. "x x x x x x x x o o o o o o o o";
  3953. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  3954. "x x x x x x x x x x x x x i i i";
  3955. ;
  3956. memory "lock"
  3957. size = 1;
  3958. min_write_delay = 4500;
  3959. max_write_delay = 4500;
  3960. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  3961. "x x x x x x x x x x o o o o o o";
  3962. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  3963. "x x x x x x x x 1 1 i i i i i i";
  3964. ;
  3965. memory "signature"
  3966. size = 3;
  3967. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  3968. "x x x x x x a1 a0 o o o o o o o o";
  3969. ;
  3970. memory "calibration"
  3971. size = 1;
  3972. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  3973. "0 0 0 0 0 0 0 0 o o o o o o o o";
  3974. ;
  3975. ;
  3976. #------------------------------------------------------------
  3977. # ATmega649
  3978. #------------------------------------------------------------
  3979. part
  3980. id = "m649";
  3981. desc = "ATMEGA649";
  3982. has_jtag = yes;
  3983. # stk500_devcode = 0x85; # no STK500 support, only STK500v2
  3984. # avr910_devcode = 0x?; # try the ATmega169 one:
  3985. avr910_devcode = 0x75;
  3986. signature = 0x1e 0x96 0x03;
  3987. chip_erase_delay = 9000;
  3988. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  3989. "x x x x x x x x x x x x x x x x";
  3990. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  3991. "x x x x x x x x x x x x x x x x";
  3992. timeout = 200;
  3993. stabdelay = 100;
  3994. cmdexedelay = 25;
  3995. synchloops = 32;
  3996. bytedelay = 0;
  3997. pollindex = 3;
  3998. pollvalue = 0x53;
  3999. predelay = 1;
  4000. postdelay = 1;
  4001. pollmethod = 1;
  4002. pp_controlstack =
  4003. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  4004. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  4005. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  4006. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  4007. hventerstabdelay = 100;
  4008. progmodedelay = 0;
  4009. latchcycles = 5;
  4010. togglevtg = 1;
  4011. poweroffdelay = 15;
  4012. resetdelayms = 1;
  4013. resetdelayus = 0;
  4014. hvleavestabdelay = 15;
  4015. chiperasepulsewidth = 0;
  4016. chiperasepolltimeout = 10;
  4017. programfusepulsewidth = 0;
  4018. programfusepolltimeout = 5;
  4019. programlockpulsewidth = 0;
  4020. programlockpolltimeout = 5;
  4021. idr = 0x31;
  4022. spmcr = 0x57;
  4023. memory "eeprom"
  4024. paged = no; /* leave this "no" */
  4025. page_size = 8; /* for parallel programming */
  4026. size = 2048;
  4027. min_write_delay = 9000;
  4028. max_write_delay = 9000;
  4029. readback_p1 = 0xff;
  4030. readback_p2 = 0xff;
  4031. read = " 1 0 1 0 0 0 0 0",
  4032. " x x x x x a10 a9 a8",
  4033. " a7 a6 a5 a4 a3 a2 a1 a0",
  4034. " o o o o o o o o";
  4035. write = " 1 1 0 0 0 0 0 0",
  4036. " x x x x x a10 a9 a8",
  4037. " a7 a6 a5 a4 a3 a2 a1 a0",
  4038. " i i i i i i i i";
  4039. loadpage_lo = " 1 1 0 0 0 0 0 1",
  4040. " 0 0 0 0 0 0 0 0",
  4041. " 0 0 0 0 0 a2 a1 a0",
  4042. " i i i i i i i i";
  4043. writepage = " 1 1 0 0 0 0 1 0",
  4044. " 0 0 x x x a10 a9 a8",
  4045. " a7 a6 a5 a4 a3 0 0 0",
  4046. " x x x x x x x x";
  4047. mode = 0x41;
  4048. delay = 20;
  4049. blocksize = 8;
  4050. readsize = 256;
  4051. ;
  4052. memory "flash"
  4053. paged = yes;
  4054. size = 65536;
  4055. page_size = 256;
  4056. num_pages = 256;
  4057. min_write_delay = 4500;
  4058. max_write_delay = 4500;
  4059. readback_p1 = 0xff;
  4060. readback_p2 = 0xff;
  4061. read_lo = " 0 0 1 0 0 0 0 0",
  4062. "a15 a14 a13 a12 a11 a10 a9 a8",
  4063. " a7 a6 a5 a4 a3 a2 a1 a0",
  4064. " o o o o o o o o";
  4065. read_hi = " 0 0 1 0 1 0 0 0",
  4066. "a15 a14 a13 a12 a11 a10 a9 a8",
  4067. " a7 a6 a5 a4 a3 a2 a1 a0",
  4068. " o o o o o o o o";
  4069. loadpage_lo = " 0 1 0 0 0 0 0 0",
  4070. " x x x x x x x x",
  4071. " x a6 a5 a4 a3 a2 a1 a0",
  4072. " i i i i i i i i";
  4073. loadpage_hi = " 0 1 0 0 1 0 0 0",
  4074. " x x x x x x x x",
  4075. " x a6 a5 a4 a3 a2 a1 a0",
  4076. " i i i i i i i i";
  4077. writepage = " 0 1 0 0 1 1 0 0",
  4078. " x x x a12 a11 a10 a9 a8",
  4079. " a7 x x x x x x x",
  4080. " x x x x x x x x";
  4081. mode = 0x41;
  4082. delay = 6;
  4083. blocksize = 256;
  4084. readsize = 256;
  4085. ;
  4086. memory "lfuse"
  4087. size = 1;
  4088. min_write_delay = 4500;
  4089. max_write_delay = 4500;
  4090. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  4091. "x x x x x x x x o o o o o o o o";
  4092. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  4093. "x x x x x x x x i i i i i i i i";
  4094. ;
  4095. memory "hfuse"
  4096. size = 1;
  4097. min_write_delay = 4500;
  4098. max_write_delay = 4500;
  4099. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  4100. "x x x x x x x x o o o o o o o o";
  4101. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  4102. "x x x x x x x x i i i i i i i i";
  4103. ;
  4104. memory "efuse"
  4105. size = 1;
  4106. min_write_delay = 4500;
  4107. max_write_delay = 4500;
  4108. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  4109. "x x x x x x x x o o o o o o o o";
  4110. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  4111. "x x x x x x x x x x x x x i i i";
  4112. ;
  4113. memory "lock"
  4114. size = 1;
  4115. min_write_delay = 4500;
  4116. max_write_delay = 4500;
  4117. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  4118. "x x x x x x x x x x o o o o o o";
  4119. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  4120. "x x x x x x x x 1 1 i i i i i i";
  4121. ;
  4122. memory "signature"
  4123. size = 3;
  4124. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  4125. "x x x x x x a1 a0 o o o o o o o o";
  4126. ;
  4127. memory "calibration"
  4128. size = 1;
  4129. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  4130. "0 0 0 0 0 0 0 0 o o o o o o o o";
  4131. ;
  4132. ;
  4133. #------------------------------------------------------------
  4134. # ATmega6490
  4135. #------------------------------------------------------------
  4136. # identical to ATmega649
  4137. part
  4138. id = "m6490";
  4139. desc = "ATMEGA6490";
  4140. has_jtag = yes;
  4141. # stk500_devcode = 0x85; # no STK500 support, only STK500v2
  4142. # avr910_devcode = 0x?; # try the ATmega169 one:
  4143. avr910_devcode = 0x75;
  4144. signature = 0x1e 0x96 0x04;
  4145. chip_erase_delay = 9000;
  4146. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  4147. "x x x x x x x x x x x x x x x x";
  4148. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  4149. "x x x x x x x x x x x x x x x x";
  4150. timeout = 200;
  4151. stabdelay = 100;
  4152. cmdexedelay = 25;
  4153. synchloops = 32;
  4154. bytedelay = 0;
  4155. pollindex = 3;
  4156. pollvalue = 0x53;
  4157. predelay = 1;
  4158. postdelay = 1;
  4159. pollmethod = 1;
  4160. pp_controlstack =
  4161. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  4162. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  4163. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  4164. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  4165. hventerstabdelay = 100;
  4166. progmodedelay = 0;
  4167. latchcycles = 5;
  4168. togglevtg = 1;
  4169. poweroffdelay = 15;
  4170. resetdelayms = 1;
  4171. resetdelayus = 0;
  4172. hvleavestabdelay = 15;
  4173. chiperasepulsewidth = 0;
  4174. chiperasepolltimeout = 10;
  4175. programfusepulsewidth = 0;
  4176. programfusepolltimeout = 5;
  4177. programlockpulsewidth = 0;
  4178. programlockpolltimeout = 5;
  4179. idr = 0x31;
  4180. spmcr = 0x57;
  4181. memory "eeprom"
  4182. paged = no; /* leave this "no" */
  4183. page_size = 8; /* for parallel programming */
  4184. size = 2048;
  4185. min_write_delay = 9000;
  4186. max_write_delay = 9000;
  4187. readback_p1 = 0xff;
  4188. readback_p2 = 0xff;
  4189. read = " 1 0 1 0 0 0 0 0",
  4190. " x x x x x a10 a9 a8",
  4191. " a7 a6 a5 a4 a3 a2 a1 a0",
  4192. " o o o o o o o o";
  4193. write = " 1 1 0 0 0 0 0 0",
  4194. " x x x x x a10 a9 a8",
  4195. " a7 a6 a5 a4 a3 a2 a1 a0",
  4196. " i i i i i i i i";
  4197. loadpage_lo = " 1 1 0 0 0 0 0 1",
  4198. " 0 0 0 0 0 0 0 0",
  4199. " 0 0 0 0 0 a2 a1 a0",
  4200. " i i i i i i i i";
  4201. writepage = " 1 1 0 0 0 0 1 0",
  4202. " 0 0 x x x x x a8",
  4203. " a7 a6 a5 a4 a3 0 0 0",
  4204. " x x x x x x x x";
  4205. loadpage_lo = " 1 1 0 0 0 0 0 1",
  4206. " 0 0 0 0 0 0 0 0",
  4207. " 0 0 0 0 0 a2 a1 a0",
  4208. " i i i i i i i i";
  4209. writepage = " 1 1 0 0 0 0 1 0",
  4210. " 0 0 x x x a10 a9 a8",
  4211. " a7 a6 a5 a4 a3 0 0 0",
  4212. " x x x x x x x x";
  4213. mode = 0x41;
  4214. delay = 20;
  4215. blocksize = 8;
  4216. readsize = 256;
  4217. ;
  4218. memory "flash"
  4219. paged = yes;
  4220. size = 65536;
  4221. page_size = 256;
  4222. num_pages = 256;
  4223. min_write_delay = 4500;
  4224. max_write_delay = 4500;
  4225. readback_p1 = 0xff;
  4226. readback_p2 = 0xff;
  4227. read_lo = " 0 0 1 0 0 0 0 0",
  4228. "a15 a14 a13 a12 a11 a10 a9 a8",
  4229. " a7 a6 a5 a4 a3 a2 a1 a0",
  4230. " o o o o o o o o";
  4231. read_hi = " 0 0 1 0 1 0 0 0",
  4232. "a15 a14 a13 a12 a11 a10 a9 a8",
  4233. " a7 a6 a5 a4 a3 a2 a1 a0",
  4234. " o o o o o o o o";
  4235. loadpage_lo = " 0 1 0 0 0 0 0 0",
  4236. " x x x x x x x x",
  4237. " x a6 a5 a4 a3 a2 a1 a0",
  4238. " i i i i i i i i";
  4239. loadpage_hi = " 0 1 0 0 1 0 0 0",
  4240. " x x x x x x x x",
  4241. " x a6 a5 a4 a3 a2 a1 a0",
  4242. " i i i i i i i i";
  4243. writepage = " 0 1 0 0 1 1 0 0",
  4244. " x x x a12 a11 a10 a9 a8",
  4245. " a7 x x x x x x x",
  4246. " x x x x x x x x";
  4247. mode = 0x41;
  4248. delay = 6;
  4249. blocksize = 256;
  4250. readsize = 256;
  4251. ;
  4252. memory "lfuse"
  4253. size = 1;
  4254. min_write_delay = 4500;
  4255. max_write_delay = 4500;
  4256. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  4257. "x x x x x x x x o o o o o o o o";
  4258. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  4259. "x x x x x x x x i i i i i i i i";
  4260. ;
  4261. memory "hfuse"
  4262. size = 1;
  4263. min_write_delay = 4500;
  4264. max_write_delay = 4500;
  4265. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  4266. "x x x x x x x x o o o o o o o o";
  4267. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  4268. "x x x x x x x x i i i i i i i i";
  4269. ;
  4270. memory "efuse"
  4271. size = 1;
  4272. min_write_delay = 4500;
  4273. max_write_delay = 4500;
  4274. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  4275. "x x x x x x x x o o o o o o o o";
  4276. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  4277. "x x x x x x x x x x x x x i i i";
  4278. ;
  4279. memory "lock"
  4280. size = 1;
  4281. min_write_delay = 4500;
  4282. max_write_delay = 4500;
  4283. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  4284. "x x x x x x x x x x o o o o o o";
  4285. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  4286. "x x x x x x x x 1 1 i i i i i i";
  4287. ;
  4288. memory "signature"
  4289. size = 3;
  4290. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  4291. "x x x x x x a1 a0 o o o o o o o o";
  4292. ;
  4293. memory "calibration"
  4294. size = 1;
  4295. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  4296. "0 0 0 0 0 0 0 0 o o o o o o o o";
  4297. ;
  4298. ;
  4299. #------------------------------------------------------------
  4300. # ATmega32
  4301. #------------------------------------------------------------
  4302. part
  4303. id = "m32";
  4304. desc = "ATMEGA32";
  4305. has_jtag = yes;
  4306. stk500_devcode = 0x91;
  4307. avr910_devcode = 0x72;
  4308. signature = 0x1e 0x95 0x02;
  4309. chip_erase_delay = 9000;
  4310. pagel = 0xd7;
  4311. bs2 = 0xa0;
  4312. reset = dedicated;
  4313. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  4314. "x x x x x x x x x x x x x x x x";
  4315. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  4316. "x x x x x x x x x x x x x x x x";
  4317. timeout = 200;
  4318. stabdelay = 100;
  4319. cmdexedelay = 25;
  4320. synchloops = 32;
  4321. bytedelay = 0;
  4322. pollindex = 3;
  4323. pollvalue = 0x53;
  4324. predelay = 1;
  4325. postdelay = 1;
  4326. pollmethod = 0;
  4327. pp_controlstack =
  4328. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  4329. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  4330. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  4331. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  4332. hventerstabdelay = 100;
  4333. progmodedelay = 0;
  4334. latchcycles = 6;
  4335. togglevtg = 0;
  4336. poweroffdelay = 0;
  4337. resetdelayms = 0;
  4338. resetdelayus = 0;
  4339. hvleavestabdelay = 15;
  4340. chiperasepulsewidth = 0;
  4341. chiperasepolltimeout = 10;
  4342. programfusepulsewidth = 0;
  4343. programfusepolltimeout = 5;
  4344. programlockpulsewidth = 0;
  4345. programlockpolltimeout = 5;
  4346. idr = 0x31;
  4347. spmcr = 0x57;
  4348. allowfullpagebitstream = yes;
  4349. memory "eeprom"
  4350. paged = no; /* leave this "no" */
  4351. page_size = 4; /* for parallel programming */
  4352. size = 1024;
  4353. min_write_delay = 9000;
  4354. max_write_delay = 9000;
  4355. readback_p1 = 0xff;
  4356. readback_p2 = 0xff;
  4357. read = " 1 0 1 0 0 0 0 0",
  4358. " 0 0 x x x x a9 a8",
  4359. " a7 a6 a5 a4 a3 a2 a1 a0",
  4360. " o o o o o o o o";
  4361. write = " 1 1 0 0 0 0 0 0",
  4362. " 0 0 x x x x a9 a8",
  4363. " a7 a6 a5 a4 a3 a2 a1 a0",
  4364. " i i i i i i i i";
  4365. loadpage_lo = " 1 1 0 0 0 0 0 1",
  4366. " 0 0 0 0 0 0 0 0",
  4367. " 0 0 0 0 0 0 a1 a0",
  4368. " i i i i i i i i";
  4369. writepage = " 1 1 0 0 0 0 1 0",
  4370. " 0 0 x x x x a9 a8",
  4371. " a7 a6 a5 a4 a3 a2 0 0",
  4372. " x x x x x x x x";
  4373. mode = 0x04;
  4374. delay = 10;
  4375. blocksize = 64;
  4376. readsize = 256;
  4377. ;
  4378. memory "flash"
  4379. paged = yes;
  4380. size = 32768;
  4381. page_size = 128;
  4382. num_pages = 256;
  4383. min_write_delay = 4500;
  4384. max_write_delay = 4500;
  4385. readback_p1 = 0xff;
  4386. readback_p2 = 0xff;
  4387. read_lo = " 0 0 1 0 0 0 0 0",
  4388. " 0 0 a13 a12 a11 a10 a9 a8",
  4389. " a7 a6 a5 a4 a3 a2 a1 a0",
  4390. " o o o o o o o o";
  4391. read_hi = " 0 0 1 0 1 0 0 0",
  4392. " 0 0 a13 a12 a11 a10 a9 a8",
  4393. " a7 a6 a5 a4 a3 a2 a1 a0",
  4394. " o o o o o o o o";
  4395. loadpage_lo = " 0 1 0 0 0 0 0 0",
  4396. " 0 0 x x x x x x",
  4397. " x x a5 a4 a3 a2 a1 a0",
  4398. " i i i i i i i i";
  4399. loadpage_hi = " 0 1 0 0 1 0 0 0",
  4400. " 0 0 x x x x x x",
  4401. " x x a5 a4 a3 a2 a1 a0",
  4402. " i i i i i i i i";
  4403. writepage = " 0 1 0 0 1 1 0 0",
  4404. " 0 0 a13 a12 a11 a10 a9 a8",
  4405. " a7 a6 x x x x x x",
  4406. " x x x x x x x x";
  4407. mode = 0x21;
  4408. delay = 6;
  4409. blocksize = 64;
  4410. readsize = 256;
  4411. ;
  4412. memory "lfuse"
  4413. size = 1;
  4414. min_write_delay = 2000;
  4415. max_write_delay = 2000;
  4416. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  4417. "x x x x x x x x o o o o o o o o";
  4418. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  4419. "x x x x x x x x i i i i i i i i";
  4420. ;
  4421. memory "hfuse"
  4422. size = 1;
  4423. min_write_delay = 2000;
  4424. max_write_delay = 2000;
  4425. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  4426. "x x x x x x x x o o o o o o o o";
  4427. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  4428. "x x x x x x x x i i i i i i i i";
  4429. ;
  4430. memory "lock"
  4431. size = 1;
  4432. min_write_delay = 2000;
  4433. max_write_delay = 2000;
  4434. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  4435. "x x x x x x x x x x o o o o o o";
  4436. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  4437. "x x x x x x x x 1 1 i i i i i i";
  4438. ;
  4439. memory "signature"
  4440. size = 3;
  4441. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  4442. "x x x x x x a1 a0 o o o o o o o o";
  4443. ;
  4444. memory "calibration"
  4445. size = 4;
  4446. read = "0 0 1 1 1 0 0 0 0 0 x x x x x x",
  4447. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  4448. ;
  4449. ;
  4450. #------------------------------------------------------------
  4451. # ATmega161
  4452. #------------------------------------------------------------
  4453. part
  4454. id = "m161";
  4455. desc = "ATMEGA161";
  4456. stk500_devcode = 0x80;
  4457. avr910_devcode = 0x60;
  4458. signature = 0x1e 0x94 0x01;
  4459. chip_erase_delay = 28000;
  4460. pagel = 0xd7;
  4461. bs2 = 0xa0;
  4462. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  4463. "x x x x x x x x x x x x x x x x";
  4464. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  4465. "x x x x x x x x x x x x x x x x";
  4466. timeout = 200;
  4467. stabdelay = 100;
  4468. cmdexedelay = 25;
  4469. synchloops = 32;
  4470. bytedelay = 0;
  4471. pollindex = 3;
  4472. pollvalue = 0x53;
  4473. predelay = 1;
  4474. postdelay = 1;
  4475. pollmethod = 0;
  4476. pp_controlstack =
  4477. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  4478. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  4479. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  4480. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  4481. hventerstabdelay = 100;
  4482. progmodedelay = 0;
  4483. latchcycles = 0;
  4484. togglevtg = 0;
  4485. poweroffdelay = 0;
  4486. resetdelayms = 0;
  4487. resetdelayus = 0;
  4488. hvleavestabdelay = 15;
  4489. chiperasepulsewidth = 0;
  4490. chiperasepolltimeout = 30;
  4491. programfusepulsewidth = 0;
  4492. programfusepolltimeout = 2;
  4493. programlockpulsewidth = 0;
  4494. programlockpolltimeout = 2;
  4495. memory "eeprom"
  4496. size = 512;
  4497. min_write_delay = 3400;
  4498. max_write_delay = 3400;
  4499. readback_p1 = 0xff;
  4500. readback_p2 = 0xff;
  4501. read = " 1 0 1 0 0 0 0 0",
  4502. " x x x x x x x a8",
  4503. " a7 a6 a5 a4 a3 a2 a1 a0",
  4504. " o o o o o o o o";
  4505. write = " 1 1 0 0 0 0 0 0",
  4506. " x x x x x x x a8",
  4507. " a7 a6 a5 a4 a3 a2 a1 a0",
  4508. " i i i i i i i i";
  4509. mode = 0x04;
  4510. delay = 5;
  4511. blocksize = 128;
  4512. readsize = 256;
  4513. ;
  4514. memory "flash"
  4515. paged = yes;
  4516. size = 16384;
  4517. page_size = 128;
  4518. num_pages = 128;
  4519. min_write_delay = 14000;
  4520. max_write_delay = 14000;
  4521. readback_p1 = 0xff;
  4522. readback_p2 = 0xff;
  4523. read_lo = " 0 0 1 0 0 0 0 0",
  4524. " x x x a12 a11 a10 a9 a8",
  4525. " a7 a6 a5 a4 a3 a2 a1 a0",
  4526. " o o o o o o o o";
  4527. read_hi = " 0 0 1 0 1 0 0 0",
  4528. " x x x a12 a11 a10 a9 a8",
  4529. " a7 a6 a5 a4 a3 a2 a1 a0",
  4530. " o o o o o o o o";
  4531. loadpage_lo = " 0 1 0 0 0 0 0 0",
  4532. " x x x x x x x x",
  4533. " x x a5 a4 a3 a2 a1 a0",
  4534. " i i i i i i i i";
  4535. loadpage_hi = " 0 1 0 0 1 0 0 0",
  4536. " x x x x x x x x",
  4537. " x x a5 a4 a3 a2 a1 a0",
  4538. " i i i i i i i i";
  4539. writepage = " 0 1 0 0 1 1 0 0",
  4540. " x x x a12 a11 a10 a9 a8",
  4541. " a7 a6 x x x x x x",
  4542. " x x x x x x x x";
  4543. mode = 0x21;
  4544. delay = 16;
  4545. blocksize = 128;
  4546. readsize = 256;
  4547. ;
  4548. memory "fuse"
  4549. size = 1;
  4550. min_write_delay = 2000;
  4551. max_write_delay = 2000;
  4552. read = "0 1 0 1 0 0 0 0 x x x x x x x x",
  4553. "x x x x x x x x x o x o o o o o";
  4554. write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x",
  4555. "x x x x x x x x 1 i 1 i i i i i";
  4556. ;
  4557. memory "lock"
  4558. size = 1;
  4559. min_write_delay = 2000;
  4560. max_write_delay = 2000;
  4561. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  4562. "x x x x x x x x x x o o o o o o";
  4563. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  4564. "x x x x x x x x 1 1 i i i i i i";
  4565. ;
  4566. memory "signature"
  4567. size = 3;
  4568. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  4569. "x x x x x x a1 a0 o o o o o o o o";
  4570. ;
  4571. ;
  4572. #------------------------------------------------------------
  4573. # ATmega8
  4574. #------------------------------------------------------------
  4575. part
  4576. id = "m8";
  4577. desc = "ATMEGA8";
  4578. stk500_devcode = 0x70;
  4579. avr910_devcode = 0x76;
  4580. signature = 0x1e 0x93 0x07;
  4581. pagel = 0xd7;
  4582. bs2 = 0xc2;
  4583. chip_erase_delay = 10000;
  4584. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  4585. "x x x x x x x x x x x x x x x x";
  4586. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  4587. "x x x x x x x x x x x x x x x x";
  4588. timeout = 200;
  4589. stabdelay = 100;
  4590. cmdexedelay = 25;
  4591. synchloops = 32;
  4592. bytedelay = 0;
  4593. pollindex = 3;
  4594. pollvalue = 0x53;
  4595. predelay = 1;
  4596. postdelay = 1;
  4597. pollmethod = 0;
  4598. pp_controlstack =
  4599. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  4600. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  4601. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  4602. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  4603. hventerstabdelay = 100;
  4604. progmodedelay = 0;
  4605. latchcycles = 5;
  4606. togglevtg = 1;
  4607. poweroffdelay = 15;
  4608. resetdelayms = 2;
  4609. resetdelayus = 0;
  4610. hvleavestabdelay = 15;
  4611. resetdelay = 15;
  4612. chiperasepulsewidth = 0;
  4613. chiperasepolltimeout = 10;
  4614. programfusepulsewidth = 0;
  4615. programfusepolltimeout = 5;
  4616. programlockpulsewidth = 0;
  4617. programlockpolltimeout = 5;
  4618. memory "eeprom"
  4619. size = 512;
  4620. min_write_delay = 9000;
  4621. max_write_delay = 9000;
  4622. readback_p1 = 0xff;
  4623. readback_p2 = 0xff;
  4624. read = " 1 0 1 0 0 0 0 0",
  4625. " 0 0 x x x x x a8",
  4626. " a7 a6 a5 a4 a3 a2 a1 a0",
  4627. " o o o o o o o o";
  4628. write = " 1 1 0 0 0 0 0 0",
  4629. " 0 0 x x x x x a8",
  4630. " a7 a6 a5 a4 a3 a2 a1 a0",
  4631. " i i i i i i i i";
  4632. mode = 0x04;
  4633. delay = 20;
  4634. blocksize = 128;
  4635. readsize = 256;
  4636. ;
  4637. memory "flash"
  4638. paged = yes;
  4639. size = 8192;
  4640. page_size = 64;
  4641. num_pages = 128;
  4642. min_write_delay = 4500;
  4643. max_write_delay = 4500;
  4644. readback_p1 = 0xff;
  4645. readback_p2 = 0x00;
  4646. read_lo = " 0 0 1 0 0 0 0 0",
  4647. " 0 0 0 0 a11 a10 a9 a8",
  4648. " a7 a6 a5 a4 a3 a2 a1 a0",
  4649. " o o o o o o o o";
  4650. read_hi = " 0 0 1 0 1 0 0 0",
  4651. " 0 0 0 0 a11 a10 a9 a8",
  4652. " a7 a6 a5 a4 a3 a2 a1 a0",
  4653. " o o o o o o o o";
  4654. loadpage_lo = " 0 1 0 0 0 0 0 0",
  4655. " 0 0 0 0 x x x x",
  4656. " x x x a4 a3 a2 a1 a0",
  4657. " i i i i i i i i";
  4658. loadpage_hi = " 0 1 0 0 1 0 0 0",
  4659. " 0 0 0 0 x x x x",
  4660. " x x x a4 a3 a2 a1 a0",
  4661. " i i i i i i i i";
  4662. writepage = " 0 1 0 0 1 1 0 0",
  4663. " 0 0 0 0 a11 a10 a9 a8",
  4664. " a7 a6 a5 x x x x x",
  4665. " x x x x x x x x";
  4666. mode = 0x21;
  4667. delay = 10;
  4668. blocksize = 64;
  4669. readsize = 256;
  4670. ;
  4671. memory "lfuse"
  4672. size = 1;
  4673. min_write_delay = 2000;
  4674. max_write_delay = 2000;
  4675. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  4676. "x x x x x x x x o o o o o o o o";
  4677. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  4678. "x x x x x x x x i i i i i i i i";
  4679. ;
  4680. memory "hfuse"
  4681. size = 1;
  4682. min_write_delay = 2000;
  4683. max_write_delay = 2000;
  4684. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  4685. "x x x x x x x x o o o o o o o o";
  4686. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  4687. "x x x x x x x x i i i i i i i i";
  4688. ;
  4689. memory "lock"
  4690. size = 1;
  4691. min_write_delay = 2000;
  4692. max_write_delay = 2000;
  4693. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  4694. "x x x x x x x x x x o o o o o o";
  4695. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  4696. "x x x x x x x x 1 1 i i i i i i";
  4697. ;
  4698. memory "calibration"
  4699. size = 4;
  4700. read = "0 0 1 1 1 0 0 0 0 0 x x x x x x",
  4701. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  4702. ;
  4703. memory "signature"
  4704. size = 3;
  4705. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  4706. "x x x x x x a1 a0 o o o o o o o o";
  4707. ;
  4708. ;
  4709. #------------------------------------------------------------
  4710. # ATmega8515
  4711. #------------------------------------------------------------
  4712. part
  4713. id = "m8515";
  4714. desc = "ATMEGA8515";
  4715. stk500_devcode = 0x63;
  4716. avr910_devcode = 0x3A;
  4717. signature = 0x1e 0x93 0x06;
  4718. chip_erase_delay = 9000;
  4719. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  4720. "x x x x x x x x x x x x x x x x";
  4721. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  4722. "x x x x x x x x x x x x x x x x";
  4723. timeout = 200;
  4724. stabdelay = 100;
  4725. cmdexedelay = 25;
  4726. synchloops = 32;
  4727. bytedelay = 0;
  4728. pollindex = 3;
  4729. pollvalue = 0x53;
  4730. predelay = 1;
  4731. postdelay = 1;
  4732. pollmethod = 0;
  4733. pp_controlstack =
  4734. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  4735. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  4736. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  4737. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  4738. hventerstabdelay = 100;
  4739. progmodedelay = 0;
  4740. latchcycles = 6;
  4741. togglevtg = 0;
  4742. poweroffdelay = 0;
  4743. resetdelayms = 0;
  4744. resetdelayus = 0;
  4745. hvleavestabdelay = 15;
  4746. chiperasepulsewidth = 0;
  4747. chiperasepolltimeout = 10;
  4748. programfusepulsewidth = 0;
  4749. programfusepolltimeout = 5;
  4750. programlockpulsewidth = 0;
  4751. programlockpolltimeout = 5;
  4752. memory "eeprom"
  4753. size = 512;
  4754. min_write_delay = 9000;
  4755. max_write_delay = 9000;
  4756. readback_p1 = 0xff;
  4757. readback_p2 = 0xff;
  4758. read = " 1 0 1 0 0 0 0 0",
  4759. " 0 0 x x x x x a8",
  4760. " a7 a6 a5 a4 a3 a2 a1 a0",
  4761. " o o o o o o o o";
  4762. write = " 1 1 0 0 0 0 0 0",
  4763. " 0 0 x x x x x a8",
  4764. " a7 a6 a5 a4 a3 a2 a1 a0",
  4765. " i i i i i i i i";
  4766. mode = 0x04;
  4767. delay = 10;
  4768. blocksize = 128;
  4769. readsize = 256;
  4770. ;
  4771. memory "flash"
  4772. paged = yes;
  4773. size = 8192;
  4774. page_size = 64;
  4775. num_pages = 128;
  4776. min_write_delay = 4500;
  4777. max_write_delay = 4500;
  4778. readback_p1 = 0xff;
  4779. readback_p2 = 0xff;
  4780. read_lo = " 0 0 1 0 0 0 0 0",
  4781. " 0 0 0 0 a11 a10 a9 a8",
  4782. " a7 a6 a5 a4 a3 a2 a1 a0",
  4783. " o o o o o o o o";
  4784. read_hi = " 0 0 1 0 1 0 0 0",
  4785. " 0 0 0 0 a11 a10 a9 a8",
  4786. " a7 a6 a5 a4 a3 a2 a1 a0",
  4787. " o o o o o o o o";
  4788. loadpage_lo = " 0 1 0 0 0 0 0 0",
  4789. " 0 0 0 0 x x x x",
  4790. " x x x a4 a3 a2 a1 a0",
  4791. " i i i i i i i i";
  4792. loadpage_hi = " 0 1 0 0 1 0 0 0",
  4793. " 0 0 0 0 x x x x",
  4794. " x x x a4 a3 a2 a1 a0",
  4795. " i i i i i i i i";
  4796. writepage = " 0 1 0 0 1 1 0 0",
  4797. " 0 0 0 0 a11 a10 a9 a8",
  4798. " a7 a6 a5 x x x x x",
  4799. " x x x x x x x x";
  4800. mode = 0x21;
  4801. delay = 6;
  4802. blocksize = 64;
  4803. readsize = 256;
  4804. ;
  4805. memory "lfuse"
  4806. size = 1;
  4807. min_write_delay = 4500;
  4808. max_write_delay = 4500;
  4809. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  4810. "x x x x x x x x o o o o o o o o";
  4811. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  4812. "x x x x x x x x i i i i i i i i";
  4813. ;
  4814. memory "hfuse"
  4815. size = 1;
  4816. min_write_delay = 4500;
  4817. max_write_delay = 4500;
  4818. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  4819. "x x x x x x x x o o o o o o o o";
  4820. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  4821. "x x x x x x x x i i i i i i i i";
  4822. ;
  4823. memory "lock"
  4824. size = 1;
  4825. min_write_delay = 4500;
  4826. max_write_delay = 4500;
  4827. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  4828. "x x x x x x x x x x o o o o o o";
  4829. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  4830. "x x x x x x x x 1 1 i i i i i i";
  4831. ;
  4832. memory "calibration"
  4833. size = 4;
  4834. read = "0 0 1 1 1 0 0 0 0 0 x x x x x x",
  4835. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  4836. ;
  4837. memory "signature"
  4838. size = 3;
  4839. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  4840. "x x x x x x a1 a0 o o o o o o o o";
  4841. ;
  4842. ;
  4843. #------------------------------------------------------------
  4844. # ATmega8535
  4845. #------------------------------------------------------------
  4846. part
  4847. id = "m8535";
  4848. desc = "ATMEGA8535";
  4849. stk500_devcode = 0x64;
  4850. avr910_devcode = 0x69;
  4851. signature = 0x1e 0x93 0x08;
  4852. pagel = 0xd7;
  4853. bs2 = 0xa0;
  4854. chip_erase_delay = 9000;
  4855. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  4856. "x x x x x x x x x x x x x x x x";
  4857. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  4858. "x x x x x x x x x x x x x x x x";
  4859. timeout = 200;
  4860. stabdelay = 100;
  4861. cmdexedelay = 25;
  4862. synchloops = 32;
  4863. bytedelay = 0;
  4864. pollindex = 3;
  4865. pollvalue = 0x53;
  4866. predelay = 1;
  4867. postdelay = 1;
  4868. pollmethod = 0;
  4869. pp_controlstack =
  4870. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  4871. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  4872. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  4873. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  4874. hventerstabdelay = 100;
  4875. progmodedelay = 0;
  4876. latchcycles = 6;
  4877. togglevtg = 0;
  4878. poweroffdelay = 0;
  4879. resetdelayms = 0;
  4880. resetdelayus = 0;
  4881. hvleavestabdelay = 15;
  4882. chiperasepulsewidth = 0;
  4883. chiperasepolltimeout = 10;
  4884. programfusepulsewidth = 0;
  4885. programfusepolltimeout = 5;
  4886. programlockpulsewidth = 0;
  4887. programlockpolltimeout = 5;
  4888. memory "eeprom"
  4889. size = 512;
  4890. min_write_delay = 9000;
  4891. max_write_delay = 9000;
  4892. readback_p1 = 0xff;
  4893. readback_p2 = 0xff;
  4894. read = " 1 0 1 0 0 0 0 0",
  4895. " 0 0 x x x x x a8",
  4896. " a7 a6 a5 a4 a3 a2 a1 a0",
  4897. " o o o o o o o o";
  4898. write = " 1 1 0 0 0 0 0 0",
  4899. " 0 0 x x x x x a8",
  4900. " a7 a6 a5 a4 a3 a2 a1 a0",
  4901. " i i i i i i i i";
  4902. mode = 0x04;
  4903. delay = 10;
  4904. blocksize = 128;
  4905. readsize = 256;
  4906. ;
  4907. memory "flash"
  4908. paged = yes;
  4909. size = 8192;
  4910. page_size = 64;
  4911. num_pages = 128;
  4912. min_write_delay = 4500;
  4913. max_write_delay = 4500;
  4914. readback_p1 = 0xff;
  4915. readback_p2 = 0xff;
  4916. read_lo = " 0 0 1 0 0 0 0 0",
  4917. " 0 0 0 0 a11 a10 a9 a8",
  4918. " a7 a6 a5 a4 a3 a2 a1 a0",
  4919. " o o o o o o o o";
  4920. read_hi = " 0 0 1 0 1 0 0 0",
  4921. " 0 0 0 0 a11 a10 a9 a8",
  4922. " a7 a6 a5 a4 a3 a2 a1 a0",
  4923. " o o o o o o o o";
  4924. loadpage_lo = " 0 1 0 0 0 0 0 0",
  4925. " 0 0 0 0 x x x x",
  4926. " x x x a4 a3 a2 a1 a0",
  4927. " i i i i i i i i";
  4928. loadpage_hi = " 0 1 0 0 1 0 0 0",
  4929. " 0 0 0 0 x x x x",
  4930. " x x x a4 a3 a2 a1 a0",
  4931. " i i i i i i i i";
  4932. writepage = " 0 1 0 0 1 1 0 0",
  4933. " 0 0 0 0 a11 a10 a9 a8",
  4934. " a7 a6 a5 x x x x x",
  4935. " x x x x x x x x";
  4936. mode = 0x21;
  4937. delay = 6;
  4938. blocksize = 64;
  4939. readsize = 256;
  4940. ;
  4941. memory "lfuse"
  4942. size = 1;
  4943. min_write_delay = 2000;
  4944. max_write_delay = 2000;
  4945. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  4946. "x x x x x x x x o o o o o o o o";
  4947. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  4948. "x x x x x x x x i i i i i i i i";
  4949. ;
  4950. memory "hfuse"
  4951. size = 1;
  4952. min_write_delay = 2000;
  4953. max_write_delay = 2000;
  4954. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  4955. "x x x x x x x x o o o o o o o o";
  4956. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  4957. "x x x x x x x x i i i i i i i i";
  4958. ;
  4959. memory "lock"
  4960. size = 1;
  4961. min_write_delay = 2000;
  4962. max_write_delay = 2000;
  4963. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  4964. "x x x x x x x x x x o o o o o o";
  4965. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  4966. "x x x x x x x x 1 1 i i i i i i";
  4967. ;
  4968. memory "calibration"
  4969. size = 4;
  4970. read = "0 0 1 1 1 0 0 0 0 0 x x x x x x",
  4971. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  4972. ;
  4973. memory "signature"
  4974. size = 3;
  4975. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  4976. "x x x x x x a1 a0 o o o o o o o o";
  4977. ;
  4978. ;
  4979. #------------------------------------------------------------
  4980. # ATtiny26
  4981. #------------------------------------------------------------
  4982. part
  4983. id = "t26";
  4984. desc = "ATTINY26";
  4985. stk500_devcode = 0x21;
  4986. avr910_devcode = 0x5e;
  4987. signature = 0x1e 0x91 0x09;
  4988. pagel = 0xb3;
  4989. bs2 = 0xb2;
  4990. chip_erase_delay = 9000;
  4991. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  4992. "x x x x x x x x x x x x x x x x";
  4993. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  4994. "x x x x x x x x x x x x x x x x";
  4995. timeout = 200;
  4996. stabdelay = 100;
  4997. cmdexedelay = 25;
  4998. synchloops = 32;
  4999. bytedelay = 0;
  5000. pollindex = 3;
  5001. pollvalue = 0x53;
  5002. predelay = 1;
  5003. postdelay = 1;
  5004. pollmethod = 0;
  5005. pp_controlstack =
  5006. 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
  5007. 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
  5008. 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
  5009. 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
  5010. hventerstabdelay = 100;
  5011. progmodedelay = 0;
  5012. latchcycles = 5;
  5013. togglevtg = 1;
  5014. poweroffdelay = 15;
  5015. resetdelayms = 2;
  5016. resetdelayus = 0;
  5017. hvleavestabdelay = 15;
  5018. chiperasepulsewidth = 0;
  5019. chiperasepolltimeout = 10;
  5020. programfusepulsewidth = 0;
  5021. programfusepolltimeout = 5;
  5022. programlockpulsewidth = 0;
  5023. programlockpolltimeout = 5;
  5024. memory "eeprom"
  5025. size = 128;
  5026. min_write_delay = 9000;
  5027. max_write_delay = 9000;
  5028. readback_p1 = 0xff;
  5029. readback_p2 = 0xff;
  5030. read = "1 0 1 0 0 0 0 0 x x x x x x x x",
  5031. "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  5032. write = "1 1 0 0 0 0 0 0 x x x x x x x x",
  5033. "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  5034. mode = 0x04;
  5035. delay = 10;
  5036. blocksize = 64;
  5037. readsize = 256;
  5038. ;
  5039. memory "flash"
  5040. paged = yes;
  5041. size = 2048;
  5042. page_size = 32;
  5043. num_pages = 64;
  5044. min_write_delay = 4500;
  5045. max_write_delay = 4500;
  5046. readback_p1 = 0xff;
  5047. readback_p2 = 0xff;
  5048. read_lo = " 0 0 1 0 0 0 0 0",
  5049. " x x x x x x a9 a8",
  5050. " a7 a6 a5 a4 a3 a2 a1 a0",
  5051. " o o o o o o o o";
  5052. read_hi = " 0 0 1 0 1 0 0 0",
  5053. " x x x x x x a9 a8",
  5054. " a7 a6 a5 a4 a3 a2 a1 a0",
  5055. " o o o o o o o o";
  5056. loadpage_lo = " 0 1 0 0 0 0 0 0",
  5057. " x x x x x x x x",
  5058. " x x x x a3 a2 a1 a0",
  5059. " i i i i i i i i";
  5060. loadpage_hi = " 0 1 0 0 1 0 0 0",
  5061. " x x x x x x x x",
  5062. " x x x x a3 a2 a1 a0",
  5063. " i i i i i i i i";
  5064. writepage = " 0 1 0 0 1 1 0 0",
  5065. " x x x x x x a9 a8",
  5066. " a7 a6 a5 a4 x x x x",
  5067. " x x x x x x x x";
  5068. mode = 0x21;
  5069. delay = 6;
  5070. blocksize = 16;
  5071. readsize = 256;
  5072. ;
  5073. memory "signature"
  5074. size = 3;
  5075. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  5076. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  5077. ;
  5078. memory "lock"
  5079. size = 1;
  5080. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  5081. "x x x x x x x x x x x x x x o o";
  5082. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i",
  5083. "x x x x x x x x x x x x x x x x";
  5084. min_write_delay = 9000;
  5085. max_write_delay = 9000;
  5086. ;
  5087. memory "lfuse"
  5088. size = 1;
  5089. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  5090. "x x x x x x x x i i i i i i i i";
  5091. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  5092. "x x x x x x x x o o o o o o o o";
  5093. min_write_delay = 9000;
  5094. max_write_delay = 9000;
  5095. ;
  5096. memory "hfuse"
  5097. size = 1;
  5098. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  5099. "x x x x x x x x x x x i i i i i";
  5100. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  5101. "x x x x x x x x x x x o o o o o";
  5102. min_write_delay = 9000;
  5103. max_write_delay = 9000;
  5104. ;
  5105. memory "calibration"
  5106. size = 4;
  5107. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  5108. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  5109. ;
  5110. ;
  5111. #------------------------------------------------------------
  5112. # ATtiny261
  5113. #------------------------------------------------------------
  5114. # Close to ATtiny26
  5115. part
  5116. id = "t261";
  5117. desc = "ATTINY261";
  5118. has_debugwire = yes;
  5119. flash_instr = 0xB4, 0x00, 0x10;
  5120. eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  5121. 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
  5122. 0x99, 0xE1, 0xBB, 0xAC;
  5123. # stk500_devcode = 0x21;
  5124. # avr910_devcode = 0x5e;
  5125. signature = 0x1e 0x91 0x0c;
  5126. pagel = 0xb3;
  5127. bs2 = 0xb2;
  5128. chip_erase_delay = 4000;
  5129. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  5130. "x x x x x x x x x x x x x x x x";
  5131. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  5132. "x x x x x x x x x x x x x x x x";
  5133. timeout = 200;
  5134. stabdelay = 100;
  5135. cmdexedelay = 25;
  5136. synchloops = 32;
  5137. bytedelay = 0;
  5138. pollindex = 3;
  5139. pollvalue = 0x53;
  5140. predelay = 1;
  5141. postdelay = 1;
  5142. pollmethod = 0;
  5143. pp_controlstack =
  5144. 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
  5145. 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
  5146. 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
  5147. 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
  5148. hventerstabdelay = 100;
  5149. progmodedelay = 0;
  5150. latchcycles = 5;
  5151. togglevtg = 1;
  5152. poweroffdelay = 15;
  5153. resetdelayms = 2;
  5154. resetdelayus = 0;
  5155. hvleavestabdelay = 15;
  5156. chiperasepulsewidth = 0;
  5157. chiperasepolltimeout = 10;
  5158. programfusepulsewidth = 0;
  5159. programfusepolltimeout = 5;
  5160. programlockpulsewidth = 0;
  5161. programlockpolltimeout = 5;
  5162. memory "eeprom"
  5163. paged = no;
  5164. size = 128;
  5165. page_size = 4;
  5166. num_pages = 32;
  5167. min_write_delay = 4000;
  5168. max_write_delay = 4000;
  5169. readback_p1 = 0xff;
  5170. readback_p2 = 0xff;
  5171. read = "1 0 1 0 0 0 0 0 x x x x x x x x",
  5172. "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  5173. write = "1 1 0 0 0 0 0 0 x x x x x x x x",
  5174. "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  5175. loadpage_lo = " 1 1 0 0 0 0 0 1",
  5176. " 0 0 0 0 0 0 0 0",
  5177. " 0 0 0 0 0 0 a1 a0",
  5178. " i i i i i i i i";
  5179. writepage = " 1 1 0 0 0 0 1 0",
  5180. " 0 0 x x x x x x",
  5181. " x a6 a5 a4 a3 a2 0 0",
  5182. " x x x x x x x x";
  5183. mode = 0x41;
  5184. delay = 10;
  5185. blocksize = 4;
  5186. readsize = 256;
  5187. ;
  5188. memory "flash"
  5189. paged = yes;
  5190. size = 2048;
  5191. page_size = 32;
  5192. num_pages = 64;
  5193. min_write_delay = 4500;
  5194. max_write_delay = 4500;
  5195. readback_p1 = 0xff;
  5196. readback_p2 = 0xff;
  5197. read_lo = " 0 0 1 0 0 0 0 0",
  5198. " x x x x x x a9 a8",
  5199. " a7 a6 a5 a4 a3 a2 a1 a0",
  5200. " o o o o o o o o";
  5201. read_hi = " 0 0 1 0 1 0 0 0",
  5202. " x x x x x x a9 a8",
  5203. " a7 a6 a5 a4 a3 a2 a1 a0",
  5204. " o o o o o o o o";
  5205. loadpage_lo = " 0 1 0 0 0 0 0 0",
  5206. " x x x x x x x x",
  5207. " x x x x a3 a2 a1 a0",
  5208. " i i i i i i i i";
  5209. loadpage_hi = " 0 1 0 0 1 0 0 0",
  5210. " x x x x x x x x",
  5211. " x x x x a3 a2 a1 a0",
  5212. " i i i i i i i i";
  5213. writepage = " 0 1 0 0 1 1 0 0",
  5214. " x x x x x x a9 a8",
  5215. " a7 a6 a5 a4 x x x x",
  5216. " x x x x x x x x";
  5217. mode = 0x41;
  5218. delay = 6;
  5219. blocksize = 32;
  5220. readsize = 256;
  5221. ;
  5222. memory "signature"
  5223. size = 3;
  5224. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  5225. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  5226. ;
  5227. memory "lock"
  5228. size = 1;
  5229. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  5230. "x x x x x x x x x x x x x x o o";
  5231. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i",
  5232. "x x x x x x x x x x x x x x x x";
  5233. min_write_delay = 4500;
  5234. max_write_delay = 4500;
  5235. ;
  5236. memory "lfuse"
  5237. size = 1;
  5238. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  5239. "x x x x x x x x i i i i i i i i";
  5240. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  5241. "x x x x x x x x o o o o o o o o";
  5242. min_write_delay = 4500;
  5243. max_write_delay = 4500;
  5244. ;
  5245. memory "hfuse"
  5246. size = 1;
  5247. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  5248. "x x x x x x x x i i i i i i i i";
  5249. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  5250. "x x x x x x x x o o o o o o o o";
  5251. min_write_delay = 4500;
  5252. max_write_delay = 4500;
  5253. ;
  5254. memory "efuse"
  5255. size = 1;
  5256. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  5257. "x x x x x x x x x x x x x x x i";
  5258. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  5259. "x x x x x x x x x x x x x x x o";
  5260. min_write_delay = 4500;
  5261. max_write_delay = 4500;
  5262. ;
  5263. memory "calibration"
  5264. size = 1;
  5265. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  5266. "0 0 0 0 0 0 0 0 o o o o o o o o";
  5267. ;
  5268. ;
  5269. #------------------------------------------------------------
  5270. # ATtiny461
  5271. #------------------------------------------------------------
  5272. # Close to ATtiny261
  5273. part
  5274. id = "t461";
  5275. desc = "ATTINY461";
  5276. has_debugwire = yes;
  5277. flash_instr = 0xB4, 0x00, 0x10;
  5278. eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  5279. 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
  5280. 0x99, 0xE1, 0xBB, 0xAC;
  5281. # stk500_devcode = 0x21;
  5282. # avr910_devcode = 0x5e;
  5283. signature = 0x1e 0x92 0x08;
  5284. pagel = 0xb3;
  5285. bs2 = 0xb2;
  5286. chip_erase_delay = 4000;
  5287. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  5288. "x x x x x x x x x x x x x x x x";
  5289. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  5290. "x x x x x x x x x x x x x x x x";
  5291. timeout = 200;
  5292. stabdelay = 100;
  5293. cmdexedelay = 25;
  5294. synchloops = 32;
  5295. bytedelay = 0;
  5296. pollindex = 3;
  5297. pollvalue = 0x53;
  5298. predelay = 1;
  5299. postdelay = 1;
  5300. pollmethod = 0;
  5301. pp_controlstack =
  5302. 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
  5303. 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
  5304. 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
  5305. 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
  5306. hventerstabdelay = 100;
  5307. progmodedelay = 0;
  5308. latchcycles = 5;
  5309. togglevtg = 1;
  5310. poweroffdelay = 15;
  5311. resetdelayms = 2;
  5312. resetdelayus = 0;
  5313. hvleavestabdelay = 15;
  5314. chiperasepulsewidth = 0;
  5315. chiperasepolltimeout = 10;
  5316. programfusepulsewidth = 0;
  5317. programfusepolltimeout = 5;
  5318. programlockpulsewidth = 0;
  5319. programlockpolltimeout = 5;
  5320. memory "eeprom"
  5321. paged = no;
  5322. size = 256;
  5323. page_size = 4;
  5324. num_pages = 64;
  5325. min_write_delay = 4000;
  5326. max_write_delay = 4000;
  5327. readback_p1 = 0xff;
  5328. readback_p2 = 0xff;
  5329. read = " 1 0 1 0 0 0 0 0 x x x x x x x x",
  5330. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  5331. write = " 1 1 0 0 0 0 0 0 x x x x x x x x",
  5332. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  5333. loadpage_lo = " 1 1 0 0 0 0 0 1",
  5334. " 0 0 0 0 0 0 0 0",
  5335. " 0 0 0 0 0 0 a1 a0",
  5336. " i i i i i i i i";
  5337. writepage = " 1 1 0 0 0 0 1 0",
  5338. " 0 0 x x x x x x",
  5339. " a7 a6 a5 a4 a3 a2 0 0",
  5340. " x x x x x x x x";
  5341. mode = 0x41;
  5342. delay = 10;
  5343. blocksize = 4;
  5344. readsize = 256;
  5345. ;
  5346. memory "flash"
  5347. paged = yes;
  5348. size = 4096;
  5349. page_size = 64;
  5350. num_pages = 64;
  5351. min_write_delay = 4500;
  5352. max_write_delay = 4500;
  5353. readback_p1 = 0xff;
  5354. readback_p2 = 0xff;
  5355. read_lo = " 0 0 1 0 0 0 0 0",
  5356. " x x x x x a10 a9 a8",
  5357. " a7 a6 a5 a4 a3 a2 a1 a0",
  5358. " o o o o o o o o";
  5359. read_hi = " 0 0 1 0 1 0 0 0",
  5360. " x x x x x a10 a9 a8",
  5361. " a7 a6 a5 a4 a3 a2 a1 a0",
  5362. " o o o o o o o o";
  5363. loadpage_lo = " 0 1 0 0 0 0 0 0",
  5364. " x x x x x x x x",
  5365. " x x x a4 a3 a2 a1 a0",
  5366. " i i i i i i i i";
  5367. loadpage_hi = " 0 1 0 0 1 0 0 0",
  5368. " x x x x x x x x",
  5369. " x x x a4 a3 a2 a1 a0",
  5370. " i i i i i i i i";
  5371. writepage = " 0 1 0 0 1 1 0 0",
  5372. " x x x x x a10 a9 a8",
  5373. " a7 a6 a5 x x x x x",
  5374. " x x x x x x x x";
  5375. mode = 0x41;
  5376. delay = 6;
  5377. blocksize = 64;
  5378. readsize = 256;
  5379. ;
  5380. memory "signature"
  5381. size = 3;
  5382. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  5383. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  5384. ;
  5385. memory "lock"
  5386. size = 1;
  5387. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  5388. "x x x x x x x x x x x x x x o o";
  5389. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i",
  5390. "x x x x x x x x x x x x x x x x";
  5391. min_write_delay = 4500;
  5392. max_write_delay = 4500;
  5393. ;
  5394. memory "lfuse"
  5395. size = 1;
  5396. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  5397. "x x x x x x x x i i i i i i i i";
  5398. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  5399. "x x x x x x x x o o o o o o o o";
  5400. min_write_delay = 4500;
  5401. max_write_delay = 4500;
  5402. ;
  5403. memory "hfuse"
  5404. size = 1;
  5405. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  5406. "x x x x x x x x i i i i i i i i";
  5407. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  5408. "x x x x x x x x o o o o o o o o";
  5409. min_write_delay = 4500;
  5410. max_write_delay = 4500;
  5411. ;
  5412. memory "efuse"
  5413. size = 1;
  5414. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  5415. "x x x x x x x x x x x x x x x i";
  5416. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  5417. "x x x x x x x x x x x x x x x o";
  5418. min_write_delay = 4500;
  5419. max_write_delay = 4500;
  5420. ;
  5421. memory "calibration"
  5422. size = 1;
  5423. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  5424. "0 0 0 0 0 0 0 0 o o o o o o o o";
  5425. ;
  5426. ;
  5427. #------------------------------------------------------------
  5428. # ATtiny861
  5429. #------------------------------------------------------------
  5430. # Close to ATtiny461
  5431. part
  5432. id = "t861";
  5433. desc = "ATTINY861";
  5434. has_debugwire = yes;
  5435. flash_instr = 0xB4, 0x00, 0x10;
  5436. eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  5437. 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
  5438. 0x99, 0xE1, 0xBB, 0xAC;
  5439. # stk500_devcode = 0x21;
  5440. # avr910_devcode = 0x5e;
  5441. signature = 0x1e 0x93 0x0d;
  5442. pagel = 0xb3;
  5443. bs2 = 0xb2;
  5444. chip_erase_delay = 4000;
  5445. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  5446. "x x x x x x x x x x x x x x x x";
  5447. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  5448. "x x x x x x x x x x x x x x x x";
  5449. timeout = 200;
  5450. stabdelay = 100;
  5451. cmdexedelay = 25;
  5452. synchloops = 32;
  5453. bytedelay = 0;
  5454. pollindex = 3;
  5455. pollvalue = 0x53;
  5456. predelay = 1;
  5457. postdelay = 1;
  5458. pollmethod = 0;
  5459. pp_controlstack =
  5460. 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
  5461. 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
  5462. 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
  5463. 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
  5464. hventerstabdelay = 100;
  5465. progmodedelay = 0;
  5466. latchcycles = 5;
  5467. togglevtg = 1;
  5468. poweroffdelay = 15;
  5469. resetdelayms = 2;
  5470. resetdelayus = 0;
  5471. hvleavestabdelay = 15;
  5472. chiperasepulsewidth = 0;
  5473. chiperasepolltimeout = 10;
  5474. programfusepulsewidth = 0;
  5475. programfusepolltimeout = 5;
  5476. programlockpulsewidth = 0;
  5477. programlockpolltimeout = 5;
  5478. memory "eeprom"
  5479. paged = no;
  5480. size = 512;
  5481. num_pages = 128;
  5482. page_size = 4;
  5483. min_write_delay = 4000;
  5484. max_write_delay = 4000;
  5485. readback_p1 = 0xff;
  5486. readback_p2 = 0xff;
  5487. read = " 1 0 1 0 0 0 0 0 x x x x x x x a8",
  5488. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  5489. write = " 1 1 0 0 0 0 0 0 x x x x x x x a8",
  5490. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  5491. loadpage_lo = " 1 1 0 0 0 0 0 1",
  5492. " 0 0 0 0 0 0 0 0",
  5493. " 0 0 0 0 0 0 a1 a0",
  5494. " i i i i i i i i";
  5495. writepage = " 1 1 0 0 0 0 1 0",
  5496. " 0 0 x x x x x a8",
  5497. " a7 a6 a5 a4 a3 a2 0 0",
  5498. " x x x x x x x x";
  5499. mode = 0x41;
  5500. delay = 10;
  5501. blocksize = 4;
  5502. readsize = 256;
  5503. ;
  5504. memory "flash"
  5505. paged = yes;
  5506. size = 8192;
  5507. page_size = 64;
  5508. num_pages = 128;
  5509. min_write_delay = 4500;
  5510. max_write_delay = 4500;
  5511. readback_p1 = 0xff;
  5512. readback_p2 = 0xff;
  5513. read_lo = " 0 0 1 0 0 0 0 0",
  5514. " x x x x a11 a10 a9 a8",
  5515. " a7 a6 a5 a4 a3 a2 a1 a0",
  5516. " o o o o o o o o";
  5517. read_hi = " 0 0 1 0 1 0 0 0",
  5518. " x x x x a11 a10 a9 a8",
  5519. " a7 a6 a5 a4 a3 a2 a1 a0",
  5520. " o o o o o o o o";
  5521. loadpage_lo = " 0 1 0 0 0 0 0 0",
  5522. " x x x x x x x x",
  5523. " x x x a4 a3 a2 a1 a0",
  5524. " i i i i i i i i";
  5525. loadpage_hi = " 0 1 0 0 1 0 0 0",
  5526. " x x x x x x x x",
  5527. " x x x a4 a3 a2 a1 a0",
  5528. " i i i i i i i i";
  5529. writepage = " 0 1 0 0 1 1 0 0",
  5530. " x x x x a11 a10 a9 a8",
  5531. " a7 a6 a5 x x x x x",
  5532. " x x x x x x x x";
  5533. mode = 0x41;
  5534. delay = 6;
  5535. blocksize = 64;
  5536. readsize = 256;
  5537. ;
  5538. memory "signature"
  5539. size = 3;
  5540. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  5541. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  5542. ;
  5543. memory "lock"
  5544. size = 1;
  5545. read = "0 1 0 1 1 0 0 0 x x x x x x x x",
  5546. "x x x x x x x x x x x x x x o o";
  5547. write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i",
  5548. "x x x x x x x x x x x x x x x x";
  5549. min_write_delay = 4500;
  5550. max_write_delay = 4500;
  5551. ;
  5552. memory "lfuse"
  5553. size = 1;
  5554. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  5555. "x x x x x x x x i i i i i i i i";
  5556. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  5557. "x x x x x x x x o o o o o o o o";
  5558. min_write_delay = 4500;
  5559. max_write_delay = 4500;
  5560. ;
  5561. memory "hfuse"
  5562. size = 1;
  5563. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  5564. "x x x x x x x x i i i i i i i i";
  5565. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  5566. "x x x x x x x x o o o o o o o o";
  5567. min_write_delay = 4500;
  5568. max_write_delay = 4500;
  5569. ;
  5570. memory "efuse"
  5571. size = 1;
  5572. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  5573. "x x x x x x x x x x x x x x x i";
  5574. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  5575. "x x x x x x x x x x x x x x x o";
  5576. min_write_delay = 4500;
  5577. max_write_delay = 4500;
  5578. ;
  5579. memory "calibration"
  5580. size = 1;
  5581. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  5582. "0 0 0 0 0 0 0 0 o o o o o o o o";
  5583. ;
  5584. ;
  5585. #------------------------------------------------------------
  5586. # ATmega48
  5587. #------------------------------------------------------------
  5588. part
  5589. id = "m48";
  5590. desc = "ATMEGA48";
  5591. has_debugwire = yes;
  5592. flash_instr = 0xB6, 0x01, 0x11;
  5593. eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
  5594. 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
  5595. 0x99, 0xF9, 0xBB, 0xAF;
  5596. stk500_devcode = 0x59;
  5597. # avr910_devcode = 0x;
  5598. signature = 0x1e 0x92 0x05;
  5599. pagel = 0xd7;
  5600. bs2 = 0xc2;
  5601. chip_erase_delay = 45000;
  5602. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  5603. "x x x x x x x x x x x x x x x x";
  5604. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  5605. "x x x x x x x x x x x x x x x x";
  5606. timeout = 200;
  5607. stabdelay = 100;
  5608. cmdexedelay = 25;
  5609. synchloops = 32;
  5610. bytedelay = 0;
  5611. pollindex = 3;
  5612. pollvalue = 0x53;
  5613. predelay = 1;
  5614. postdelay = 1;
  5615. pollmethod = 1;
  5616. pp_controlstack =
  5617. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  5618. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  5619. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  5620. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  5621. hventerstabdelay = 100;
  5622. progmodedelay = 0;
  5623. latchcycles = 5;
  5624. togglevtg = 1;
  5625. poweroffdelay = 15;
  5626. resetdelayms = 1;
  5627. resetdelayus = 0;
  5628. hvleavestabdelay = 15;
  5629. resetdelay = 15;
  5630. chiperasepulsewidth = 0;
  5631. chiperasepolltimeout = 10;
  5632. programfusepulsewidth = 0;
  5633. programfusepolltimeout = 5;
  5634. programlockpulsewidth = 0;
  5635. programlockpolltimeout = 5;
  5636. memory "eeprom"
  5637. paged = no;
  5638. page_size = 4;
  5639. size = 256;
  5640. min_write_delay = 3600;
  5641. max_write_delay = 3600;
  5642. readback_p1 = 0xff;
  5643. readback_p2 = 0xff;
  5644. read = " 1 0 1 0 0 0 0 0",
  5645. " 0 0 0 x x x x x",
  5646. " a7 a6 a5 a4 a3 a2 a1 a0",
  5647. " o o o o o o o o";
  5648. write = " 1 1 0 0 0 0 0 0",
  5649. " 0 0 0 x x x x x",
  5650. " a7 a6 a5 a4 a3 a2 a1 a0",
  5651. " i i i i i i i i";
  5652. loadpage_lo = " 1 1 0 0 0 0 0 1",
  5653. " 0 0 0 0 0 0 0 0",
  5654. " 0 0 0 0 0 0 a1 a0",
  5655. " i i i i i i i i";
  5656. writepage = " 1 1 0 0 0 0 1 0",
  5657. " 0 0 x x x x x x",
  5658. " a7 a6 a5 a4 a3 a2 0 0",
  5659. " x x x x x x x x";
  5660. mode = 0x41;
  5661. delay = 5;
  5662. blocksize = 4;
  5663. readsize = 256;
  5664. ;
  5665. memory "flash"
  5666. paged = yes;
  5667. size = 4096;
  5668. page_size = 64;
  5669. num_pages = 64;
  5670. min_write_delay = 4500;
  5671. max_write_delay = 4500;
  5672. readback_p1 = 0x00;
  5673. readback_p2 = 0x00;
  5674. read_lo = " 0 0 1 0 0 0 0 0",
  5675. " 0 0 0 0 0 a10 a9 a8",
  5676. " a7 a6 a5 a4 a3 a2 a1 a0",
  5677. " o o o o o o o o";
  5678. read_hi = " 0 0 1 0 1 0 0 0",
  5679. " 0 0 0 0 0 a10 a9 a8",
  5680. " a7 a6 a5 a4 a3 a2 a1 a0",
  5681. " o o o o o o o o";
  5682. loadpage_lo = " 0 1 0 0 0 0 0 0",
  5683. " 0 0 0 x x x x x",
  5684. " x x x a4 a3 a2 a1 a0",
  5685. " i i i i i i i i";
  5686. loadpage_hi = " 0 1 0 0 1 0 0 0",
  5687. " 0 0 0 x x x x x",
  5688. " x x x a4 a3 a2 a1 a0",
  5689. " i i i i i i i i";
  5690. writepage = " 0 1 0 0 1 1 0 0",
  5691. " 0 0 0 0 0 a10 a9 a8",
  5692. " a7 a6 a5 x x x x x",
  5693. " x x x x x x x x";
  5694. mode = 0x41;
  5695. delay = 6;
  5696. blocksize = 64;
  5697. readsize = 256;
  5698. ;
  5699. memory "lfuse"
  5700. size = 1;
  5701. min_write_delay = 4500;
  5702. max_write_delay = 4500;
  5703. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  5704. "x x x x x x x x o o o o o o o o";
  5705. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  5706. "x x x x x x x x i i i i i i i i";
  5707. ;
  5708. memory "hfuse"
  5709. size = 1;
  5710. min_write_delay = 4500;
  5711. max_write_delay = 4500;
  5712. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  5713. "x x x x x x x x o o o o o o o o";
  5714. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  5715. "x x x x x x x x i i i i i i i i";
  5716. ;
  5717. memory "efuse"
  5718. size = 1;
  5719. min_write_delay = 4500;
  5720. max_write_delay = 4500;
  5721. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  5722. "x x x x x x x x x x x x x x x o";
  5723. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  5724. "x x x x x x x x x x x x x x x i";
  5725. ;
  5726. memory "lock"
  5727. size = 1;
  5728. min_write_delay = 4500;
  5729. max_write_delay = 4500;
  5730. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  5731. "x x x x x x x x x x o o o o o o";
  5732. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  5733. "x x x x x x x x 1 1 i i i i i i";
  5734. ;
  5735. memory "calibration"
  5736. size = 1;
  5737. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  5738. "0 0 0 0 0 0 0 0 o o o o o o o o";
  5739. ;
  5740. memory "signature"
  5741. size = 3;
  5742. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  5743. "x x x x x x a1 a0 o o o o o o o o";
  5744. ;
  5745. ;
  5746. #------------------------------------------------------------
  5747. # ATmega88
  5748. #------------------------------------------------------------
  5749. part
  5750. id = "m88";
  5751. desc = "ATMEGA88";
  5752. has_debugwire = yes;
  5753. flash_instr = 0xB6, 0x01, 0x11;
  5754. eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
  5755. 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
  5756. 0x99, 0xF9, 0xBB, 0xAF;
  5757. stk500_devcode = 0x73;
  5758. # avr910_devcode = 0x;
  5759. signature = 0x1e 0x93 0x0a;
  5760. pagel = 0xd7;
  5761. bs2 = 0xc2;
  5762. chip_erase_delay = 9000;
  5763. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  5764. "x x x x x x x x x x x x x x x x";
  5765. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  5766. "x x x x x x x x x x x x x x x x";
  5767. timeout = 200;
  5768. stabdelay = 100;
  5769. cmdexedelay = 25;
  5770. synchloops = 32;
  5771. bytedelay = 0;
  5772. pollindex = 3;
  5773. pollvalue = 0x53;
  5774. predelay = 1;
  5775. postdelay = 1;
  5776. pollmethod = 1;
  5777. pp_controlstack =
  5778. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  5779. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  5780. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  5781. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  5782. hventerstabdelay = 100;
  5783. progmodedelay = 0;
  5784. latchcycles = 5;
  5785. togglevtg = 1;
  5786. poweroffdelay = 15;
  5787. resetdelayms = 1;
  5788. resetdelayus = 0;
  5789. hvleavestabdelay = 15;
  5790. resetdelay = 15;
  5791. chiperasepulsewidth = 0;
  5792. chiperasepolltimeout = 10;
  5793. programfusepulsewidth = 0;
  5794. programfusepolltimeout = 5;
  5795. programlockpulsewidth = 0;
  5796. programlockpolltimeout = 5;
  5797. memory "eeprom"
  5798. paged = no;
  5799. page_size = 4;
  5800. size = 512;
  5801. min_write_delay = 3600;
  5802. max_write_delay = 3600;
  5803. readback_p1 = 0xff;
  5804. readback_p2 = 0xff;
  5805. read = " 1 0 1 0 0 0 0 0",
  5806. " 0 0 0 x x x x a8",
  5807. " a7 a6 a5 a4 a3 a2 a1 a0",
  5808. " o o o o o o o o";
  5809. write = " 1 1 0 0 0 0 0 0",
  5810. " 0 0 0 x x x x a8",
  5811. " a7 a6 a5 a4 a3 a2 a1 a0",
  5812. " i i i i i i i i";
  5813. loadpage_lo = " 1 1 0 0 0 0 0 1",
  5814. " 0 0 0 0 0 0 0 0",
  5815. " 0 0 0 0 0 0 a1 a0",
  5816. " i i i i i i i i";
  5817. writepage = " 1 1 0 0 0 0 1 0",
  5818. " 0 0 x x x x x a8",
  5819. " a7 a6 a5 a4 a3 a2 0 0",
  5820. " x x x x x x x x";
  5821. mode = 0x41;
  5822. delay = 5;
  5823. blocksize = 4;
  5824. readsize = 256;
  5825. ;
  5826. memory "flash"
  5827. paged = yes;
  5828. size = 8192;
  5829. page_size = 64;
  5830. num_pages = 128;
  5831. min_write_delay = 4500;
  5832. max_write_delay = 4500;
  5833. readback_p1 = 0xff;
  5834. readback_p2 = 0xff;
  5835. read_lo = " 0 0 1 0 0 0 0 0",
  5836. " 0 0 0 0 a11 a10 a9 a8",
  5837. " a7 a6 a5 a4 a3 a2 a1 a0",
  5838. " o o o o o o o o";
  5839. read_hi = " 0 0 1 0 1 0 0 0",
  5840. " 0 0 0 0 a11 a10 a9 a8",
  5841. " a7 a6 a5 a4 a3 a2 a1 a0",
  5842. " o o o o o o o o";
  5843. loadpage_lo = " 0 1 0 0 0 0 0 0",
  5844. " 0 0 0 x x x x x",
  5845. " x x x a4 a3 a2 a1 a0",
  5846. " i i i i i i i i";
  5847. loadpage_hi = " 0 1 0 0 1 0 0 0",
  5848. " 0 0 0 x x x x x",
  5849. " x x x a4 a3 a2 a1 a0",
  5850. " i i i i i i i i";
  5851. writepage = " 0 1 0 0 1 1 0 0",
  5852. " 0 0 0 0 a11 a10 a9 a8",
  5853. " a7 a6 a5 x x x x x",
  5854. " x x x x x x x x";
  5855. mode = 0x41;
  5856. delay = 6;
  5857. blocksize = 64;
  5858. readsize = 256;
  5859. ;
  5860. memory "lfuse"
  5861. size = 1;
  5862. min_write_delay = 4500;
  5863. max_write_delay = 4500;
  5864. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  5865. "x x x x x x x x o o o o o o o o";
  5866. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  5867. "x x x x x x x x i i i i i i i i";
  5868. ;
  5869. memory "hfuse"
  5870. size = 1;
  5871. min_write_delay = 4500;
  5872. max_write_delay = 4500;
  5873. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  5874. "x x x x x x x x o o o o o o o o";
  5875. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  5876. "x x x x x x x x i i i i i i i i";
  5877. ;
  5878. memory "efuse"
  5879. size = 1;
  5880. min_write_delay = 4500;
  5881. max_write_delay = 4500;
  5882. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  5883. "x x x x x x x x x x x x x o o o";
  5884. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  5885. "x x x x x x x x x x x x x i i i";
  5886. ;
  5887. memory "lock"
  5888. size = 1;
  5889. min_write_delay = 4500;
  5890. max_write_delay = 4500;
  5891. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  5892. "x x x x x x x x x x o o o o o o";
  5893. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  5894. "x x x x x x x x 1 1 i i i i i i";
  5895. ;
  5896. memory "calibration"
  5897. size = 1;
  5898. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  5899. "0 0 0 0 0 0 0 0 o o o o o o o o";
  5900. ;
  5901. memory "signature"
  5902. size = 3;
  5903. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  5904. "x x x x x x a1 a0 o o o o o o o o";
  5905. ;
  5906. ;
  5907. #------------------------------------------------------------
  5908. # ATmega168
  5909. #------------------------------------------------------------
  5910. part
  5911. id = "m168";
  5912. desc = "ATMEGA168";
  5913. has_debugwire = yes;
  5914. flash_instr = 0xB6, 0x01, 0x11;
  5915. eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
  5916. 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
  5917. 0x99, 0xF9, 0xBB, 0xAF;
  5918. stk500_devcode = 0x86;
  5919. # avr910_devcode = 0x;
  5920. signature = 0x1e 0x94 0x06;
  5921. pagel = 0xd7;
  5922. bs2 = 0xc2;
  5923. chip_erase_delay = 9000;
  5924. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  5925. "x x x x x x x x x x x x x x x x";
  5926. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  5927. "x x x x x x x x x x x x x x x x";
  5928. timeout = 200;
  5929. stabdelay = 100;
  5930. cmdexedelay = 25;
  5931. synchloops = 32;
  5932. bytedelay = 0;
  5933. pollindex = 3;
  5934. pollvalue = 0x53;
  5935. predelay = 1;
  5936. postdelay = 1;
  5937. pollmethod = 1;
  5938. pp_controlstack =
  5939. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  5940. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  5941. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  5942. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  5943. hventerstabdelay = 100;
  5944. progmodedelay = 0;
  5945. latchcycles = 5;
  5946. togglevtg = 1;
  5947. poweroffdelay = 15;
  5948. resetdelayms = 1;
  5949. resetdelayus = 0;
  5950. hvleavestabdelay = 15;
  5951. resetdelay = 15;
  5952. chiperasepulsewidth = 0;
  5953. chiperasepolltimeout = 10;
  5954. programfusepulsewidth = 0;
  5955. programfusepolltimeout = 5;
  5956. programlockpulsewidth = 0;
  5957. programlockpolltimeout = 5;
  5958. memory "eeprom"
  5959. paged = no;
  5960. page_size = 4;
  5961. size = 512;
  5962. min_write_delay = 3600;
  5963. max_write_delay = 3600;
  5964. readback_p1 = 0xff;
  5965. readback_p2 = 0xff;
  5966. read = " 1 0 1 0 0 0 0 0",
  5967. " 0 0 0 x x x x a8",
  5968. " a7 a6 a5 a4 a3 a2 a1 a0",
  5969. " o o o o o o o o";
  5970. write = " 1 1 0 0 0 0 0 0",
  5971. " 0 0 0 x x x x a8",
  5972. " a7 a6 a5 a4 a3 a2 a1 a0",
  5973. " i i i i i i i i";
  5974. loadpage_lo = " 1 1 0 0 0 0 0 1",
  5975. " 0 0 0 0 0 0 0 0",
  5976. " 0 0 0 0 0 0 a1 a0",
  5977. " i i i i i i i i";
  5978. writepage = " 1 1 0 0 0 0 1 0",
  5979. " 0 0 x x x x x a8",
  5980. " a7 a6 a5 a4 a3 a2 0 0",
  5981. " x x x x x x x x";
  5982. mode = 0x41;
  5983. delay = 5;
  5984. blocksize = 4;
  5985. readsize = 256;
  5986. ;
  5987. memory "flash"
  5988. paged = yes;
  5989. size = 16384;
  5990. page_size = 128;
  5991. num_pages = 128;
  5992. min_write_delay = 4500;
  5993. max_write_delay = 4500;
  5994. readback_p1 = 0xff;
  5995. readback_p2 = 0xff;
  5996. read_lo = " 0 0 1 0 0 0 0 0",
  5997. " 0 0 0 a12 a11 a10 a9 a8",
  5998. " a7 a6 a5 a4 a3 a2 a1 a0",
  5999. " o o o o o o o o";
  6000. read_hi = " 0 0 1 0 1 0 0 0",
  6001. " 0 0 0 a12 a11 a10 a9 a8",
  6002. " a7 a6 a5 a4 a3 a2 a1 a0",
  6003. " o o o o o o o o";
  6004. loadpage_lo = " 0 1 0 0 0 0 0 0",
  6005. " 0 0 0 x x x x x",
  6006. " x x a5 a4 a3 a2 a1 a0",
  6007. " i i i i i i i i";
  6008. loadpage_hi = " 0 1 0 0 1 0 0 0",
  6009. " 0 0 0 x x x x x",
  6010. " x x a5 a4 a3 a2 a1 a0",
  6011. " i i i i i i i i";
  6012. writepage = " 0 1 0 0 1 1 0 0",
  6013. " 0 0 0 a12 a11 a10 a9 a8",
  6014. " a7 a6 x x x x x x",
  6015. " x x x x x x x x";
  6016. mode = 0x41;
  6017. delay = 6;
  6018. blocksize = 128;
  6019. readsize = 256;
  6020. ;
  6021. memory "lfuse"
  6022. size = 1;
  6023. min_write_delay = 4500;
  6024. max_write_delay = 4500;
  6025. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  6026. "x x x x x x x x o o o o o o o o";
  6027. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  6028. "x x x x x x x x i i i i i i i i";
  6029. ;
  6030. memory "hfuse"
  6031. size = 1;
  6032. min_write_delay = 4500;
  6033. max_write_delay = 4500;
  6034. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  6035. "x x x x x x x x o o o o o o o o";
  6036. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  6037. "x x x x x x x x i i i i i i i i";
  6038. ;
  6039. memory "efuse"
  6040. size = 1;
  6041. min_write_delay = 4500;
  6042. max_write_delay = 4500;
  6043. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  6044. "x x x x x x x x x x x x x o o o";
  6045. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  6046. "x x x x x x x x x x x x x i i i";
  6047. ;
  6048. memory "lock"
  6049. size = 1;
  6050. min_write_delay = 4500;
  6051. max_write_delay = 4500;
  6052. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  6053. "x x x x x x x x x x o o o o o o";
  6054. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  6055. "x x x x x x x x 1 1 i i i i i i";
  6056. ;
  6057. memory "calibration"
  6058. size = 1;
  6059. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  6060. "0 0 0 0 0 0 0 0 o o o o o o o o";
  6061. ;
  6062. memory "signature"
  6063. size = 3;
  6064. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  6065. "x x x x x x a1 a0 o o o o o o o o";
  6066. ;
  6067. ;
  6068. #------------------------------------------------------------
  6069. # ATmega328
  6070. #------------------------------------------------------------
  6071. part
  6072. id = "m328p";
  6073. desc = "ATMEGA328P";
  6074. has_debugwire = yes;
  6075. flash_instr = 0xB6, 0x01, 0x11;
  6076. eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
  6077. 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
  6078. 0x99, 0xF9, 0xBB, 0xAF;
  6079. stk500_devcode = 0x86;
  6080. # avr910_devcode = 0x;
  6081. signature = 0x1e 0x95 0x0F;
  6082. pagel = 0xd7;
  6083. bs2 = 0xc2;
  6084. chip_erase_delay = 9000;
  6085. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  6086. "x x x x x x x x x x x x x x x x";
  6087. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  6088. "x x x x x x x x x x x x x x x x";
  6089. timeout = 200;
  6090. stabdelay = 100;
  6091. cmdexedelay = 25;
  6092. synchloops = 32;
  6093. bytedelay = 0;
  6094. pollindex = 3;
  6095. pollvalue = 0x53;
  6096. predelay = 1;
  6097. postdelay = 1;
  6098. pollmethod = 1;
  6099. pp_controlstack =
  6100. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  6101. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  6102. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  6103. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  6104. hventerstabdelay = 100;
  6105. progmodedelay = 0;
  6106. latchcycles = 5;
  6107. togglevtg = 1;
  6108. poweroffdelay = 15;
  6109. resetdelayms = 1;
  6110. resetdelayus = 0;
  6111. hvleavestabdelay = 15;
  6112. resetdelay = 15;
  6113. chiperasepulsewidth = 0;
  6114. chiperasepolltimeout = 10;
  6115. programfusepulsewidth = 0;
  6116. programfusepolltimeout = 5;
  6117. programlockpulsewidth = 0;
  6118. programlockpolltimeout = 5;
  6119. memory "eeprom"
  6120. paged = no;
  6121. page_size = 4;
  6122. size = 1024;
  6123. min_write_delay = 3600;
  6124. max_write_delay = 3600;
  6125. readback_p1 = 0xff;
  6126. readback_p2 = 0xff;
  6127. read = " 1 0 1 0 0 0 0 0",
  6128. " 0 0 0 x x x a9 a8",
  6129. " a7 a6 a5 a4 a3 a2 a1 a0",
  6130. " o o o o o o o o";
  6131. write = " 1 1 0 0 0 0 0 0",
  6132. " 0 0 0 x x x a9 a8",
  6133. " a7 a6 a5 a4 a3 a2 a1 a0",
  6134. " i i i i i i i i";
  6135. loadpage_lo = " 1 1 0 0 0 0 0 1",
  6136. " 0 0 0 0 0 0 0 0",
  6137. " 0 0 0 0 0 0 a1 a0",
  6138. " i i i i i i i i";
  6139. writepage = " 1 1 0 0 0 0 1 0",
  6140. " 0 0 x x x x a9 a8",
  6141. " a7 a6 a5 a4 a3 a2 0 0",
  6142. " x x x x x x x x";
  6143. mode = 0x41;
  6144. delay = 5;
  6145. blocksize = 4;
  6146. readsize = 256;
  6147. ;
  6148. memory "flash"
  6149. paged = yes;
  6150. size = 32768;
  6151. page_size = 128;
  6152. num_pages = 256;
  6153. min_write_delay = 4500;
  6154. max_write_delay = 4500;
  6155. readback_p1 = 0xff;
  6156. readback_p2 = 0xff;
  6157. read_lo = " 0 0 1 0 0 0 0 0",
  6158. " 0 0 a13 a12 a11 a10 a9 a8",
  6159. " a7 a6 a5 a4 a3 a2 a1 a0",
  6160. " o o o o o o o o";
  6161. read_hi = " 0 0 1 0 1 0 0 0",
  6162. " 0 0 a13 a12 a11 a10 a9 a8",
  6163. " a7 a6 a5 a4 a3 a2 a1 a0",
  6164. " o o o o o o o o";
  6165. loadpage_lo = " 0 1 0 0 0 0 0 0",
  6166. " 0 0 0 x x x x x",
  6167. " x x a5 a4 a3 a2 a1 a0",
  6168. " i i i i i i i i";
  6169. loadpage_hi = " 0 1 0 0 1 0 0 0",
  6170. " 0 0 0 x x x x x",
  6171. " x x a5 a4 a3 a2 a1 a0",
  6172. " i i i i i i i i";
  6173. writepage = " 0 1 0 0 1 1 0 0",
  6174. " 0 0 a13 a12 a11 a10 a9 a8",
  6175. " a7 a6 x x x x x x",
  6176. " x x x x x x x x";
  6177. mode = 0x41;
  6178. delay = 6;
  6179. blocksize = 128;
  6180. readsize = 256;
  6181. ;
  6182. memory "lfuse"
  6183. size = 1;
  6184. min_write_delay = 4500;
  6185. max_write_delay = 4500;
  6186. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  6187. "x x x x x x x x o o o o o o o o";
  6188. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  6189. "x x x x x x x x i i i i i i i i";
  6190. ;
  6191. memory "hfuse"
  6192. size = 1;
  6193. min_write_delay = 4500;
  6194. max_write_delay = 4500;
  6195. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  6196. "x x x x x x x x o o o o o o o o";
  6197. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  6198. "x x x x x x x x i i i i i i i i";
  6199. ;
  6200. memory "efuse"
  6201. size = 1;
  6202. min_write_delay = 4500;
  6203. max_write_delay = 4500;
  6204. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  6205. "x x x x x x x x x x x x x o o o";
  6206. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  6207. "x x x x x x x x x x x x x i i i";
  6208. ;
  6209. memory "lock"
  6210. size = 1;
  6211. min_write_delay = 4500;
  6212. max_write_delay = 4500;
  6213. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  6214. "x x x x x x x x x x o o o o o o";
  6215. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  6216. "x x x x x x x x 1 1 i i i i i i";
  6217. ;
  6218. memory "calibration"
  6219. size = 1;
  6220. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  6221. "0 0 0 0 0 0 0 0 o o o o o o o o";
  6222. ;
  6223. memory "signature"
  6224. size = 3;
  6225. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  6226. "x x x x x x a1 a0 o o o o o o o o";
  6227. ;
  6228. ;
  6229. #------------------------------------------------------------
  6230. # ATtiny2313
  6231. #------------------------------------------------------------
  6232. part
  6233. id = "t2313";
  6234. desc = "ATtiny2313";
  6235. has_debugwire = yes;
  6236. flash_instr = 0xB2, 0x0F, 0x1F;
  6237. eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  6238. 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC,
  6239. 0x99, 0xE1, 0xBB, 0xAC;
  6240. stk500_devcode = 0x23;
  6241. ## Use the ATtiny26 devcode:
  6242. avr910_devcode = 0x5e;
  6243. signature = 0x1e 0x91 0x0a;
  6244. pagel = 0xD4;
  6245. bs2 = 0xD6;
  6246. reset = io;
  6247. chip_erase_delay = 9000;
  6248. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  6249. "x x x x x x x x x x x x x x x x";
  6250. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  6251. "x x x x x x x x x x x x x x x x";
  6252. timeout = 200;
  6253. stabdelay = 100;
  6254. cmdexedelay = 25;
  6255. synchloops = 32;
  6256. bytedelay = 0;
  6257. pollindex = 3;
  6258. pollvalue = 0x53;
  6259. predelay = 1;
  6260. postdelay = 1;
  6261. pollmethod = 1;
  6262. pp_controlstack =
  6263. 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E,
  6264. 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E,
  6265. 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A,
  6266. 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  6267. hventerstabdelay = 100;
  6268. progmodedelay = 0;
  6269. latchcycles = 5;
  6270. togglevtg = 1;
  6271. poweroffdelay = 15;
  6272. resetdelayms = 1;
  6273. resetdelayus = 0;
  6274. hvleavestabdelay = 15;
  6275. chiperasepulsewidth = 0;
  6276. chiperasepolltimeout = 10;
  6277. programfusepulsewidth = 0;
  6278. programfusepolltimeout = 5;
  6279. programlockpulsewidth = 0;
  6280. programlockpolltimeout = 5;
  6281. memory "eeprom"
  6282. size = 128;
  6283. paged = no;
  6284. page_size = 4;
  6285. min_write_delay = 4000;
  6286. max_write_delay = 4500;
  6287. readback_p1 = 0xff;
  6288. readback_p2 = 0xff;
  6289. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x",
  6290. "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  6291. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x",
  6292. "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  6293. loadpage_lo = " 1 1 0 0 0 0 0 1",
  6294. " 0 0 0 0 0 0 0 0",
  6295. " 0 0 0 0 0 0 a1 a0",
  6296. " i i i i i i i i";
  6297. writepage = " 1 1 0 0 0 0 1 0",
  6298. " 0 0 x x x x x x",
  6299. " x a6 a5 a4 a3 a2 0 0",
  6300. " x x x x x x x x";
  6301. mode = 0x41;
  6302. delay = 6;
  6303. blocksize = 4;
  6304. readsize = 256;
  6305. ;
  6306. memory "flash"
  6307. paged = yes;
  6308. size = 2048;
  6309. page_size = 32;
  6310. num_pages = 64;
  6311. min_write_delay = 4500;
  6312. max_write_delay = 4500;
  6313. readback_p1 = 0xff;
  6314. readback_p2 = 0xff;
  6315. read_lo = " 0 0 1 0 0 0 0 0",
  6316. " 0 0 0 0 0 0 a9 a8",
  6317. " a7 a6 a5 a4 a3 a2 a1 a0",
  6318. " o o o o o o o o";
  6319. read_hi = " 0 0 1 0 1 0 0 0",
  6320. " 0 0 0 0 0 0 a9 a8",
  6321. " a7 a6 a5 a4 a3 a2 a1 a0",
  6322. " o o o o o o o o";
  6323. # The information in the data sheet of April/2004 is wrong, this works:
  6324. loadpage_lo = " 0 1 0 0 0 0 0 0",
  6325. " 0 0 0 x x x x x",
  6326. " x x x x a3 a2 a1 a0",
  6327. " i i i i i i i i";
  6328. # The information in the data sheet of April/2004 is wrong, this works:
  6329. loadpage_hi = " 0 1 0 0 1 0 0 0",
  6330. " 0 0 0 x x x x x",
  6331. " x x x x a3 a2 a1 a0",
  6332. " i i i i i i i i";
  6333. # The information in the data sheet of April/2004 is wrong, this works:
  6334. writepage = " 0 1 0 0 1 1 0 0",
  6335. " 0 0 0 0 0 0 a9 a8",
  6336. " a7 a6 a5 a4 x x x x",
  6337. " x x x x x x x x";
  6338. mode = 0x41;
  6339. delay = 6;
  6340. blocksize = 32;
  6341. readsize = 256;
  6342. ;
  6343. # ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A.
  6344. memory "signature"
  6345. size = 3;
  6346. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  6347. "x x x x x x a1 a0 o o o o o o o o";
  6348. ;
  6349. memory "lock"
  6350. size = 1;
  6351. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  6352. "x x x x x x x x 1 1 i i i i i i";
  6353. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  6354. "x x x x x x x x x x o o o o o o";
  6355. min_write_delay = 9000;
  6356. max_write_delay = 9000;
  6357. ;
  6358. memory "lfuse"
  6359. size = 1;
  6360. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  6361. "x x x x x x x x i i i i i i i i";
  6362. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  6363. "x x x x x x x x o o o o o o o o";
  6364. min_write_delay = 9000;
  6365. max_write_delay = 9000;
  6366. ;
  6367. memory "hfuse"
  6368. size = 1;
  6369. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  6370. "x x x x x x x x i i i i i i i i";
  6371. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  6372. "x x x x x x x x o o o o o o o o";
  6373. min_write_delay = 9000;
  6374. max_write_delay = 9000;
  6375. ;
  6376. memory "efuse"
  6377. size = 1;
  6378. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  6379. "x x x x x x x x x x x x x x x i";
  6380. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  6381. "x x x x x x x x o o o o o o o o";
  6382. min_write_delay = 9000;
  6383. max_write_delay = 9000;
  6384. ;
  6385. # The Tiny2313 has calibration data for both 4 MHz and 8 MHz.
  6386. # The information in the data sheet of April/2004 is wrong, this works:
  6387. memory "calibration"
  6388. size = 2;
  6389. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  6390. "0 0 0 0 0 0 0 a0 o o o o o o o o";
  6391. ;
  6392. ;
  6393. #------------------------------------------------------------
  6394. # AT90PWM2
  6395. #------------------------------------------------------------
  6396. part
  6397. id = "pwm2";
  6398. desc = "AT90PWM2";
  6399. has_debugwire = yes;
  6400. flash_instr = 0xB6, 0x01, 0x11;
  6401. eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
  6402. 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
  6403. 0x99, 0xF9, 0xBB, 0xAF;
  6404. stk500_devcode = 0x65;
  6405. ## avr910_devcode = ?;
  6406. signature = 0x1e 0x93 0x81;
  6407. pagel = 0xD8;
  6408. bs2 = 0xE2;
  6409. reset = io;
  6410. chip_erase_delay = 9000;
  6411. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  6412. "x x x x x x x x x x x x x x x x";
  6413. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  6414. "x x x x x x x x x x x x x x x x";
  6415. timeout = 200;
  6416. stabdelay = 100;
  6417. cmdexedelay = 25;
  6418. synchloops = 32;
  6419. bytedelay = 0;
  6420. pollindex = 3;
  6421. pollvalue = 0x53;
  6422. predelay = 1;
  6423. postdelay = 1;
  6424. pollmethod = 1;
  6425. pp_controlstack =
  6426. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  6427. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  6428. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  6429. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  6430. hventerstabdelay = 100;
  6431. progmodedelay = 0;
  6432. latchcycles = 5;
  6433. togglevtg = 1;
  6434. poweroffdelay = 15;
  6435. resetdelayms = 1;
  6436. resetdelayus = 0;
  6437. hvleavestabdelay = 15;
  6438. chiperasepulsewidth = 0;
  6439. chiperasepolltimeout = 10;
  6440. programfusepulsewidth = 0;
  6441. programfusepolltimeout = 5;
  6442. programlockpulsewidth = 0;
  6443. programlockpolltimeout = 5;
  6444. memory "eeprom"
  6445. size = 512;
  6446. paged = no;
  6447. page_size = 4;
  6448. min_write_delay = 4000;
  6449. max_write_delay = 4500;
  6450. readback_p1 = 0xff;
  6451. readback_p2 = 0xff;
  6452. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8",
  6453. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  6454. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8",
  6455. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  6456. loadpage_lo = " 1 1 0 0 0 0 0 1",
  6457. " 0 0 0 0 0 0 0 0",
  6458. " 0 0 0 0 0 0 a1 a0",
  6459. " i i i i i i i i";
  6460. writepage = " 1 1 0 0 0 0 1 0",
  6461. " 0 0 x x x x x x",
  6462. " a7 a6 a5 a4 a3 a2 0 0",
  6463. " x x x x x x x x";
  6464. mode = 0x41;
  6465. delay = 6;
  6466. blocksize = 4;
  6467. readsize = 256;
  6468. ;
  6469. memory "flash"
  6470. paged = yes;
  6471. size = 8192;
  6472. page_size = 64;
  6473. num_pages = 128;
  6474. min_write_delay = 4500;
  6475. max_write_delay = 4500;
  6476. readback_p1 = 0xff;
  6477. readback_p2 = 0xff;
  6478. read_lo = " 0 0 1 0 0 0 0 0",
  6479. " 0 0 0 0 a11 a10 a9 a8",
  6480. " a7 a6 a5 a4 a3 a2 a1 a0",
  6481. " o o o o o o o o";
  6482. read_hi = " 0 0 1 0 1 0 0 0",
  6483. " 0 0 0 0 a11 a10 a9 a8",
  6484. " a7 a6 a5 a4 a3 a2 a1 a0",
  6485. " o o o o o o o o";
  6486. loadpage_lo = " 0 1 0 0 0 0 0 0",
  6487. " 0 0 0 x x x x x",
  6488. " x x x a4 a3 a2 a1 a0",
  6489. " i i i i i i i i";
  6490. loadpage_hi = " 0 1 0 0 1 0 0 0",
  6491. " 0 0 0 x x x x x",
  6492. " x x x a4 a3 a2 a1 a0",
  6493. " i i i i i i i i";
  6494. writepage = " 0 1 0 0 1 1 0 0",
  6495. " 0 0 0 0 a11 a10 a9 a8",
  6496. " a7 a6 a5 x x x x x",
  6497. " x x x x x x x x";
  6498. mode = 0x41;
  6499. delay = 6;
  6500. blocksize = 64;
  6501. readsize = 256;
  6502. ;
  6503. # AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81.
  6504. memory "signature"
  6505. size = 3;
  6506. read = "0 0 1 1 0 0 0 0 0 0 x x x x x x",
  6507. "x x x x x x a1 a0 o o o o o o o o";
  6508. ;
  6509. memory "lock"
  6510. size = 1;
  6511. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  6512. "x x x x x x x x 1 1 i i i i i i";
  6513. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  6514. "x x x x x x x x x x o o o o o o";
  6515. min_write_delay = 9000;
  6516. max_write_delay = 9000;
  6517. ;
  6518. memory "lfuse"
  6519. size = 1;
  6520. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  6521. "x x x x x x x x i i i i i i i i";
  6522. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  6523. "x x x x x x x x o o o o o o o o";
  6524. min_write_delay = 9000;
  6525. max_write_delay = 9000;
  6526. ;
  6527. memory "hfuse"
  6528. size = 1;
  6529. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  6530. "x x x x x x x x i i i i i i i i";
  6531. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  6532. "x x x x x x x x o o o o o o o o";
  6533. min_write_delay = 9000;
  6534. max_write_delay = 9000;
  6535. ;
  6536. memory "efuse"
  6537. size = 1;
  6538. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  6539. "x x x x x x x x x x x x x x x i";
  6540. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  6541. "x x x x x x x x o o o o o o o o";
  6542. min_write_delay = 9000;
  6543. max_write_delay = 9000;
  6544. ;
  6545. memory "calibration"
  6546. size = 1;
  6547. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  6548. "0 0 0 0 0 0 0 0 o o o o o o o o";
  6549. ;
  6550. ;
  6551. #------------------------------------------------------------
  6552. # AT90PWM3
  6553. #------------------------------------------------------------
  6554. # Completely identical to AT90PWM2 (including the signature!)
  6555. part
  6556. id = "pwm3";
  6557. desc = "AT90PWM3";
  6558. has_debugwire = yes;
  6559. flash_instr = 0xB6, 0x01, 0x11;
  6560. eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
  6561. 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
  6562. 0x99, 0xF9, 0xBB, 0xAF;
  6563. stk500_devcode = 0x65;
  6564. ## avr910_devcode = ?;
  6565. signature = 0x1e 0x93 0x81;
  6566. pagel = 0xD8;
  6567. bs2 = 0xE2;
  6568. reset = io;
  6569. chip_erase_delay = 9000;
  6570. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  6571. "x x x x x x x x x x x x x x x x";
  6572. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  6573. "x x x x x x x x x x x x x x x x";
  6574. timeout = 200;
  6575. stabdelay = 100;
  6576. cmdexedelay = 25;
  6577. synchloops = 32;
  6578. bytedelay = 0;
  6579. pollindex = 3;
  6580. pollvalue = 0x53;
  6581. predelay = 1;
  6582. postdelay = 1;
  6583. pollmethod = 1;
  6584. pp_controlstack =
  6585. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  6586. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  6587. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  6588. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  6589. hventerstabdelay = 100;
  6590. progmodedelay = 0;
  6591. latchcycles = 5;
  6592. togglevtg = 1;
  6593. poweroffdelay = 15;
  6594. resetdelayms = 1;
  6595. resetdelayus = 0;
  6596. hvleavestabdelay = 15;
  6597. chiperasepulsewidth = 0;
  6598. chiperasepolltimeout = 10;
  6599. programfusepulsewidth = 0;
  6600. programfusepolltimeout = 5;
  6601. programlockpulsewidth = 0;
  6602. programlockpolltimeout = 5;
  6603. memory "eeprom"
  6604. size = 512;
  6605. paged = no;
  6606. page_size = 4;
  6607. min_write_delay = 4000;
  6608. max_write_delay = 4500;
  6609. readback_p1 = 0xff;
  6610. readback_p2 = 0xff;
  6611. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8",
  6612. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  6613. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8",
  6614. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  6615. loadpage_lo = " 1 1 0 0 0 0 0 1",
  6616. " 0 0 0 0 0 0 0 0",
  6617. " 0 0 0 0 0 0 a1 a0",
  6618. " i i i i i i i i";
  6619. writepage = " 1 1 0 0 0 0 1 0",
  6620. " 0 0 x x x x x x",
  6621. " a7 a6 a5 a4 a3 a2 0 0",
  6622. " x x x x x x x x";
  6623. mode = 0x41;
  6624. delay = 6;
  6625. blocksize = 4;
  6626. readsize = 256;
  6627. ;
  6628. memory "flash"
  6629. paged = yes;
  6630. size = 8192;
  6631. page_size = 64;
  6632. num_pages = 128;
  6633. min_write_delay = 4500;
  6634. max_write_delay = 4500;
  6635. readback_p1 = 0xff;
  6636. readback_p2 = 0xff;
  6637. read_lo = " 0 0 1 0 0 0 0 0",
  6638. " 0 0 0 0 a11 a10 a9 a8",
  6639. " a7 a6 a5 a4 a3 a2 a1 a0",
  6640. " o o o o o o o o";
  6641. read_hi = " 0 0 1 0 1 0 0 0",
  6642. " 0 0 0 0 a11 a10 a9 a8",
  6643. " a7 a6 a5 a4 a3 a2 a1 a0",
  6644. " o o o o o o o o";
  6645. loadpage_lo = " 0 1 0 0 0 0 0 0",
  6646. " 0 0 0 x x x x x",
  6647. " x x x a4 a3 a2 a1 a0",
  6648. " i i i i i i i i";
  6649. loadpage_hi = " 0 1 0 0 1 0 0 0",
  6650. " 0 0 0 x x x x x",
  6651. " x x x a4 a3 a2 a1 a0",
  6652. " i i i i i i i i";
  6653. writepage = " 0 1 0 0 1 1 0 0",
  6654. " 0 0 0 0 a11 a10 a9 a8",
  6655. " a7 a6 a5 x x x x x",
  6656. " x x x x x x x x";
  6657. mode = 0x41;
  6658. delay = 6;
  6659. blocksize = 64;
  6660. readsize = 256;
  6661. ;
  6662. # AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81.
  6663. memory "signature"
  6664. size = 3;
  6665. read = "0 0 1 1 0 0 0 0 0 0 x x x x x x",
  6666. "x x x x x x a1 a0 o o o o o o o o";
  6667. ;
  6668. memory "lock"
  6669. size = 1;
  6670. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  6671. "x x x x x x x x 1 1 i i i i i i";
  6672. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  6673. "x x x x x x x x x x o o o o o o";
  6674. min_write_delay = 9000;
  6675. max_write_delay = 9000;
  6676. ;
  6677. memory "lfuse"
  6678. size = 1;
  6679. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  6680. "x x x x x x x x i i i i i i i i";
  6681. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  6682. "x x x x x x x x o o o o o o o o";
  6683. min_write_delay = 9000;
  6684. max_write_delay = 9000;
  6685. ;
  6686. memory "hfuse"
  6687. size = 1;
  6688. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  6689. "x x x x x x x x i i i i i i i i";
  6690. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  6691. "x x x x x x x x o o o o o o o o";
  6692. min_write_delay = 9000;
  6693. max_write_delay = 9000;
  6694. ;
  6695. memory "efuse"
  6696. size = 1;
  6697. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  6698. "x x x x x x x x x x x x x x x i";
  6699. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  6700. "x x x x x x x x o o o o o o o o";
  6701. min_write_delay = 9000;
  6702. max_write_delay = 9000;
  6703. ;
  6704. memory "calibration"
  6705. size = 1;
  6706. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  6707. "0 0 0 0 0 0 0 0 o o o o o o o o";
  6708. ;
  6709. ;
  6710. #------------------------------------------------------------
  6711. # AT90PWM2B
  6712. #------------------------------------------------------------
  6713. # Same as AT90PWM2 but different signature.
  6714. part
  6715. id = "pwm2b";
  6716. desc = "AT90PWM2B";
  6717. has_debugwire = yes;
  6718. flash_instr = 0xB6, 0x01, 0x11;
  6719. eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
  6720. 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
  6721. 0x99, 0xF9, 0xBB, 0xAF;
  6722. stk500_devcode = 0x65;
  6723. ## avr910_devcode = ?;
  6724. signature = 0x1e 0x93 0x83;
  6725. pagel = 0xD8;
  6726. bs2 = 0xE2;
  6727. reset = io;
  6728. chip_erase_delay = 9000;
  6729. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  6730. "x x x x x x x x x x x x x x x x";
  6731. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  6732. "x x x x x x x x x x x x x x x x";
  6733. timeout = 200;
  6734. stabdelay = 100;
  6735. cmdexedelay = 25;
  6736. synchloops = 32;
  6737. bytedelay = 0;
  6738. pollindex = 3;
  6739. pollvalue = 0x53;
  6740. predelay = 1;
  6741. postdelay = 1;
  6742. pollmethod = 1;
  6743. pp_controlstack =
  6744. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  6745. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  6746. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  6747. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  6748. hventerstabdelay = 100;
  6749. progmodedelay = 0;
  6750. latchcycles = 5;
  6751. togglevtg = 1;
  6752. poweroffdelay = 15;
  6753. resetdelayms = 1;
  6754. resetdelayus = 0;
  6755. hvleavestabdelay = 15;
  6756. chiperasepulsewidth = 0;
  6757. chiperasepolltimeout = 10;
  6758. programfusepulsewidth = 0;
  6759. programfusepolltimeout = 5;
  6760. programlockpulsewidth = 0;
  6761. programlockpolltimeout = 5;
  6762. memory "eeprom"
  6763. size = 512;
  6764. paged = no;
  6765. page_size = 4;
  6766. min_write_delay = 4000;
  6767. max_write_delay = 4500;
  6768. readback_p1 = 0xff;
  6769. readback_p2 = 0xff;
  6770. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8",
  6771. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  6772. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8",
  6773. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  6774. loadpage_lo = " 1 1 0 0 0 0 0 1",
  6775. " 0 0 0 0 0 0 0 0",
  6776. " 0 0 0 0 0 0 a1 a0",
  6777. " i i i i i i i i";
  6778. writepage = " 1 1 0 0 0 0 1 0",
  6779. " 0 0 x x x x x x",
  6780. " a7 a6 a5 a4 a3 a2 0 0",
  6781. " x x x x x x x x";
  6782. mode = 0x41;
  6783. delay = 6;
  6784. blocksize = 4;
  6785. readsize = 256;
  6786. ;
  6787. memory "flash"
  6788. paged = yes;
  6789. size = 8192;
  6790. page_size = 64;
  6791. num_pages = 128;
  6792. min_write_delay = 4500;
  6793. max_write_delay = 4500;
  6794. readback_p1 = 0xff;
  6795. readback_p2 = 0xff;
  6796. read_lo = " 0 0 1 0 0 0 0 0",
  6797. " 0 0 0 0 a11 a10 a9 a8",
  6798. " a7 a6 a5 a4 a3 a2 a1 a0",
  6799. " o o o o o o o o";
  6800. read_hi = " 0 0 1 0 1 0 0 0",
  6801. " 0 0 0 0 a11 a10 a9 a8",
  6802. " a7 a6 a5 a4 a3 a2 a1 a0",
  6803. " o o o o o o o o";
  6804. loadpage_lo = " 0 1 0 0 0 0 0 0",
  6805. " 0 0 0 x x x x x",
  6806. " x x x a4 a3 a2 a1 a0",
  6807. " i i i i i i i i";
  6808. loadpage_hi = " 0 1 0 0 1 0 0 0",
  6809. " 0 0 0 x x x x x",
  6810. " x x x a4 a3 a2 a1 a0",
  6811. " i i i i i i i i";
  6812. writepage = " 0 1 0 0 1 1 0 0",
  6813. " 0 0 0 0 a11 a10 a9 a8",
  6814. " a7 a6 a5 x x x x x",
  6815. " x x x x x x x x";
  6816. mode = 0x41;
  6817. delay = 6;
  6818. blocksize = 64;
  6819. readsize = 256;
  6820. ;
  6821. memory "signature"
  6822. size = 3;
  6823. read = "0 0 1 1 0 0 0 0 0 0 x x x x x x",
  6824. "x x x x x x a1 a0 o o o o o o o o";
  6825. ;
  6826. memory "lock"
  6827. size = 1;
  6828. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  6829. "x x x x x x x x 1 1 i i i i i i";
  6830. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  6831. "x x x x x x x x x x o o o o o o";
  6832. min_write_delay = 9000;
  6833. max_write_delay = 9000;
  6834. ;
  6835. memory "lfuse"
  6836. size = 1;
  6837. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  6838. "x x x x x x x x i i i i i i i i";
  6839. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  6840. "x x x x x x x x o o o o o o o o";
  6841. min_write_delay = 9000;
  6842. max_write_delay = 9000;
  6843. ;
  6844. memory "hfuse"
  6845. size = 1;
  6846. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  6847. "x x x x x x x x i i i i i i i i";
  6848. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  6849. "x x x x x x x x o o o o o o o o";
  6850. min_write_delay = 9000;
  6851. max_write_delay = 9000;
  6852. ;
  6853. memory "efuse"
  6854. size = 1;
  6855. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  6856. "x x x x x x x x x x x x x x x i";
  6857. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  6858. "x x x x x x x x o o o o o o o o";
  6859. min_write_delay = 9000;
  6860. max_write_delay = 9000;
  6861. ;
  6862. memory "calibration"
  6863. size = 1;
  6864. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  6865. "0 0 0 0 0 0 0 0 o o o o o o o o";
  6866. ;
  6867. ;
  6868. #------------------------------------------------------------
  6869. # AT90PWM3B
  6870. #------------------------------------------------------------
  6871. # Completely identical to AT90PWM2B (including the signature!)
  6872. part
  6873. id = "pwm3b";
  6874. desc = "AT90PWM3B";
  6875. has_debugwire = yes;
  6876. flash_instr = 0xB6, 0x01, 0x11;
  6877. eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
  6878. 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
  6879. 0x99, 0xF9, 0xBB, 0xAF;
  6880. stk500_devcode = 0x65;
  6881. ## avr910_devcode = ?;
  6882. signature = 0x1e 0x93 0x83;
  6883. pagel = 0xD8;
  6884. bs2 = 0xE2;
  6885. reset = io;
  6886. chip_erase_delay = 9000;
  6887. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  6888. "x x x x x x x x x x x x x x x x";
  6889. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  6890. "x x x x x x x x x x x x x x x x";
  6891. timeout = 200;
  6892. stabdelay = 100;
  6893. cmdexedelay = 25;
  6894. synchloops = 32;
  6895. bytedelay = 0;
  6896. pollindex = 3;
  6897. pollvalue = 0x53;
  6898. predelay = 1;
  6899. postdelay = 1;
  6900. pollmethod = 1;
  6901. pp_controlstack =
  6902. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  6903. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  6904. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  6905. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  6906. hventerstabdelay = 100;
  6907. progmodedelay = 0;
  6908. latchcycles = 5;
  6909. togglevtg = 1;
  6910. poweroffdelay = 15;
  6911. resetdelayms = 1;
  6912. resetdelayus = 0;
  6913. hvleavestabdelay = 15;
  6914. chiperasepulsewidth = 0;
  6915. chiperasepolltimeout = 10;
  6916. programfusepulsewidth = 0;
  6917. programfusepolltimeout = 5;
  6918. programlockpulsewidth = 0;
  6919. programlockpolltimeout = 5;
  6920. memory "eeprom"
  6921. size = 512;
  6922. paged = no;
  6923. page_size = 4;
  6924. min_write_delay = 4000;
  6925. max_write_delay = 4500;
  6926. readback_p1 = 0xff;
  6927. readback_p2 = 0xff;
  6928. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8",
  6929. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  6930. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8",
  6931. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  6932. loadpage_lo = " 1 1 0 0 0 0 0 1",
  6933. " 0 0 0 0 0 0 0 0",
  6934. " 0 0 0 0 0 0 a1 a0",
  6935. " i i i i i i i i";
  6936. writepage = " 1 1 0 0 0 0 1 0",
  6937. " 0 0 x x x x x x",
  6938. " a7 a6 a5 a4 a3 a2 0 0",
  6939. " x x x x x x x x";
  6940. mode = 0x41;
  6941. delay = 6;
  6942. blocksize = 4;
  6943. readsize = 256;
  6944. ;
  6945. memory "flash"
  6946. paged = yes;
  6947. size = 8192;
  6948. page_size = 64;
  6949. num_pages = 128;
  6950. min_write_delay = 4500;
  6951. max_write_delay = 4500;
  6952. readback_p1 = 0xff;
  6953. readback_p2 = 0xff;
  6954. read_lo = " 0 0 1 0 0 0 0 0",
  6955. " 0 0 0 0 a11 a10 a9 a8",
  6956. " a7 a6 a5 a4 a3 a2 a1 a0",
  6957. " o o o o o o o o";
  6958. read_hi = " 0 0 1 0 1 0 0 0",
  6959. " 0 0 0 0 a11 a10 a9 a8",
  6960. " a7 a6 a5 a4 a3 a2 a1 a0",
  6961. " o o o o o o o o";
  6962. loadpage_lo = " 0 1 0 0 0 0 0 0",
  6963. " 0 0 0 x x x x x",
  6964. " x x x a4 a3 a2 a1 a0",
  6965. " i i i i i i i i";
  6966. loadpage_hi = " 0 1 0 0 1 0 0 0",
  6967. " 0 0 0 x x x x x",
  6968. " x x x a4 a3 a2 a1 a0",
  6969. " i i i i i i i i";
  6970. writepage = " 0 1 0 0 1 1 0 0",
  6971. " 0 0 0 0 a11 a10 a9 a8",
  6972. " a7 a6 a5 x x x x x",
  6973. " x x x x x x x x";
  6974. mode = 0x41;
  6975. delay = 6;
  6976. blocksize = 64;
  6977. readsize = 256;
  6978. ;
  6979. memory "signature"
  6980. size = 3;
  6981. read = "0 0 1 1 0 0 0 0 0 0 x x x x x x",
  6982. "x x x x x x a1 a0 o o o o o o o o";
  6983. ;
  6984. memory "lock"
  6985. size = 1;
  6986. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  6987. "x x x x x x x x 1 1 i i i i i i";
  6988. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  6989. "x x x x x x x x x x o o o o o o";
  6990. min_write_delay = 9000;
  6991. max_write_delay = 9000;
  6992. ;
  6993. memory "lfuse"
  6994. size = 1;
  6995. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  6996. "x x x x x x x x i i i i i i i i";
  6997. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  6998. "x x x x x x x x o o o o o o o o";
  6999. min_write_delay = 9000;
  7000. max_write_delay = 9000;
  7001. ;
  7002. memory "hfuse"
  7003. size = 1;
  7004. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  7005. "x x x x x x x x i i i i i i i i";
  7006. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  7007. "x x x x x x x x o o o o o o o o";
  7008. min_write_delay = 9000;
  7009. max_write_delay = 9000;
  7010. ;
  7011. memory "efuse"
  7012. size = 1;
  7013. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  7014. "x x x x x x x x x x x x x x x i";
  7015. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  7016. "x x x x x x x x o o o o o o o o";
  7017. min_write_delay = 9000;
  7018. max_write_delay = 9000;
  7019. ;
  7020. memory "calibration"
  7021. size = 1;
  7022. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  7023. "0 0 0 0 0 0 0 0 o o o o o o o o";
  7024. ;
  7025. ;
  7026. #------------------------------------------------------------
  7027. # ATtiny25
  7028. #------------------------------------------------------------
  7029. part
  7030. id = "t25";
  7031. desc = "ATtiny25";
  7032. has_debugwire = yes;
  7033. flash_instr = 0xB4, 0x02, 0x12;
  7034. eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  7035. 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
  7036. 0x99, 0xE1, 0xBB, 0xAC;
  7037. ## no STK500 devcode in XML file, use the ATtiny45 one
  7038. stk500_devcode = 0x14;
  7039. ## avr910_devcode = ?;
  7040. ## Try the AT90S2313 devcode:
  7041. avr910_devcode = 0x20;
  7042. signature = 0x1e 0x91 0x08;
  7043. reset = io;
  7044. chip_erase_delay = 4500;
  7045. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  7046. "x x x x x x x x x x x x x x x x";
  7047. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  7048. "x x x x x x x x x x x x x x x x";
  7049. timeout = 200;
  7050. stabdelay = 100;
  7051. cmdexedelay = 25;
  7052. synchloops = 32;
  7053. bytedelay = 0;
  7054. pollindex = 3;
  7055. pollvalue = 0x53;
  7056. predelay = 1;
  7057. postdelay = 1;
  7058. pollmethod = 1;
  7059. hvsp_controlstack =
  7060. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
  7061. 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
  7062. 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  7063. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
  7064. hventerstabdelay = 100;
  7065. hvspcmdexedelay = 0;
  7066. synchcycles = 6;
  7067. latchcycles = 1;
  7068. togglevtg = 1;
  7069. poweroffdelay = 25;
  7070. resetdelayms = 1;
  7071. resetdelayus = 0;
  7072. hvleavestabdelay = 100;
  7073. resetdelay = 25;
  7074. chiperasepolltimeout = 40;
  7075. chiperasetime = 0;
  7076. programfusepolltimeout = 25;
  7077. programlockpolltimeout = 25;
  7078. memory "eeprom"
  7079. size = 128;
  7080. paged = no;
  7081. page_size = 4;
  7082. min_write_delay = 4000;
  7083. max_write_delay = 4500;
  7084. readback_p1 = 0xff;
  7085. readback_p2 = 0xff;
  7086. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x",
  7087. "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  7088. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x",
  7089. "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  7090. loadpage_lo = " 1 1 0 0 0 0 0 1",
  7091. " 0 0 0 0 0 0 0 0",
  7092. " 0 0 0 0 0 0 a1 a0",
  7093. " i i i i i i i i";
  7094. writepage = " 1 1 0 0 0 0 1 0",
  7095. " 0 0 x x x x x x",
  7096. " x a6 a5 a4 a3 a2 0 0",
  7097. " x x x x x x x x";
  7098. mode = 0x41;
  7099. delay = 6;
  7100. blocksize = 4;
  7101. readsize = 256;
  7102. ;
  7103. memory "flash"
  7104. paged = yes;
  7105. size = 2048;
  7106. page_size = 32;
  7107. num_pages = 64;
  7108. min_write_delay = 4500;
  7109. max_write_delay = 4500;
  7110. readback_p1 = 0xff;
  7111. readback_p2 = 0xff;
  7112. read_lo = " 0 0 1 0 0 0 0 0",
  7113. " 0 0 0 0 0 0 a9 a8",
  7114. " a7 a6 a5 a4 a3 a2 a1 a0",
  7115. " o o o o o o o o";
  7116. read_hi = " 0 0 1 0 1 0 0 0",
  7117. " 0 0 0 0 0 0 a9 a8",
  7118. " a7 a6 a5 a4 a3 a2 a1 a0",
  7119. " o o o o o o o o";
  7120. loadpage_lo = " 0 1 0 0 0 0 0 0",
  7121. " 0 0 0 x x x x x",
  7122. " x x x x a3 a2 a1 a0",
  7123. " i i i i i i i i";
  7124. loadpage_hi = " 0 1 0 0 1 0 0 0",
  7125. " 0 0 0 x x x x x",
  7126. " x x x x a3 a2 a1 a0",
  7127. " i i i i i i i i";
  7128. writepage = " 0 1 0 0 1 1 0 0",
  7129. " 0 0 0 0 0 0 a9 a8",
  7130. " a7 a6 a5 a4 x x x x",
  7131. " x x x x x x x x";
  7132. mode = 0x41;
  7133. delay = 6;
  7134. blocksize = 32;
  7135. readsize = 256;
  7136. ;
  7137. # ATtiny25 has Signature Bytes: 0x1E 0x91 0x08.
  7138. memory "signature"
  7139. size = 3;
  7140. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  7141. "x x x x x x a1 a0 o o o o o o o o";
  7142. ;
  7143. memory "lock"
  7144. size = 1;
  7145. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  7146. "x x x x x x x x 1 1 i i i i i i";
  7147. min_write_delay = 9000;
  7148. max_write_delay = 9000;
  7149. ;
  7150. memory "lfuse"
  7151. size = 1;
  7152. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  7153. "x x x x x x x x i i i i i i i i";
  7154. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  7155. "x x x x x x x x o o o o o o o o";
  7156. min_write_delay = 9000;
  7157. max_write_delay = 9000;
  7158. ;
  7159. memory "hfuse"
  7160. size = 1;
  7161. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  7162. "x x x x x x x x i i i i i i i i";
  7163. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  7164. "x x x x x x x x o o o o o o o o";
  7165. min_write_delay = 9000;
  7166. max_write_delay = 9000;
  7167. ;
  7168. memory "efuse"
  7169. size = 1;
  7170. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  7171. "x x x x x x x x x x x x x x x i";
  7172. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  7173. "x x x x x x x x o o o o o o o o";
  7174. min_write_delay = 9000;
  7175. max_write_delay = 9000;
  7176. ;
  7177. memory "calibration"
  7178. size = 2;
  7179. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  7180. "0 0 0 0 0 0 0 a0 o o o o o o o o";
  7181. ;
  7182. ;
  7183. #------------------------------------------------------------
  7184. # ATtiny45
  7185. #------------------------------------------------------------
  7186. part
  7187. id = "t45";
  7188. desc = "ATtiny45";
  7189. has_debugwire = yes;
  7190. flash_instr = 0xB4, 0x02, 0x12;
  7191. eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  7192. 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
  7193. 0x99, 0xE1, 0xBB, 0xAC;
  7194. stk500_devcode = 0x14;
  7195. ## avr910_devcode = ?;
  7196. ## Try the AT90S2313 devcode:
  7197. avr910_devcode = 0x20;
  7198. signature = 0x1e 0x92 0x06;
  7199. reset = io;
  7200. chip_erase_delay = 4500;
  7201. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  7202. "x x x x x x x x x x x x x x x x";
  7203. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  7204. "x x x x x x x x x x x x x x x x";
  7205. timeout = 200;
  7206. stabdelay = 100;
  7207. cmdexedelay = 25;
  7208. synchloops = 32;
  7209. bytedelay = 0;
  7210. pollindex = 3;
  7211. pollvalue = 0x53;
  7212. predelay = 1;
  7213. postdelay = 1;
  7214. pollmethod = 1;
  7215. hvsp_controlstack =
  7216. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
  7217. 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
  7218. 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  7219. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
  7220. hventerstabdelay = 100;
  7221. progmodedelay = 0;
  7222. hvspcmdexedelay = 0;
  7223. synchcycles = 6;
  7224. latchcycles = 1;
  7225. togglevtg = 1;
  7226. poweroffdelay = 25;
  7227. resetdelayms = 1;
  7228. resetdelayus = 0;
  7229. hvleavestabdelay = 100;
  7230. resetdelay = 25;
  7231. chiperasepolltimeout = 40;
  7232. chiperasetime = 0;
  7233. programfusepolltimeout = 25;
  7234. programlockpolltimeout = 25;
  7235. memory "eeprom"
  7236. size = 256;
  7237. page_size = 4;
  7238. min_write_delay = 4000;
  7239. max_write_delay = 4500;
  7240. readback_p1 = 0xff;
  7241. readback_p2 = 0xff;
  7242. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x",
  7243. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  7244. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x",
  7245. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  7246. loadpage_lo = " 1 1 0 0 0 0 0 1",
  7247. " 0 0 0 0 0 0 0 0",
  7248. " 0 0 0 0 0 0 a1 a0",
  7249. " i i i i i i i i";
  7250. writepage = " 1 1 0 0 0 0 1 0",
  7251. " 0 0 x x x x x x",
  7252. " a7 a6 a5 a4 a3 a2 0 0",
  7253. " x x x x x x x x";
  7254. mode = 0x41;
  7255. delay = 6;
  7256. blocksize = 4;
  7257. readsize = 256;
  7258. ;
  7259. memory "flash"
  7260. paged = yes;
  7261. size = 4096;
  7262. page_size = 64;
  7263. num_pages = 64;
  7264. min_write_delay = 4500;
  7265. max_write_delay = 4500;
  7266. readback_p1 = 0xff;
  7267. readback_p2 = 0xff;
  7268. read_lo = " 0 0 1 0 0 0 0 0",
  7269. " 0 0 0 0 0 a10 a9 a8",
  7270. " a7 a6 a5 a4 a3 a2 a1 a0",
  7271. " o o o o o o o o";
  7272. read_hi = " 0 0 1 0 1 0 0 0",
  7273. " 0 0 0 0 0 a10 a9 a8",
  7274. " a7 a6 a5 a4 a3 a2 a1 a0",
  7275. " o o o o o o o o";
  7276. loadpage_lo = " 0 1 0 0 0 0 0 0",
  7277. " 0 0 0 x x x x x",
  7278. " x x x a4 a3 a2 a1 a0",
  7279. " i i i i i i i i";
  7280. loadpage_hi = " 0 1 0 0 1 0 0 0",
  7281. " 0 0 0 x x x x x",
  7282. " x x x a4 a3 a2 a1 a0",
  7283. " i i i i i i i i";
  7284. writepage = " 0 1 0 0 1 1 0 0",
  7285. " 0 0 0 0 0 a10 a9 a8",
  7286. " a7 a6 a5 x x x x x",
  7287. " x x x x x x x x";
  7288. mode = 0x41;
  7289. delay = 6;
  7290. blocksize = 32;
  7291. readsize = 256;
  7292. ;
  7293. # ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!)
  7294. memory "signature"
  7295. size = 3;
  7296. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  7297. "x x x x x x a1 a0 o o o o o o o o";
  7298. ;
  7299. memory "lock"
  7300. size = 1;
  7301. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  7302. "x x x x x x x x 1 1 i i i i i i";
  7303. min_write_delay = 9000;
  7304. max_write_delay = 9000;
  7305. ;
  7306. memory "lfuse"
  7307. size = 1;
  7308. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  7309. "x x x x x x x x i i i i i i i i";
  7310. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  7311. "x x x x x x x x o o o o o o o o";
  7312. min_write_delay = 9000;
  7313. max_write_delay = 9000;
  7314. ;
  7315. memory "hfuse"
  7316. size = 1;
  7317. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  7318. "x x x x x x x x i i i i i i i i";
  7319. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  7320. "x x x x x x x x o o o o o o o o";
  7321. min_write_delay = 9000;
  7322. max_write_delay = 9000;
  7323. ;
  7324. memory "efuse"
  7325. size = 1;
  7326. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  7327. "x x x x x x x x x x x x x x x i";
  7328. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  7329. "x x x x x x x x o o o o o o o o";
  7330. min_write_delay = 9000;
  7331. max_write_delay = 9000;
  7332. ;
  7333. memory "calibration"
  7334. size = 2;
  7335. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  7336. "0 0 0 0 0 0 0 a0 o o o o o o o o";
  7337. ;
  7338. ;
  7339. #------------------------------------------------------------
  7340. # ATtiny85
  7341. #------------------------------------------------------------
  7342. part
  7343. id = "t85";
  7344. desc = "ATtiny85";
  7345. has_debugwire = yes;
  7346. flash_instr = 0xB4, 0x02, 0x12;
  7347. eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  7348. 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
  7349. 0x99, 0xE1, 0xBB, 0xAC;
  7350. ## no STK500 devcode in XML file, use the ATtiny45 one
  7351. stk500_devcode = 0x14;
  7352. ## avr910_devcode = ?;
  7353. ## Try the AT90S2313 devcode:
  7354. avr910_devcode = 0x20;
  7355. signature = 0x1e 0x93 0x0b;
  7356. reset = io;
  7357. chip_erase_delay = 4500;
  7358. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  7359. "x x x x x x x x x x x x x x x x";
  7360. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  7361. "x x x x x x x x x x x x x x x x";
  7362. timeout = 200;
  7363. stabdelay = 100;
  7364. cmdexedelay = 25;
  7365. synchloops = 32;
  7366. bytedelay = 0;
  7367. pollindex = 3;
  7368. pollvalue = 0x53;
  7369. predelay = 1;
  7370. postdelay = 1;
  7371. pollmethod = 1;
  7372. hvsp_controlstack =
  7373. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
  7374. 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
  7375. 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  7376. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
  7377. hventerstabdelay = 100;
  7378. hvspcmdexedelay = 0;
  7379. synchcycles = 6;
  7380. latchcycles = 1;
  7381. togglevtg = 1;
  7382. poweroffdelay = 25;
  7383. resetdelayms = 1;
  7384. resetdelayus = 0;
  7385. hvleavestabdelay = 100;
  7386. resetdelay = 25;
  7387. chiperasepolltimeout = 40;
  7388. chiperasetime = 0;
  7389. programfusepolltimeout = 25;
  7390. programlockpolltimeout = 25;
  7391. memory "eeprom"
  7392. size = 512;
  7393. paged = no;
  7394. page_size = 4;
  7395. min_write_delay = 4000;
  7396. max_write_delay = 4500;
  7397. readback_p1 = 0xff;
  7398. readback_p2 = 0xff;
  7399. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8",
  7400. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  7401. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8",
  7402. "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  7403. loadpage_lo = " 1 1 0 0 0 0 0 1",
  7404. " 0 0 0 0 0 0 0 0",
  7405. " 0 0 0 0 0 0 a1 a0",
  7406. " i i i i i i i i";
  7407. writepage = " 1 1 0 0 0 0 1 0",
  7408. " 0 0 x x x x x a8",
  7409. " a7 a6 a5 a4 a3 a2 0 0",
  7410. " x x x x x x x x";
  7411. mode = 0x41;
  7412. delay = 6;
  7413. blocksize = 4;
  7414. readsize = 256;
  7415. ;
  7416. memory "flash"
  7417. paged = yes;
  7418. size = 8192;
  7419. page_size = 64;
  7420. num_pages = 128;
  7421. min_write_delay = 4500;
  7422. max_write_delay = 4500;
  7423. readback_p1 = 0xff;
  7424. readback_p2 = 0xff;
  7425. read_lo = " 0 0 1 0 0 0 0 0",
  7426. " 0 0 0 0 a11 a10 a9 a8",
  7427. " a7 a6 a5 a4 a3 a2 a1 a0",
  7428. " o o o o o o o o";
  7429. read_hi = " 0 0 1 0 1 0 0 0",
  7430. " 0 0 0 0 a11 a10 a9 a8",
  7431. " a7 a6 a5 a4 a3 a2 a1 a0",
  7432. " o o o o o o o o";
  7433. loadpage_lo = " 0 1 0 0 0 0 0 0",
  7434. " 0 0 0 x x x x x",
  7435. " x x x a4 a3 a2 a1 a0",
  7436. " i i i i i i i i";
  7437. loadpage_hi = " 0 1 0 0 1 0 0 0",
  7438. " 0 0 0 x x x x x",
  7439. " x x x a4 a3 a2 a1 a0",
  7440. " i i i i i i i i";
  7441. writepage = " 0 1 0 0 1 1 0 0",
  7442. " 0 0 0 0 a11 a10 a9 a8",
  7443. " a7 a6 a5 x x x x x",
  7444. " x x x x x x x x";
  7445. mode = 0x41;
  7446. delay = 6;
  7447. blocksize = 32;
  7448. readsize = 256;
  7449. ;
  7450. # ATtiny85 has Signature Bytes: 0x1E 0x93 0x08.
  7451. memory "signature"
  7452. size = 3;
  7453. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  7454. "x x x x x x a1 a0 o o o o o o o o";
  7455. ;
  7456. memory "lock"
  7457. size = 1;
  7458. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  7459. "x x x x x x x x 1 1 i i i i i i";
  7460. min_write_delay = 9000;
  7461. max_write_delay = 9000;
  7462. ;
  7463. memory "lfuse"
  7464. size = 1;
  7465. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  7466. "x x x x x x x x i i i i i i i i";
  7467. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  7468. "x x x x x x x x o o o o o o o o";
  7469. min_write_delay = 9000;
  7470. max_write_delay = 9000;
  7471. ;
  7472. memory "hfuse"
  7473. size = 1;
  7474. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  7475. "x x x x x x x x i i i i i i i i";
  7476. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  7477. "x x x x x x x x o o o o o o o o";
  7478. min_write_delay = 9000;
  7479. max_write_delay = 9000;
  7480. ;
  7481. memory "efuse"
  7482. size = 1;
  7483. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  7484. "x x x x x x x x x x x x x x x i";
  7485. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  7486. "x x x x x x x x o o o o o o o o";
  7487. min_write_delay = 9000;
  7488. max_write_delay = 9000;
  7489. ;
  7490. memory "calibration"
  7491. size = 2;
  7492. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  7493. "0 0 0 0 0 0 0 a0 o o o o o o o o";
  7494. ;
  7495. ;
  7496. #------------------------------------------------------------
  7497. # ATmega640
  7498. #------------------------------------------------------------
  7499. # Almost same as ATmega1280, except for different memory sizes
  7500. part
  7501. id = "m640";
  7502. desc = "ATMEGA640";
  7503. signature = 0x1e 0x96 0x08;
  7504. has_jtag = yes;
  7505. # stk500_devcode = 0xB2;
  7506. # avr910_devcode = 0x43;
  7507. chip_erase_delay = 9000;
  7508. pagel = 0xD7;
  7509. bs2 = 0xA0;
  7510. reset = dedicated;
  7511. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  7512. "x x x x x x x x x x x x x x x x";
  7513. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  7514. "x x x x x x x x x x x x x x x x";
  7515. timeout = 200;
  7516. stabdelay = 100;
  7517. cmdexedelay = 25;
  7518. synchloops = 32;
  7519. bytedelay = 0;
  7520. pollindex = 3;
  7521. pollvalue = 0x53;
  7522. predelay = 1;
  7523. postdelay = 1;
  7524. pollmethod = 1;
  7525. pp_controlstack =
  7526. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  7527. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  7528. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  7529. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  7530. hventerstabdelay = 100;
  7531. progmodedelay = 0;
  7532. latchcycles = 5;
  7533. togglevtg = 1;
  7534. poweroffdelay = 15;
  7535. resetdelayms = 1;
  7536. resetdelayus = 0;
  7537. hvleavestabdelay = 15;
  7538. chiperasepulsewidth = 0;
  7539. chiperasepolltimeout = 10;
  7540. programfusepulsewidth = 0;
  7541. programfusepolltimeout = 5;
  7542. programlockpulsewidth = 0;
  7543. programlockpolltimeout = 5;
  7544. idr = 0x31;
  7545. spmcr = 0x57;
  7546. rampz = 0x3b;
  7547. allowfullpagebitstream = no;
  7548. memory "eeprom"
  7549. paged = no; /* leave this "no" */
  7550. page_size = 8; /* for parallel programming */
  7551. size = 4096;
  7552. min_write_delay = 9000;
  7553. max_write_delay = 9000;
  7554. readback_p1 = 0x00;
  7555. readback_p2 = 0x00;
  7556. read = " 1 0 1 0 0 0 0 0",
  7557. " x x x x a11 a10 a9 a8",
  7558. " a7 a6 a5 a4 a3 a2 a1 a0",
  7559. " o o o o o o o o";
  7560. write = " 1 1 0 0 0 0 0 0",
  7561. " x x x x a11 a10 a9 a8",
  7562. " a7 a6 a5 a4 a3 a2 a1 a0",
  7563. " i i i i i i i i";
  7564. loadpage_lo = " 1 1 0 0 0 0 0 1",
  7565. " 0 0 0 0 0 0 0 0",
  7566. " 0 0 0 0 0 a2 a1 a0",
  7567. " i i i i i i i i";
  7568. writepage = " 1 1 0 0 0 0 1 0",
  7569. " 0 0 x x a11 a10 a9 a8",
  7570. " a7 a6 a5 a4 a3 0 0 0",
  7571. " x x x x x x x x";
  7572. mode = 0x41;
  7573. delay = 10;
  7574. blocksize = 8;
  7575. readsize = 256;
  7576. ;
  7577. memory "flash"
  7578. paged = yes;
  7579. size = 65536;
  7580. page_size = 256;
  7581. num_pages = 256;
  7582. min_write_delay = 4500;
  7583. max_write_delay = 4500;
  7584. readback_p1 = 0x00;
  7585. readback_p2 = 0x00;
  7586. read_lo = " 0 0 1 0 0 0 0 0",
  7587. " 0 a14 a13 a12 a11 a10 a9 a8",
  7588. " a7 a6 a5 a4 a3 a2 a1 a0",
  7589. " o o o o o o o o";
  7590. read_hi = " 0 0 1 0 1 0 0 0",
  7591. " 0 a14 a13 a12 a11 a10 a9 a8",
  7592. " a7 a6 a5 a4 a3 a2 a1 a0",
  7593. " o o o o o o o o";
  7594. loadpage_lo = " 0 1 0 0 0 0 0 0",
  7595. " x x x x x x x x",
  7596. " x a6 a5 a4 a3 a2 a1 a0",
  7597. " i i i i i i i i";
  7598. loadpage_hi = " 0 1 0 0 1 0 0 0",
  7599. " x x x x x x x x",
  7600. " x a6 a5 a4 a3 a2 a1 a0",
  7601. " i i i i i i i i";
  7602. writepage = " 0 1 0 0 1 1 0 0",
  7603. " 0 a14 a13 a12 a11 a10 a9 a8",
  7604. " a7 x x x x x x x",
  7605. " x x x x x x x x";
  7606. mode = 0x41;
  7607. delay = 10;
  7608. blocksize = 256;
  7609. readsize = 256;
  7610. ;
  7611. memory "lfuse"
  7612. size = 1;
  7613. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  7614. "x x x x x x x x i i i i i i i i";
  7615. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  7616. "x x x x x x x x o o o o o o o o";
  7617. min_write_delay = 9000;
  7618. max_write_delay = 9000;
  7619. ;
  7620. memory "hfuse"
  7621. size = 1;
  7622. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  7623. "x x x x x x x x i i i i i i i i";
  7624. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  7625. "x x x x x x x x o o o o o o o o";
  7626. min_write_delay = 9000;
  7627. max_write_delay = 9000;
  7628. ;
  7629. memory "efuse"
  7630. size = 1;
  7631. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  7632. "x x x x x x x x x x x x x i i i";
  7633. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  7634. "x x x x x x x x o o o o o o o o";
  7635. min_write_delay = 9000;
  7636. max_write_delay = 9000;
  7637. ;
  7638. memory "lock"
  7639. size = 1;
  7640. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  7641. "x x x x x x x x x x o o o o o o";
  7642. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  7643. "x x x x x x x x 1 1 i i i i i i";
  7644. min_write_delay = 9000;
  7645. max_write_delay = 9000;
  7646. ;
  7647. memory "calibration"
  7648. size = 1;
  7649. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  7650. "0 0 0 0 0 0 0 0 o o o o o o o o";
  7651. ;
  7652. memory "signature"
  7653. size = 3;
  7654. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  7655. "x x x x x x a1 a0 o o o o o o o o";
  7656. ;
  7657. ;
  7658. #------------------------------------------------------------
  7659. # ATmega1280
  7660. #------------------------------------------------------------
  7661. part
  7662. id = "m1280";
  7663. desc = "ATMEGA1280";
  7664. signature = 0x1e 0x97 0x03;
  7665. has_jtag = yes;
  7666. # stk500_devcode = 0xB2;
  7667. # avr910_devcode = 0x43;
  7668. chip_erase_delay = 9000;
  7669. pagel = 0xD7;
  7670. bs2 = 0xA0;
  7671. reset = dedicated;
  7672. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  7673. "x x x x x x x x x x x x x x x x";
  7674. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  7675. "x x x x x x x x x x x x x x x x";
  7676. timeout = 200;
  7677. stabdelay = 100;
  7678. cmdexedelay = 25;
  7679. synchloops = 32;
  7680. bytedelay = 0;
  7681. pollindex = 3;
  7682. pollvalue = 0x53;
  7683. predelay = 1;
  7684. postdelay = 1;
  7685. pollmethod = 1;
  7686. pp_controlstack =
  7687. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  7688. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  7689. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  7690. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  7691. hventerstabdelay = 100;
  7692. progmodedelay = 0;
  7693. latchcycles = 5;
  7694. togglevtg = 1;
  7695. poweroffdelay = 15;
  7696. resetdelayms = 1;
  7697. resetdelayus = 0;
  7698. hvleavestabdelay = 15;
  7699. chiperasepulsewidth = 0;
  7700. chiperasepolltimeout = 10;
  7701. programfusepulsewidth = 0;
  7702. programfusepolltimeout = 5;
  7703. programlockpulsewidth = 0;
  7704. programlockpolltimeout = 5;
  7705. idr = 0x31;
  7706. spmcr = 0x57;
  7707. rampz = 0x3b;
  7708. allowfullpagebitstream = no;
  7709. memory "eeprom"
  7710. paged = no; /* leave this "no" */
  7711. page_size = 8; /* for parallel programming */
  7712. size = 4096;
  7713. min_write_delay = 9000;
  7714. max_write_delay = 9000;
  7715. readback_p1 = 0x00;
  7716. readback_p2 = 0x00;
  7717. read = " 1 0 1 0 0 0 0 0",
  7718. " x x x x a11 a10 a9 a8",
  7719. " a7 a6 a5 a4 a3 a2 a1 a0",
  7720. " o o o o o o o o";
  7721. write = " 1 1 0 0 0 0 0 0",
  7722. " x x x x a11 a10 a9 a8",
  7723. " a7 a6 a5 a4 a3 a2 a1 a0",
  7724. " i i i i i i i i";
  7725. loadpage_lo = " 1 1 0 0 0 0 0 1",
  7726. " 0 0 0 0 0 0 0 0",
  7727. " 0 0 0 0 0 a2 a1 a0",
  7728. " i i i i i i i i";
  7729. writepage = " 1 1 0 0 0 0 1 0",
  7730. " 0 0 x x a11 a10 a9 a8",
  7731. " a7 a6 a5 a4 a3 0 0 0",
  7732. " x x x x x x x x";
  7733. mode = 0x41;
  7734. delay = 10;
  7735. blocksize = 8;
  7736. readsize = 256;
  7737. ;
  7738. memory "flash"
  7739. paged = yes;
  7740. size = 131072;
  7741. page_size = 256;
  7742. num_pages = 512;
  7743. min_write_delay = 4500;
  7744. max_write_delay = 4500;
  7745. readback_p1 = 0x00;
  7746. readback_p2 = 0x00;
  7747. read_lo = " 0 0 1 0 0 0 0 0",
  7748. "a15 a14 a13 a12 a11 a10 a9 a8",
  7749. " a7 a6 a5 a4 a3 a2 a1 a0",
  7750. " o o o o o o o o";
  7751. read_hi = " 0 0 1 0 1 0 0 0",
  7752. "a15 a14 a13 a12 a11 a10 a9 a8",
  7753. " a7 a6 a5 a4 a3 a2 a1 a0",
  7754. " o o o o o o o o";
  7755. loadpage_lo = " 0 1 0 0 0 0 0 0",
  7756. " x x x x x x x x",
  7757. " x a6 a5 a4 a3 a2 a1 a0",
  7758. " i i i i i i i i";
  7759. loadpage_hi = " 0 1 0 0 1 0 0 0",
  7760. " x x x x x x x x",
  7761. " x a6 a5 a4 a3 a2 a1 a0",
  7762. " i i i i i i i i";
  7763. writepage = " 0 1 0 0 1 1 0 0",
  7764. "a15 a14 a13 a12 a11 a10 a9 a8",
  7765. " a7 x x x x x x x",
  7766. " x x x x x x x x";
  7767. mode = 0x41;
  7768. delay = 10;
  7769. blocksize = 256;
  7770. readsize = 256;
  7771. ;
  7772. memory "lfuse"
  7773. size = 1;
  7774. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  7775. "x x x x x x x x i i i i i i i i";
  7776. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  7777. "x x x x x x x x o o o o o o o o";
  7778. min_write_delay = 9000;
  7779. max_write_delay = 9000;
  7780. ;
  7781. memory "hfuse"
  7782. size = 1;
  7783. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  7784. "x x x x x x x x i i i i i i i i";
  7785. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  7786. "x x x x x x x x o o o o o o o o";
  7787. min_write_delay = 9000;
  7788. max_write_delay = 9000;
  7789. ;
  7790. memory "efuse"
  7791. size = 1;
  7792. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  7793. "x x x x x x x x x x x x x i i i";
  7794. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  7795. "x x x x x x x x o o o o o o o o";
  7796. min_write_delay = 9000;
  7797. max_write_delay = 9000;
  7798. ;
  7799. memory "lock"
  7800. size = 1;
  7801. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  7802. "x x x x x x x x x x o o o o o o";
  7803. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  7804. "x x x x x x x x 1 1 i i i i i i";
  7805. min_write_delay = 9000;
  7806. max_write_delay = 9000;
  7807. ;
  7808. memory "calibration"
  7809. size = 1;
  7810. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  7811. "0 0 0 0 0 0 0 0 o o o o o o o o";
  7812. ;
  7813. memory "signature"
  7814. size = 3;
  7815. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  7816. "x x x x x x a1 a0 o o o o o o o o";
  7817. ;
  7818. ;
  7819. #------------------------------------------------------------
  7820. # ATmega1281
  7821. #------------------------------------------------------------
  7822. # Identical to ATmega1280
  7823. part
  7824. id = "m1281";
  7825. desc = "ATMEGA1281";
  7826. signature = 0x1e 0x97 0x04;
  7827. has_jtag = yes;
  7828. # stk500_devcode = 0xB2;
  7829. # avr910_devcode = 0x43;
  7830. chip_erase_delay = 9000;
  7831. pagel = 0xD7;
  7832. bs2 = 0xA0;
  7833. reset = dedicated;
  7834. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  7835. "x x x x x x x x x x x x x x x x";
  7836. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  7837. "x x x x x x x x x x x x x x x x";
  7838. timeout = 200;
  7839. stabdelay = 100;
  7840. cmdexedelay = 25;
  7841. synchloops = 32;
  7842. bytedelay = 0;
  7843. pollindex = 3;
  7844. pollvalue = 0x53;
  7845. predelay = 1;
  7846. postdelay = 1;
  7847. pollmethod = 1;
  7848. pp_controlstack =
  7849. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  7850. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  7851. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  7852. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  7853. hventerstabdelay = 100;
  7854. progmodedelay = 0;
  7855. latchcycles = 5;
  7856. togglevtg = 1;
  7857. poweroffdelay = 15;
  7858. resetdelayms = 1;
  7859. resetdelayus = 0;
  7860. hvleavestabdelay = 15;
  7861. chiperasepulsewidth = 0;
  7862. chiperasepolltimeout = 10;
  7863. programfusepulsewidth = 0;
  7864. programfusepolltimeout = 5;
  7865. programlockpulsewidth = 0;
  7866. programlockpolltimeout = 5;
  7867. idr = 0x31;
  7868. spmcr = 0x57;
  7869. rampz = 0x3b;
  7870. allowfullpagebitstream = no;
  7871. memory "eeprom"
  7872. paged = no; /* leave this "no" */
  7873. page_size = 8; /* for parallel programming */
  7874. size = 4096;
  7875. min_write_delay = 9000;
  7876. max_write_delay = 9000;
  7877. readback_p1 = 0x00;
  7878. readback_p2 = 0x00;
  7879. read = " 1 0 1 0 0 0 0 0",
  7880. " x x x x a11 a10 a9 a8",
  7881. " a7 a6 a5 a4 a3 a2 a1 a0",
  7882. " o o o o o o o o";
  7883. write = " 1 1 0 0 0 0 0 0",
  7884. " x x x x a11 a10 a9 a8",
  7885. " a7 a6 a5 a4 a3 a2 a1 a0",
  7886. " i i i i i i i i";
  7887. loadpage_lo = " 1 1 0 0 0 0 0 1",
  7888. " 0 0 0 0 0 0 0 0",
  7889. " 0 0 0 0 0 a2 a1 a0",
  7890. " i i i i i i i i";
  7891. writepage = " 1 1 0 0 0 0 1 0",
  7892. " 0 0 x x a11 a10 a9 a8",
  7893. " a7 a6 a5 a4 a3 0 0 0",
  7894. " x x x x x x x x";
  7895. mode = 0x41;
  7896. delay = 10;
  7897. blocksize = 8;
  7898. readsize = 256;
  7899. ;
  7900. memory "flash"
  7901. paged = yes;
  7902. size = 131072;
  7903. page_size = 256;
  7904. num_pages = 512;
  7905. min_write_delay = 4500;
  7906. max_write_delay = 4500;
  7907. readback_p1 = 0x00;
  7908. readback_p2 = 0x00;
  7909. read_lo = " 0 0 1 0 0 0 0 0",
  7910. "a15 a14 a13 a12 a11 a10 a9 a8",
  7911. " a7 a6 a5 a4 a3 a2 a1 a0",
  7912. " o o o o o o o o";
  7913. read_hi = " 0 0 1 0 1 0 0 0",
  7914. "a15 a14 a13 a12 a11 a10 a9 a8",
  7915. " a7 a6 a5 a4 a3 a2 a1 a0",
  7916. " o o o o o o o o";
  7917. loadpage_lo = " 0 1 0 0 0 0 0 0",
  7918. " x x x x x x x x",
  7919. " x a6 a5 a4 a3 a2 a1 a0",
  7920. " i i i i i i i i";
  7921. loadpage_hi = " 0 1 0 0 1 0 0 0",
  7922. " x x x x x x x x",
  7923. " x a6 a5 a4 a3 a2 a1 a0",
  7924. " i i i i i i i i";
  7925. writepage = " 0 1 0 0 1 1 0 0",
  7926. "a15 a14 a13 a12 a11 a10 a9 a8",
  7927. " a7 x x x x x x x",
  7928. " x x x x x x x x";
  7929. mode = 0x41;
  7930. delay = 10;
  7931. blocksize = 256;
  7932. readsize = 256;
  7933. ;
  7934. memory "lfuse"
  7935. size = 1;
  7936. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  7937. "x x x x x x x x i i i i i i i i";
  7938. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  7939. "x x x x x x x x o o o o o o o o";
  7940. min_write_delay = 9000;
  7941. max_write_delay = 9000;
  7942. ;
  7943. memory "hfuse"
  7944. size = 1;
  7945. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  7946. "x x x x x x x x i i i i i i i i";
  7947. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  7948. "x x x x x x x x o o o o o o o o";
  7949. min_write_delay = 9000;
  7950. max_write_delay = 9000;
  7951. ;
  7952. memory "efuse"
  7953. size = 1;
  7954. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  7955. "x x x x x x x x x x x x x i i i";
  7956. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  7957. "x x x x x x x x o o o o o o o o";
  7958. min_write_delay = 9000;
  7959. max_write_delay = 9000;
  7960. ;
  7961. memory "lock"
  7962. size = 1;
  7963. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  7964. "x x x x x x x x x x o o o o o o";
  7965. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  7966. "x x x x x x x x 1 1 i i i i i i";
  7967. min_write_delay = 9000;
  7968. max_write_delay = 9000;
  7969. ;
  7970. memory "calibration"
  7971. size = 1;
  7972. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  7973. "0 0 0 0 0 0 0 0 o o o o o o o o";
  7974. ;
  7975. memory "signature"
  7976. size = 3;
  7977. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  7978. "x x x x x x a1 a0 o o o o o o o o";
  7979. ;
  7980. ;
  7981. #------------------------------------------------------------
  7982. # ATmega2560
  7983. #------------------------------------------------------------
  7984. part
  7985. id = "m2560";
  7986. desc = "ATMEGA2560";
  7987. signature = 0x1e 0x98 0x01;
  7988. has_jtag = yes;
  7989. # stk500_devcode = 0xB2;
  7990. # avr910_devcode = 0x43;
  7991. chip_erase_delay = 9000;
  7992. pagel = 0xD7;
  7993. bs2 = 0xA0;
  7994. reset = dedicated;
  7995. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  7996. "x x x x x x x x x x x x x x x x";
  7997. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  7998. "x x x x x x x x x x x x x x x x";
  7999. timeout = 200;
  8000. stabdelay = 100;
  8001. cmdexedelay = 25;
  8002. synchloops = 32;
  8003. bytedelay = 0;
  8004. pollindex = 3;
  8005. pollvalue = 0x53;
  8006. predelay = 1;
  8007. postdelay = 1;
  8008. pollmethod = 1;
  8009. pp_controlstack =
  8010. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  8011. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  8012. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  8013. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
  8014. hventerstabdelay = 100;
  8015. progmodedelay = 0;
  8016. latchcycles = 5;
  8017. togglevtg = 1;
  8018. poweroffdelay = 15;
  8019. resetdelayms = 1;
  8020. resetdelayus = 0;
  8021. hvleavestabdelay = 15;
  8022. chiperasepulsewidth = 0;
  8023. chiperasepolltimeout = 10;
  8024. programfusepulsewidth = 0;
  8025. programfusepolltimeout = 5;
  8026. programlockpulsewidth = 0;
  8027. programlockpolltimeout = 5;
  8028. idr = 0x31;
  8029. spmcr = 0x57;
  8030. rampz = 0x3b;
  8031. allowfullpagebitstream = no;
  8032. memory "eeprom"
  8033. paged = no; /* leave this "no" */
  8034. page_size = 8; /* for parallel programming */
  8035. size = 4096;
  8036. min_write_delay = 9000;
  8037. max_write_delay = 9000;
  8038. readback_p1 = 0x00;
  8039. readback_p2 = 0x00;
  8040. read = " 1 0 1 0 0 0 0 0",
  8041. " x x x x a11 a10 a9 a8",
  8042. " a7 a6 a5 a4 a3 a2 a1 a0",
  8043. " o o o o o o o o";
  8044. write = " 1 1 0 0 0 0 0 0",
  8045. " x x x x a11 a10 a9 a8",
  8046. " a7 a6 a5 a4 a3 a2 a1 a0",
  8047. " i i i i i i i i";
  8048. loadpage_lo = " 1 1 0 0 0 0 0 1",
  8049. " 0 0 0 0 0 0 0 0",
  8050. " 0 0 0 0 0 a2 a1 a0",
  8051. " i i i i i i i i";
  8052. writepage = " 1 1 0 0 0 0 1 0",
  8053. " 0 0 x x a11 a10 a9 a8",
  8054. " a7 a6 a5 a4 a3 0 0 0",
  8055. " x x x x x x x x";
  8056. mode = 0x41;
  8057. delay = 10;
  8058. blocksize = 8;
  8059. readsize = 256;
  8060. ;
  8061. memory "flash"
  8062. paged = yes;
  8063. size = 262144;
  8064. page_size = 256;
  8065. num_pages = 1024;
  8066. min_write_delay = 4500;
  8067. max_write_delay = 4500;
  8068. readback_p1 = 0x00;
  8069. readback_p2 = 0x00;
  8070. read_lo = " 0 0 1 0 0 0 0 0",
  8071. "a15 a14 a13 a12 a11 a10 a9 a8",
  8072. " a7 a6 a5 a4 a3 a2 a1 a0",
  8073. " o o o o o o o o";
  8074. read_hi = " 0 0 1 0 1 0 0 0",
  8075. "a15 a14 a13 a12 a11 a10 a9 a8",
  8076. " a7 a6 a5 a4 a3 a2 a1 a0",
  8077. " o o o o o o o o";
  8078. loadpage_lo = " 0 1 0 0 0 0 0 0",
  8079. " x x x x x x x x",
  8080. " x a6 a5 a4 a3 a2 a1 a0",
  8081. " i i i i i i i i";
  8082. loadpage_hi = " 0 1 0 0 1 0 0 0",
  8083. " x x x x x x x x",
  8084. " x a6 a5 a4 a3 a2 a1 a0",
  8085. " i i i i i i i i";
  8086. writepage = " 0 1 0 0 1 1 0 0",
  8087. "a15 a14 a13 a12 a11 a10 a9 a8",
  8088. " a7 x x x x x x x",
  8089. " x x x x x x x x";
  8090. load_ext_addr = " 0 1 0 0 1 1 0 1",
  8091. " 0 0 0 0 0 0 0 0",
  8092. " 0 0 0 0 0 0 0 a16",
  8093. " 0 0 0 0 0 0 0 0";
  8094. mode = 0x41;
  8095. delay = 10;
  8096. blocksize = 256;
  8097. readsize = 256;
  8098. ;
  8099. memory "lfuse"
  8100. size = 1;
  8101. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  8102. "x x x x x x x x i i i i i i i i";
  8103. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  8104. "x x x x x x x x o o o o o o o o";
  8105. min_write_delay = 9000;
  8106. max_write_delay = 9000;
  8107. ;
  8108. memory "hfuse"
  8109. size = 1;
  8110. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  8111. "x x x x x x x x i i i i i i i i";
  8112. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  8113. "x x x x x x x x o o o o o o o o";
  8114. min_write_delay = 9000;
  8115. max_write_delay = 9000;
  8116. ;
  8117. memory "efuse"
  8118. size = 1;
  8119. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  8120. "x x x x x x x x x x x x x i i i";
  8121. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  8122. "x x x x x x x x o o o o o o o o";
  8123. min_write_delay = 9000;
  8124. max_write_delay = 9000;
  8125. ;
  8126. memory "lock"
  8127. size = 1;
  8128. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  8129. "x x x x x x x x x x o o o o o o";
  8130. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  8131. "x x x x x x x x 1 1 i i i i i i";
  8132. min_write_delay = 9000;
  8133. max_write_delay = 9000;
  8134. ;
  8135. memory "calibration"
  8136. size = 1;
  8137. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  8138. "0 0 0 0 0 0 0 0 o o o o o o o o";
  8139. ;
  8140. memory "signature"
  8141. size = 3;
  8142. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  8143. "x x x x x x a1 a0 o o o o o o o o";
  8144. ;
  8145. ;
  8146. #------------------------------------------------------------
  8147. # ATmega2561
  8148. #------------------------------------------------------------
  8149. part
  8150. id = "m2561";
  8151. desc = "ATMEGA2561";
  8152. signature = 0x1e 0x98 0x02;
  8153. has_jtag = yes;
  8154. # stk500_devcode = 0xB2;
  8155. # avr910_devcode = 0x43;
  8156. chip_erase_delay = 9000;
  8157. pagel = 0xD7;
  8158. bs2 = 0xA0;
  8159. reset = dedicated;
  8160. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  8161. "x x x x x x x x x x x x x x x x";
  8162. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  8163. "x x x x x x x x x x x x x x x x";
  8164. timeout = 200;
  8165. stabdelay = 100;
  8166. cmdexedelay = 25;
  8167. synchloops = 32;
  8168. bytedelay = 0;
  8169. pollindex = 3;
  8170. pollvalue = 0x53;
  8171. predelay = 1;
  8172. postdelay = 1;
  8173. pollmethod = 1;
  8174. pp_controlstack =
  8175. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  8176. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  8177. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  8178. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
  8179. hventerstabdelay = 100;
  8180. progmodedelay = 0;
  8181. latchcycles = 5;
  8182. togglevtg = 1;
  8183. poweroffdelay = 15;
  8184. resetdelayms = 1;
  8185. resetdelayus = 0;
  8186. hvleavestabdelay = 15;
  8187. chiperasepulsewidth = 0;
  8188. chiperasepolltimeout = 10;
  8189. programfusepulsewidth = 0;
  8190. programfusepolltimeout = 5;
  8191. programlockpulsewidth = 0;
  8192. programlockpolltimeout = 5;
  8193. idr = 0x31;
  8194. spmcr = 0x57;
  8195. rampz = 0x3b;
  8196. allowfullpagebitstream = no;
  8197. memory "eeprom"
  8198. paged = no; /* leave this "no" */
  8199. page_size = 8; /* for parallel programming */
  8200. size = 4096;
  8201. min_write_delay = 9000;
  8202. max_write_delay = 9000;
  8203. readback_p1 = 0x00;
  8204. readback_p2 = 0x00;
  8205. read = " 1 0 1 0 0 0 0 0",
  8206. " x x x x a11 a10 a9 a8",
  8207. " a7 a6 a5 a4 a3 a2 a1 a0",
  8208. " o o o o o o o o";
  8209. write = " 1 1 0 0 0 0 0 0",
  8210. " x x x x a11 a10 a9 a8",
  8211. " a7 a6 a5 a4 a3 a2 a1 a0",
  8212. " i i i i i i i i";
  8213. loadpage_lo = " 1 1 0 0 0 0 0 1",
  8214. " 0 0 0 0 0 0 0 0",
  8215. " 0 0 0 0 0 a2 a1 a0",
  8216. " i i i i i i i i";
  8217. writepage = " 1 1 0 0 0 0 1 0",
  8218. " 0 0 x x a11 a10 a9 a8",
  8219. " a7 a6 a5 a4 a3 0 0 0",
  8220. " x x x x x x x x";
  8221. mode = 0x41;
  8222. delay = 10;
  8223. blocksize = 8;
  8224. readsize = 256;
  8225. ;
  8226. memory "flash"
  8227. paged = yes;
  8228. size = 262144;
  8229. page_size = 256;
  8230. num_pages = 1024;
  8231. min_write_delay = 4500;
  8232. max_write_delay = 4500;
  8233. readback_p1 = 0x00;
  8234. readback_p2 = 0x00;
  8235. read_lo = " 0 0 1 0 0 0 0 0",
  8236. "a15 a14 a13 a12 a11 a10 a9 a8",
  8237. " a7 a6 a5 a4 a3 a2 a1 a0",
  8238. " o o o o o o o o";
  8239. read_hi = " 0 0 1 0 1 0 0 0",
  8240. "a15 a14 a13 a12 a11 a10 a9 a8",
  8241. " a7 a6 a5 a4 a3 a2 a1 a0",
  8242. " o o o o o o o o";
  8243. loadpage_lo = " 0 1 0 0 0 0 0 0",
  8244. " x x x x x x x x",
  8245. " x a6 a5 a4 a3 a2 a1 a0",
  8246. " i i i i i i i i";
  8247. loadpage_hi = " 0 1 0 0 1 0 0 0",
  8248. " x x x x x x x x",
  8249. " x a6 a5 a4 a3 a2 a1 a0",
  8250. " i i i i i i i i";
  8251. writepage = " 0 1 0 0 1 1 0 0",
  8252. "a15 a14 a13 a12 a11 a10 a9 a8",
  8253. " a7 x x x x x x x",
  8254. " x x x x x x x x";
  8255. load_ext_addr = " 0 1 0 0 1 1 0 1",
  8256. " 0 0 0 0 0 0 0 0",
  8257. " 0 0 0 0 0 0 0 a16",
  8258. " 0 0 0 0 0 0 0 0";
  8259. mode = 0x41;
  8260. delay = 10;
  8261. blocksize = 256;
  8262. readsize = 256;
  8263. ;
  8264. memory "lfuse"
  8265. size = 1;
  8266. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  8267. "x x x x x x x x i i i i i i i i";
  8268. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  8269. "x x x x x x x x o o o o o o o o";
  8270. min_write_delay = 9000;
  8271. max_write_delay = 9000;
  8272. ;
  8273. memory "hfuse"
  8274. size = 1;
  8275. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  8276. "x x x x x x x x i i i i i i i i";
  8277. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  8278. "x x x x x x x x o o o o o o o o";
  8279. min_write_delay = 9000;
  8280. max_write_delay = 9000;
  8281. ;
  8282. memory "efuse"
  8283. size = 1;
  8284. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  8285. "x x x x x x x x x x x x x i i i";
  8286. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  8287. "x x x x x x x x o o o o o o o o";
  8288. min_write_delay = 9000;
  8289. max_write_delay = 9000;
  8290. ;
  8291. memory "lock"
  8292. size = 1;
  8293. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  8294. "x x x x x x x x x x o o o o o o";
  8295. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  8296. "x x x x x x x x 1 1 i i i i i i";
  8297. min_write_delay = 9000;
  8298. max_write_delay = 9000;
  8299. ;
  8300. memory "calibration"
  8301. size = 1;
  8302. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  8303. "0 0 0 0 0 0 0 0 o o o o o o o o";
  8304. ;
  8305. memory "signature"
  8306. size = 3;
  8307. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  8308. "x x x x x x a1 a0 o o o o o o o o";
  8309. ;
  8310. ;
  8311. #------------------------------------------------------------
  8312. # ATtiny24
  8313. #------------------------------------------------------------
  8314. part
  8315. id = "t24";
  8316. desc = "ATtiny24";
  8317. has_debugwire = yes;
  8318. flash_instr = 0xB4, 0x07, 0x17;
  8319. eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  8320. 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
  8321. 0x99, 0xE1, 0xBB, 0xAC;
  8322. ## no STK500 devcode in XML file, use the ATtiny45 one
  8323. stk500_devcode = 0x14;
  8324. ## avr910_devcode = ?;
  8325. ## Try the AT90S2313 devcode:
  8326. avr910_devcode = 0x20;
  8327. signature = 0x1e 0x91 0x0b;
  8328. reset = io;
  8329. chip_erase_delay = 4500;
  8330. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  8331. "x x x x x x x x x x x x x x x x";
  8332. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  8333. "x x x x x x x x x x x x x x x x";
  8334. timeout = 200;
  8335. stabdelay = 100;
  8336. cmdexedelay = 25;
  8337. synchloops = 32;
  8338. bytedelay = 0;
  8339. pollindex = 3;
  8340. pollvalue = 0x53;
  8341. predelay = 1;
  8342. postdelay = 1;
  8343. pollmethod = 1;
  8344. hvsp_controlstack =
  8345. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
  8346. 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
  8347. 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  8348. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
  8349. hventerstabdelay = 100;
  8350. hvspcmdexedelay = 0;
  8351. synchcycles = 6;
  8352. latchcycles = 1;
  8353. togglevtg = 1;
  8354. poweroffdelay = 25;
  8355. resetdelayms = 0;
  8356. resetdelayus = 70;
  8357. hvleavestabdelay = 100;
  8358. resetdelay = 25;
  8359. chiperasepolltimeout = 40;
  8360. chiperasetime = 0;
  8361. programfusepolltimeout = 25;
  8362. programlockpolltimeout = 25;
  8363. memory "eeprom"
  8364. size = 128;
  8365. paged = no;
  8366. page_size = 4;
  8367. min_write_delay = 4000;
  8368. max_write_delay = 4500;
  8369. readback_p1 = 0xff;
  8370. readback_p2 = 0xff;
  8371. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x",
  8372. "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  8373. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x",
  8374. "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  8375. loadpage_lo = " 1 1 0 0 0 0 0 1",
  8376. " 0 0 0 0 0 0 0 0",
  8377. " 0 0 0 0 0 0 a1 a0",
  8378. " i i i i i i i i";
  8379. writepage = " 1 1 0 0 0 0 1 0",
  8380. " 0 0 x x x x x x",
  8381. " x a6 a5 a4 a3 a2 0 0",
  8382. " x x x x x x x x";
  8383. mode = 0x41;
  8384. delay = 6;
  8385. blocksize = 4;
  8386. readsize = 256;
  8387. ;
  8388. memory "flash"
  8389. paged = yes;
  8390. size = 2048;
  8391. page_size = 32;
  8392. num_pages = 64;
  8393. min_write_delay = 4500;
  8394. max_write_delay = 4500;
  8395. readback_p1 = 0xff;
  8396. readback_p2 = 0xff;
  8397. read_lo = " 0 0 1 0 0 0 0 0",
  8398. " 0 0 0 0 0 0 a9 a8",
  8399. " a7 a6 a5 a4 a3 a2 a1 a0",
  8400. " o o o o o o o o";
  8401. read_hi = " 0 0 1 0 1 0 0 0",
  8402. " 0 0 0 0 0 0 a9 a8",
  8403. " a7 a6 a5 a4 a3 a2 a1 a0",
  8404. " o o o o o o o o";
  8405. loadpage_lo = " 0 1 0 0 0 0 0 0",
  8406. " 0 0 0 x x x x x",
  8407. " x x x x a3 a2 a1 a0",
  8408. " i i i i i i i i";
  8409. loadpage_hi = " 0 1 0 0 1 0 0 0",
  8410. " 0 0 0 x x x x x",
  8411. " x x x x a3 a2 a1 a0",
  8412. " i i i i i i i i";
  8413. writepage = " 0 1 0 0 1 1 0 0",
  8414. " 0 0 0 0 0 0 a9 a8",
  8415. " a7 a6 a5 a4 x x x x",
  8416. " x x x x x x x x";
  8417. mode = 0x41;
  8418. delay = 6;
  8419. blocksize = 32;
  8420. readsize = 256;
  8421. ;
  8422. # ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B.
  8423. memory "signature"
  8424. size = 3;
  8425. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  8426. "x x x x x x a1 a0 o o o o o o o o";
  8427. ;
  8428. memory "lock"
  8429. size = 1;
  8430. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  8431. "x x x x x x x x x x x x x x i i";
  8432. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  8433. "0 0 0 0 0 0 0 0 o o o o o o o o";
  8434. min_write_delay = 9000;
  8435. max_write_delay = 9000;
  8436. ;
  8437. memory "lfuse"
  8438. size = 1;
  8439. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  8440. "x x x x x x x x i i i i i i i i";
  8441. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  8442. "x x x x x x x x o o o o o o o o";
  8443. min_write_delay = 9000;
  8444. max_write_delay = 9000;
  8445. ;
  8446. memory "hfuse"
  8447. size = 1;
  8448. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  8449. "x x x x x x x x i i i i i i i i";
  8450. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  8451. "x x x x x x x x o o o o o o o o";
  8452. min_write_delay = 9000;
  8453. max_write_delay = 9000;
  8454. ;
  8455. memory "efuse"
  8456. size = 1;
  8457. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  8458. "x x x x x x x x x x x x x x x i";
  8459. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  8460. "x x x x x x x x o o o o o o o o";
  8461. min_write_delay = 9000;
  8462. max_write_delay = 9000;
  8463. ;
  8464. memory "calibration"
  8465. size = 1;
  8466. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  8467. "0 0 0 0 0 0 0 a0 o o o o o o o o";
  8468. ;
  8469. ;
  8470. #------------------------------------------------------------
  8471. # ATtiny44
  8472. #------------------------------------------------------------
  8473. part
  8474. id = "t44";
  8475. desc = "ATtiny44";
  8476. has_debugwire = yes;
  8477. flash_instr = 0xB4, 0x07, 0x17;
  8478. eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  8479. 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
  8480. 0x99, 0xE1, 0xBB, 0xAC;
  8481. ## no STK500 devcode in XML file, use the ATtiny45 one
  8482. stk500_devcode = 0x14;
  8483. ## avr910_devcode = ?;
  8484. ## Try the AT90S2313 devcode:
  8485. avr910_devcode = 0x20;
  8486. signature = 0x1e 0x92 0x07;
  8487. reset = io;
  8488. chip_erase_delay = 4500;
  8489. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  8490. "x x x x x x x x x x x x x x x x";
  8491. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  8492. "x x x x x x x x x x x x x x x x";
  8493. timeout = 200;
  8494. stabdelay = 100;
  8495. cmdexedelay = 25;
  8496. synchloops = 32;
  8497. bytedelay = 0;
  8498. pollindex = 3;
  8499. pollvalue = 0x53;
  8500. predelay = 1;
  8501. postdelay = 1;
  8502. pollmethod = 1;
  8503. hvsp_controlstack =
  8504. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
  8505. 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
  8506. 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  8507. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
  8508. hventerstabdelay = 100;
  8509. hvspcmdexedelay = 0;
  8510. synchcycles = 6;
  8511. latchcycles = 1;
  8512. togglevtg = 1;
  8513. poweroffdelay = 25;
  8514. resetdelayms = 0;
  8515. resetdelayus = 70;
  8516. hvleavestabdelay = 100;
  8517. resetdelay = 25;
  8518. chiperasepolltimeout = 40;
  8519. chiperasetime = 0;
  8520. programfusepolltimeout = 25;
  8521. programlockpolltimeout = 25;
  8522. memory "eeprom"
  8523. size = 256;
  8524. paged = no;
  8525. page_size = 4;
  8526. min_write_delay = 4000;
  8527. max_write_delay = 4500;
  8528. readback_p1 = 0xff;
  8529. readback_p2 = 0xff;
  8530. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x",
  8531. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  8532. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x",
  8533. "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  8534. loadpage_lo = " 1 1 0 0 0 0 0 1",
  8535. " 0 0 0 0 0 0 0 0",
  8536. " 0 0 0 0 0 0 a1 a0",
  8537. " i i i i i i i i";
  8538. writepage = " 1 1 0 0 0 0 1 0",
  8539. " 0 0 x x x x x x",
  8540. " x a6 a5 a4 a3 a2 0 0",
  8541. " x x x x x x x x";
  8542. mode = 0x41;
  8543. delay = 6;
  8544. blocksize = 4;
  8545. readsize = 256;
  8546. ;
  8547. memory "flash"
  8548. paged = yes;
  8549. size = 4096;
  8550. page_size = 64;
  8551. num_pages = 64;
  8552. min_write_delay = 4500;
  8553. max_write_delay = 4500;
  8554. readback_p1 = 0xff;
  8555. readback_p2 = 0xff;
  8556. read_lo = " 0 0 1 0 0 0 0 0",
  8557. " 0 0 0 0 0 a10 a9 a8",
  8558. " a7 a6 a5 a4 a3 a2 a1 a0",
  8559. " o o o o o o o o";
  8560. read_hi = " 0 0 1 0 1 0 0 0",
  8561. " 0 0 0 0 0 a10 a9 a8",
  8562. " a7 a6 a5 a4 a3 a2 a1 a0",
  8563. " o o o o o o o o";
  8564. loadpage_lo = " 0 1 0 0 0 0 0 0",
  8565. " 0 0 0 x x x x x",
  8566. " x x x a4 a3 a2 a1 a0",
  8567. " i i i i i i i i";
  8568. loadpage_hi = " 0 1 0 0 1 0 0 0",
  8569. " 0 0 0 x x x x x",
  8570. " x x x a4 a3 a2 a1 a0",
  8571. " i i i i i i i i";
  8572. writepage = " 0 1 0 0 1 1 0 0",
  8573. " 0 0 0 0 0 a10 a9 a8",
  8574. " a7 a6 a5 x x x x x",
  8575. " x x x x x x x x";
  8576. mode = 0x41;
  8577. delay = 6;
  8578. blocksize = 32;
  8579. readsize = 256;
  8580. ;
  8581. # ATtiny44 has Signature Bytes: 0x1E 0x92 0x07.
  8582. memory "signature"
  8583. size = 3;
  8584. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  8585. "x x x x x x a1 a0 o o o o o o o o";
  8586. ;
  8587. memory "lock"
  8588. size = 1;
  8589. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  8590. "x x x x x x x x x x x x x x i i";
  8591. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  8592. "0 0 0 0 0 0 0 0 o o o o o o o o";
  8593. min_write_delay = 9000;
  8594. max_write_delay = 9000;
  8595. ;
  8596. memory "lfuse"
  8597. size = 1;
  8598. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  8599. "x x x x x x x x i i i i i i i i";
  8600. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  8601. "x x x x x x x x o o o o o o o o";
  8602. min_write_delay = 9000;
  8603. max_write_delay = 9000;
  8604. ;
  8605. memory "hfuse"
  8606. size = 1;
  8607. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  8608. "x x x x x x x x i i i i i i i i";
  8609. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  8610. "x x x x x x x x o o o o o o o o";
  8611. min_write_delay = 9000;
  8612. max_write_delay = 9000;
  8613. ;
  8614. memory "efuse"
  8615. size = 1;
  8616. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  8617. "x x x x x x x x x x x x x x x i";
  8618. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  8619. "x x x x x x x x o o o o o o o o";
  8620. min_write_delay = 9000;
  8621. max_write_delay = 9000;
  8622. ;
  8623. memory "calibration"
  8624. size = 1;
  8625. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  8626. "0 0 0 0 0 0 0 a0 o o o o o o o o";
  8627. ;
  8628. ;
  8629. #------------------------------------------------------------
  8630. # ATtiny84
  8631. #------------------------------------------------------------
  8632. part
  8633. id = "t84";
  8634. desc = "ATtiny84";
  8635. has_debugwire = yes;
  8636. flash_instr = 0xB4, 0x07, 0x17;
  8637. eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
  8638. 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
  8639. 0x99, 0xE1, 0xBB, 0xAC;
  8640. ## no STK500 devcode in XML file, use the ATtiny45 one
  8641. stk500_devcode = 0x14;
  8642. ## avr910_devcode = ?;
  8643. ## Try the AT90S2313 devcode:
  8644. avr910_devcode = 0x20;
  8645. signature = 0x1e 0x93 0x0c;
  8646. reset = io;
  8647. chip_erase_delay = 4500;
  8648. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  8649. "x x x x x x x x x x x x x x x x";
  8650. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
  8651. "x x x x x x x x x x x x x x x x";
  8652. timeout = 200;
  8653. stabdelay = 100;
  8654. cmdexedelay = 25;
  8655. synchloops = 32;
  8656. bytedelay = 0;
  8657. pollindex = 3;
  8658. pollvalue = 0x53;
  8659. predelay = 1;
  8660. postdelay = 1;
  8661. pollmethod = 1;
  8662. hvsp_controlstack =
  8663. 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
  8664. 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
  8665. 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
  8666. 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
  8667. hventerstabdelay = 100;
  8668. hvspcmdexedelay = 0;
  8669. synchcycles = 6;
  8670. latchcycles = 1;
  8671. togglevtg = 1;
  8672. poweroffdelay = 25;
  8673. resetdelayms = 0;
  8674. resetdelayus = 70;
  8675. hvleavestabdelay = 100;
  8676. resetdelay = 25;
  8677. chiperasepolltimeout = 40;
  8678. chiperasetime = 0;
  8679. programfusepolltimeout = 25;
  8680. programlockpolltimeout = 25;
  8681. memory "eeprom"
  8682. size = 512;
  8683. paged = no;
  8684. page_size = 4;
  8685. min_write_delay = 4000;
  8686. max_write_delay = 4500;
  8687. readback_p1 = 0xff;
  8688. readback_p2 = 0xff;
  8689. read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8",
  8690. "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o";
  8691. write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8",
  8692. "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i";
  8693. loadpage_lo = " 1 1 0 0 0 0 0 1",
  8694. " 0 0 0 0 0 0 0 0",
  8695. " 0 0 0 0 0 0 a1 a0",
  8696. " i i i i i i i i";
  8697. writepage = " 1 1 0 0 0 0 1 0",
  8698. " 0 0 x x x x x x",
  8699. " x a6 a5 a4 a3 a2 0 0",
  8700. " x x x x x x x x";
  8701. mode = 0x41;
  8702. delay = 6;
  8703. blocksize = 4;
  8704. readsize = 256;
  8705. ;
  8706. memory "flash"
  8707. paged = yes;
  8708. size = 8192;
  8709. page_size = 64;
  8710. num_pages = 128;
  8711. min_write_delay = 4500;
  8712. max_write_delay = 4500;
  8713. readback_p1 = 0xff;
  8714. readback_p2 = 0xff;
  8715. read_lo = " 0 0 1 0 0 0 0 0",
  8716. " 0 0 0 0 a11 a10 a9 a8",
  8717. " a7 a6 a5 a4 a3 a2 a1 a0",
  8718. " o o o o o o o o";
  8719. read_hi = " 0 0 1 0 1 0 0 0",
  8720. " 0 0 0 0 a11 a10 a9 a8",
  8721. " a7 a6 a5 a4 a3 a2 a1 a0",
  8722. " o o o o o o o o";
  8723. loadpage_lo = " 0 1 0 0 0 0 0 0",
  8724. " 0 0 0 x x x x x",
  8725. " x x x a4 a3 a2 a1 a0",
  8726. " i i i i i i i i";
  8727. loadpage_hi = " 0 1 0 0 1 0 0 0",
  8728. " 0 0 0 x x x x x",
  8729. " x x x a4 a3 a2 a1 a0",
  8730. " i i i i i i i i";
  8731. writepage = " 0 1 0 0 1 1 0 0",
  8732. " 0 0 0 0 a11 a10 a9 a8",
  8733. " a7 a6 a5 x x x x x",
  8734. " x x x x x x x x";
  8735. mode = 0x41;
  8736. delay = 6;
  8737. blocksize = 32;
  8738. readsize = 256;
  8739. ;
  8740. # ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C.
  8741. memory "signature"
  8742. size = 3;
  8743. read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
  8744. "x x x x x x a1 a0 o o o o o o o o";
  8745. ;
  8746. memory "lock"
  8747. size = 1;
  8748. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  8749. "x x x x x x x x x x x x x x i i";
  8750. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  8751. "0 0 0 0 0 0 0 0 o o o o o o o o";
  8752. min_write_delay = 9000;
  8753. max_write_delay = 9000;
  8754. ;
  8755. memory "lfuse"
  8756. size = 1;
  8757. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  8758. "x x x x x x x x i i i i i i i i";
  8759. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  8760. "x x x x x x x x o o o o o o o o";
  8761. min_write_delay = 9000;
  8762. max_write_delay = 9000;
  8763. ;
  8764. memory "hfuse"
  8765. size = 1;
  8766. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  8767. "x x x x x x x x i i i i i i i i";
  8768. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  8769. "x x x x x x x x o o o o o o o o";
  8770. min_write_delay = 9000;
  8771. max_write_delay = 9000;
  8772. ;
  8773. memory "efuse"
  8774. size = 1;
  8775. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  8776. "x x x x x x x x x x x x x x x i";
  8777. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  8778. "x x x x x x x x o o o o o o o o";
  8779. min_write_delay = 9000;
  8780. max_write_delay = 9000;
  8781. ;
  8782. memory "calibration"
  8783. size = 1;
  8784. read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
  8785. "0 0 0 0 0 0 0 a0 o o o o o o o o";
  8786. ;
  8787. ;
  8788. #------------------------------------------------------------
  8789. # AT90USB646
  8790. #------------------------------------------------------------
  8791. part
  8792. id = "usb646";
  8793. desc = "AT90USB646";
  8794. # signature = 0x1e 0x96 0x82; ?
  8795. signature = 0x1e 0x97 0x82;
  8796. has_jtag = yes;
  8797. # stk500_devcode = 0xB2;
  8798. # avr910_devcode = 0x43;
  8799. chip_erase_delay = 9000;
  8800. pagel = 0xD7;
  8801. bs2 = 0xA0;
  8802. reset = dedicated;
  8803. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  8804. "x x x x x x x x x x x x x x x x";
  8805. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  8806. "x x x x x x x x x x x x x x x x";
  8807. timeout = 200;
  8808. stabdelay = 100;
  8809. cmdexedelay = 25;
  8810. synchloops = 32;
  8811. bytedelay = 0;
  8812. pollindex = 3;
  8813. pollvalue = 0x53;
  8814. predelay = 1;
  8815. postdelay = 1;
  8816. pollmethod = 1;
  8817. pp_controlstack =
  8818. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  8819. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  8820. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  8821. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  8822. hventerstabdelay = 100;
  8823. progmodedelay = 0;
  8824. latchcycles = 5;
  8825. togglevtg = 1;
  8826. poweroffdelay = 15;
  8827. resetdelayms = 1;
  8828. resetdelayus = 0;
  8829. hvleavestabdelay = 15;
  8830. chiperasepulsewidth = 0;
  8831. chiperasepolltimeout = 10;
  8832. programfusepulsewidth = 0;
  8833. programfusepolltimeout = 5;
  8834. programlockpulsewidth = 0;
  8835. programlockpolltimeout = 5;
  8836. idr = 0x31;
  8837. spmcr = 0x57;
  8838. rampz = 0x3b;
  8839. allowfullpagebitstream = no;
  8840. memory "eeprom"
  8841. paged = no; /* leave this "no" */
  8842. page_size = 8; /* for parallel programming */
  8843. size = 2048;
  8844. min_write_delay = 9000;
  8845. max_write_delay = 9000;
  8846. readback_p1 = 0x00;
  8847. readback_p2 = 0x00;
  8848. read = " 1 0 1 0 0 0 0 0",
  8849. " x x x x x a10 a9 a8",
  8850. " a7 a6 a5 a4 a3 a2 a1 a0",
  8851. " o o o o o o o o";
  8852. write = " 1 1 0 0 0 0 0 0",
  8853. " x x x x x a10 a9 a8",
  8854. " a7 a6 a5 a4 a3 a2 a1 a0",
  8855. " i i i i i i i i";
  8856. loadpage_lo = " 1 1 0 0 0 0 0 1",
  8857. " 0 0 0 0 0 0 0 0",
  8858. " 0 0 0 0 0 a2 a1 a0",
  8859. " i i i i i i i i";
  8860. writepage = " 1 1 0 0 0 0 1 0",
  8861. " 0 0 x x x a10 a9 a8",
  8862. " a7 a6 a5 a4 a3 0 0 0",
  8863. " x x x x x x x x";
  8864. mode = 0x41;
  8865. delay = 10;
  8866. blocksize = 8;
  8867. readsize = 256;
  8868. ;
  8869. memory "flash"
  8870. paged = yes;
  8871. size = 65536;
  8872. page_size = 256;
  8873. num_pages = 256;
  8874. min_write_delay = 4500;
  8875. max_write_delay = 4500;
  8876. readback_p1 = 0x00;
  8877. readback_p2 = 0x00;
  8878. read_lo = " 0 0 1 0 0 0 0 0",
  8879. " 0 a14 a13 a12 a11 a10 a9 a8",
  8880. " a7 a6 a5 a4 a3 a2 a1 a0",
  8881. " o o o o o o o o";
  8882. read_hi = " 0 0 1 0 1 0 0 0",
  8883. " 0 a14 a13 a12 a11 a10 a9 a8",
  8884. " a7 a6 a5 a4 a3 a2 a1 a0",
  8885. " o o o o o o o o";
  8886. loadpage_lo = " 0 1 0 0 0 0 0 0",
  8887. " x x x x x x x x",
  8888. " x a6 a5 a4 a3 a2 a1 a0",
  8889. " i i i i i i i i";
  8890. loadpage_hi = " 0 1 0 0 1 0 0 0",
  8891. " x x x x x x x x",
  8892. " x a6 a5 a4 a3 a2 a1 a0",
  8893. " i i i i i i i i";
  8894. writepage = " 0 1 0 0 1 1 0 0",
  8895. " 0 a14 a13 a12 a11 a10 a9 a8",
  8896. " a7 x x x x x x x",
  8897. " x x x x x x x x";
  8898. mode = 0x41;
  8899. delay = 6;
  8900. blocksize = 256;
  8901. readsize = 256;
  8902. ;
  8903. memory "lfuse"
  8904. size = 1;
  8905. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  8906. "x x x x x x x x i i i i i i i i";
  8907. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  8908. "x x x x x x x x o o o o o o o o";
  8909. min_write_delay = 9000;
  8910. max_write_delay = 9000;
  8911. ;
  8912. memory "hfuse"
  8913. size = 1;
  8914. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  8915. "x x x x x x x x i i i i i i i i";
  8916. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  8917. "x x x x x x x x o o o o o o o o";
  8918. min_write_delay = 9000;
  8919. max_write_delay = 9000;
  8920. ;
  8921. memory "efuse"
  8922. size = 1;
  8923. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  8924. "x x x x x x x x x x x x i i i i";
  8925. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  8926. "x x x x x x x x o o o o o o o o";
  8927. min_write_delay = 9000;
  8928. max_write_delay = 9000;
  8929. ;
  8930. memory "lock"
  8931. size = 1;
  8932. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  8933. "x x x x x x x x x x o o o o o o";
  8934. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  8935. "x x x x x x x x 1 1 i i i i i i";
  8936. min_write_delay = 9000;
  8937. max_write_delay = 9000;
  8938. ;
  8939. memory "calibration"
  8940. size = 1;
  8941. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  8942. "0 0 0 0 0 0 0 0 o o o o o o o o";
  8943. ;
  8944. memory "signature"
  8945. size = 3;
  8946. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  8947. "x x x x x x a1 a0 o o o o o o o o";
  8948. ;
  8949. ;
  8950. #------------------------------------------------------------
  8951. # AT90USB647
  8952. #------------------------------------------------------------
  8953. # identical to AT90USB646
  8954. part
  8955. id = "usb647";
  8956. desc = "AT90USB647";
  8957. # signature = 0x1e 0x96 0x82; ?
  8958. signature = 0x1e 0x97 0x82;
  8959. has_jtag = yes;
  8960. # stk500_devcode = 0xB2;
  8961. # avr910_devcode = 0x43;
  8962. chip_erase_delay = 9000;
  8963. pagel = 0xD7;
  8964. bs2 = 0xA0;
  8965. reset = dedicated;
  8966. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  8967. "x x x x x x x x x x x x x x x x";
  8968. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  8969. "x x x x x x x x x x x x x x x x";
  8970. timeout = 200;
  8971. stabdelay = 100;
  8972. cmdexedelay = 25;
  8973. synchloops = 32;
  8974. bytedelay = 0;
  8975. pollindex = 3;
  8976. pollvalue = 0x53;
  8977. predelay = 1;
  8978. postdelay = 1;
  8979. pollmethod = 1;
  8980. pp_controlstack =
  8981. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  8982. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  8983. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  8984. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  8985. hventerstabdelay = 100;
  8986. progmodedelay = 0;
  8987. latchcycles = 5;
  8988. togglevtg = 1;
  8989. poweroffdelay = 15;
  8990. resetdelayms = 1;
  8991. resetdelayus = 0;
  8992. hvleavestabdelay = 15;
  8993. chiperasepulsewidth = 0;
  8994. chiperasepolltimeout = 10;
  8995. programfusepulsewidth = 0;
  8996. programfusepolltimeout = 5;
  8997. programlockpulsewidth = 0;
  8998. programlockpolltimeout = 5;
  8999. idr = 0x31;
  9000. spmcr = 0x57;
  9001. rampz = 0x3b;
  9002. allowfullpagebitstream = no;
  9003. memory "eeprom"
  9004. paged = no; /* leave this "no" */
  9005. page_size = 8; /* for parallel programming */
  9006. size = 2048;
  9007. min_write_delay = 9000;
  9008. max_write_delay = 9000;
  9009. readback_p1 = 0x00;
  9010. readback_p2 = 0x00;
  9011. read = " 1 0 1 0 0 0 0 0",
  9012. " x x x x x a10 a9 a8",
  9013. " a7 a6 a5 a4 a3 a2 a1 a0",
  9014. " o o o o o o o o";
  9015. write = " 1 1 0 0 0 0 0 0",
  9016. " x x x x x a10 a9 a8",
  9017. " a7 a6 a5 a4 a3 a2 a1 a0",
  9018. " i i i i i i i i";
  9019. loadpage_lo = " 1 1 0 0 0 0 0 1",
  9020. " 0 0 0 0 0 0 0 0",
  9021. " 0 0 0 0 0 a2 a1 a0",
  9022. " i i i i i i i i";
  9023. writepage = " 1 1 0 0 0 0 1 0",
  9024. " 0 0 x x x a10 a9 a8",
  9025. " a7 a6 a5 a4 a3 0 0 0",
  9026. " x x x x x x x x";
  9027. mode = 0x41;
  9028. delay = 10;
  9029. blocksize = 8;
  9030. readsize = 256;
  9031. ;
  9032. memory "flash"
  9033. paged = yes;
  9034. size = 65536;
  9035. page_size = 256;
  9036. num_pages = 256;
  9037. min_write_delay = 4500;
  9038. max_write_delay = 4500;
  9039. readback_p1 = 0x00;
  9040. readback_p2 = 0x00;
  9041. read_lo = " 0 0 1 0 0 0 0 0",
  9042. " 0 a14 a13 a12 a11 a10 a9 a8",
  9043. " a7 a6 a5 a4 a3 a2 a1 a0",
  9044. " o o o o o o o o";
  9045. read_hi = " 0 0 1 0 1 0 0 0",
  9046. " 0 a14 a13 a12 a11 a10 a9 a8",
  9047. " a7 a6 a5 a4 a3 a2 a1 a0",
  9048. " o o o o o o o o";
  9049. loadpage_lo = " 0 1 0 0 0 0 0 0",
  9050. " x x x x x x x x",
  9051. " x a6 a5 a4 a3 a2 a1 a0",
  9052. " i i i i i i i i";
  9053. loadpage_hi = " 0 1 0 0 1 0 0 0",
  9054. " x x x x x x x x",
  9055. " x a6 a5 a4 a3 a2 a1 a0",
  9056. " i i i i i i i i";
  9057. writepage = " 0 1 0 0 1 1 0 0",
  9058. " 0 a14 a13 a12 a11 a10 a9 a8",
  9059. " a7 x x x x x x x",
  9060. " x x x x x x x x";
  9061. mode = 0x41;
  9062. delay = 6;
  9063. blocksize = 256;
  9064. readsize = 256;
  9065. ;
  9066. memory "lfuse"
  9067. size = 1;
  9068. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  9069. "x x x x x x x x i i i i i i i i";
  9070. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  9071. "x x x x x x x x o o o o o o o o";
  9072. min_write_delay = 9000;
  9073. max_write_delay = 9000;
  9074. ;
  9075. memory "hfuse"
  9076. size = 1;
  9077. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  9078. "x x x x x x x x i i i i i i i i";
  9079. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  9080. "x x x x x x x x o o o o o o o o";
  9081. min_write_delay = 9000;
  9082. max_write_delay = 9000;
  9083. ;
  9084. memory "efuse"
  9085. size = 1;
  9086. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  9087. "x x x x x x x x x x x x i i i i";
  9088. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  9089. "x x x x x x x x o o o o o o o o";
  9090. min_write_delay = 9000;
  9091. max_write_delay = 9000;
  9092. ;
  9093. memory "lock"
  9094. size = 1;
  9095. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  9096. "x x x x x x x x x x o o o o o o";
  9097. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  9098. "x x x x x x x x 1 1 i i i i i i";
  9099. min_write_delay = 9000;
  9100. max_write_delay = 9000;
  9101. ;
  9102. memory "calibration"
  9103. size = 1;
  9104. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  9105. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9106. ;
  9107. memory "signature"
  9108. size = 3;
  9109. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  9110. "x x x x x x a1 a0 o o o o o o o o";
  9111. ;
  9112. ;
  9113. #------------------------------------------------------------
  9114. # AT90USB1286
  9115. #------------------------------------------------------------
  9116. part
  9117. id = "usb1286";
  9118. desc = "AT90USB1286";
  9119. signature = 0x1e 0x97 0x82;
  9120. has_jtag = yes;
  9121. # stk500_devcode = 0xB2;
  9122. # avr910_devcode = 0x43;
  9123. chip_erase_delay = 9000;
  9124. pagel = 0xD7;
  9125. bs2 = 0xA0;
  9126. reset = dedicated;
  9127. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  9128. "x x x x x x x x x x x x x x x x";
  9129. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  9130. "x x x x x x x x x x x x x x x x";
  9131. timeout = 200;
  9132. stabdelay = 100;
  9133. cmdexedelay = 25;
  9134. synchloops = 32;
  9135. bytedelay = 0;
  9136. pollindex = 3;
  9137. pollvalue = 0x53;
  9138. predelay = 1;
  9139. postdelay = 1;
  9140. pollmethod = 1;
  9141. pp_controlstack =
  9142. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  9143. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  9144. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  9145. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  9146. hventerstabdelay = 100;
  9147. progmodedelay = 0;
  9148. latchcycles = 5;
  9149. togglevtg = 1;
  9150. poweroffdelay = 15;
  9151. resetdelayms = 1;
  9152. resetdelayus = 0;
  9153. hvleavestabdelay = 15;
  9154. chiperasepulsewidth = 0;
  9155. chiperasepolltimeout = 10;
  9156. programfusepulsewidth = 0;
  9157. programfusepolltimeout = 5;
  9158. programlockpulsewidth = 0;
  9159. programlockpolltimeout = 5;
  9160. idr = 0x31;
  9161. spmcr = 0x57;
  9162. rampz = 0x3b;
  9163. allowfullpagebitstream = no;
  9164. memory "eeprom"
  9165. paged = no; /* leave this "no" */
  9166. page_size = 8; /* for parallel programming */
  9167. size = 4096;
  9168. min_write_delay = 9000;
  9169. max_write_delay = 9000;
  9170. readback_p1 = 0x00;
  9171. readback_p2 = 0x00;
  9172. read = " 1 0 1 0 0 0 0 0",
  9173. " x x x x a11 a10 a9 a8",
  9174. " a7 a6 a5 a4 a3 a2 a1 a0",
  9175. " o o o o o o o o";
  9176. write = " 1 1 0 0 0 0 0 0",
  9177. " x x x x a11 a10 a9 a8",
  9178. " a7 a6 a5 a4 a3 a2 a1 a0",
  9179. " i i i i i i i i";
  9180. loadpage_lo = " 1 1 0 0 0 0 0 1",
  9181. " 0 0 0 0 0 0 0 0",
  9182. " 0 0 0 0 0 a2 a1 a0",
  9183. " i i i i i i i i";
  9184. writepage = " 1 1 0 0 0 0 1 0",
  9185. " 0 0 x x x a10 a9 a8",
  9186. " a7 a6 a5 a4 a3 0 0 0",
  9187. " x x x x x x x x";
  9188. mode = 0x41;
  9189. delay = 10;
  9190. blocksize = 8;
  9191. readsize = 256;
  9192. ;
  9193. memory "flash"
  9194. paged = yes;
  9195. size = 131072;
  9196. page_size = 256;
  9197. num_pages = 512;
  9198. min_write_delay = 4500;
  9199. max_write_delay = 4500;
  9200. readback_p1 = 0x00;
  9201. readback_p2 = 0x00;
  9202. read_lo = " 0 0 1 0 0 0 0 0",
  9203. "a15 a14 a13 a12 a11 a10 a9 a8",
  9204. " a7 a6 a5 a4 a3 a2 a1 a0",
  9205. " o o o o o o o o";
  9206. read_hi = " 0 0 1 0 1 0 0 0",
  9207. "a15 a14 a13 a12 a11 a10 a9 a8",
  9208. " a7 a6 a5 a4 a3 a2 a1 a0",
  9209. " o o o o o o o o";
  9210. loadpage_lo = " 0 1 0 0 0 0 0 0",
  9211. " x x x x x x x x",
  9212. " x a6 a5 a4 a3 a2 a1 a0",
  9213. " i i i i i i i i";
  9214. loadpage_hi = " 0 1 0 0 1 0 0 0",
  9215. " x x x x x x x x",
  9216. " x a6 a5 a4 a3 a2 a1 a0",
  9217. " i i i i i i i i";
  9218. writepage = " 0 1 0 0 1 1 0 0",
  9219. "a15 a14 a13 a12 a11 a10 a9 a8",
  9220. " a7 x x x x x x x",
  9221. " x x x x x x x x";
  9222. mode = 0x41;
  9223. delay = 6;
  9224. blocksize = 256;
  9225. readsize = 256;
  9226. ;
  9227. memory "lfuse"
  9228. size = 1;
  9229. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  9230. "x x x x x x x x i i i i i i i i";
  9231. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  9232. "x x x x x x x x o o o o o o o o";
  9233. min_write_delay = 9000;
  9234. max_write_delay = 9000;
  9235. ;
  9236. memory "hfuse"
  9237. size = 1;
  9238. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  9239. "x x x x x x x x i i i i i i i i";
  9240. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  9241. "x x x x x x x x o o o o o o o o";
  9242. min_write_delay = 9000;
  9243. max_write_delay = 9000;
  9244. ;
  9245. memory "efuse"
  9246. size = 1;
  9247. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  9248. "x x x x x x x x x x x x i i i i";
  9249. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  9250. "x x x x x x x x o o o o o o o o";
  9251. min_write_delay = 9000;
  9252. max_write_delay = 9000;
  9253. ;
  9254. memory "lock"
  9255. size = 1;
  9256. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  9257. "x x x x x x x x x x o o o o o o";
  9258. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  9259. "x x x x x x x x 1 1 i i i i i i";
  9260. min_write_delay = 9000;
  9261. max_write_delay = 9000;
  9262. ;
  9263. memory "calibration"
  9264. size = 1;
  9265. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  9266. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9267. ;
  9268. memory "signature"
  9269. size = 3;
  9270. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  9271. "x x x x x x a1 a0 o o o o o o o o";
  9272. ;
  9273. ;
  9274. #------------------------------------------------------------
  9275. # AT90USB1287
  9276. #------------------------------------------------------------
  9277. # identical to AT90USB1286
  9278. part
  9279. id = "usb1287";
  9280. desc = "AT90USB1287";
  9281. signature = 0x1e 0x97 0x82;
  9282. has_jtag = yes;
  9283. # stk500_devcode = 0xB2;
  9284. # avr910_devcode = 0x43;
  9285. chip_erase_delay = 9000;
  9286. pagel = 0xD7;
  9287. bs2 = 0xA0;
  9288. reset = dedicated;
  9289. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  9290. "x x x x x x x x x x x x x x x x";
  9291. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  9292. "x x x x x x x x x x x x x x x x";
  9293. timeout = 200;
  9294. stabdelay = 100;
  9295. cmdexedelay = 25;
  9296. synchloops = 32;
  9297. bytedelay = 0;
  9298. pollindex = 3;
  9299. pollvalue = 0x53;
  9300. predelay = 1;
  9301. postdelay = 1;
  9302. pollmethod = 1;
  9303. pp_controlstack =
  9304. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  9305. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  9306. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  9307. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  9308. hventerstabdelay = 100;
  9309. progmodedelay = 0;
  9310. latchcycles = 5;
  9311. togglevtg = 1;
  9312. poweroffdelay = 15;
  9313. resetdelayms = 1;
  9314. resetdelayus = 0;
  9315. hvleavestabdelay = 15;
  9316. chiperasepulsewidth = 0;
  9317. chiperasepolltimeout = 10;
  9318. programfusepulsewidth = 0;
  9319. programfusepolltimeout = 5;
  9320. programlockpulsewidth = 0;
  9321. programlockpolltimeout = 5;
  9322. idr = 0x31;
  9323. spmcr = 0x57;
  9324. rampz = 0x3b;
  9325. allowfullpagebitstream = no;
  9326. memory "eeprom"
  9327. paged = no; /* leave this "no" */
  9328. page_size = 8; /* for parallel programming */
  9329. size = 4096;
  9330. min_write_delay = 9000;
  9331. max_write_delay = 9000;
  9332. readback_p1 = 0x00;
  9333. readback_p2 = 0x00;
  9334. read = " 1 0 1 0 0 0 0 0",
  9335. " x x x x a11 a10 a9 a8",
  9336. " a7 a6 a5 a4 a3 a2 a1 a0",
  9337. " o o o o o o o o";
  9338. write = " 1 1 0 0 0 0 0 0",
  9339. " x x x x a11 a10 a9 a8",
  9340. " a7 a6 a5 a4 a3 a2 a1 a0",
  9341. " i i i i i i i i";
  9342. loadpage_lo = " 1 1 0 0 0 0 0 1",
  9343. " 0 0 0 0 0 0 0 0",
  9344. " 0 0 0 0 0 a2 a1 a0",
  9345. " i i i i i i i i";
  9346. writepage = " 1 1 0 0 0 0 1 0",
  9347. " 0 0 x x x a10 a9 a8",
  9348. " a7 a6 a5 a4 a3 0 0 0",
  9349. " x x x x x x x x";
  9350. mode = 0x41;
  9351. delay = 10;
  9352. blocksize = 8;
  9353. readsize = 256;
  9354. ;
  9355. memory "flash"
  9356. paged = yes;
  9357. size = 131072;
  9358. page_size = 256;
  9359. num_pages = 512;
  9360. min_write_delay = 4500;
  9361. max_write_delay = 4500;
  9362. readback_p1 = 0x00;
  9363. readback_p2 = 0x00;
  9364. read_lo = " 0 0 1 0 0 0 0 0",
  9365. "a15 a14 a13 a12 a11 a10 a9 a8",
  9366. " a7 a6 a5 a4 a3 a2 a1 a0",
  9367. " o o o o o o o o";
  9368. read_hi = " 0 0 1 0 1 0 0 0",
  9369. "a15 a14 a13 a12 a11 a10 a9 a8",
  9370. " a7 a6 a5 a4 a3 a2 a1 a0",
  9371. " o o o o o o o o";
  9372. loadpage_lo = " 0 1 0 0 0 0 0 0",
  9373. " x x x x x x x x",
  9374. " x a6 a5 a4 a3 a2 a1 a0",
  9375. " i i i i i i i i";
  9376. loadpage_hi = " 0 1 0 0 1 0 0 0",
  9377. " x x x x x x x x",
  9378. " x a6 a5 a4 a3 a2 a1 a0",
  9379. " i i i i i i i i";
  9380. writepage = " 0 1 0 0 1 1 0 0",
  9381. "a15 a14 a13 a12 a11 a10 a9 a8",
  9382. " a7 x x x x x x x",
  9383. " x x x x x x x x";
  9384. mode = 0x41;
  9385. delay = 6;
  9386. blocksize = 256;
  9387. readsize = 256;
  9388. ;
  9389. memory "lfuse"
  9390. size = 1;
  9391. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  9392. "x x x x x x x x i i i i i i i i";
  9393. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  9394. "x x x x x x x x o o o o o o o o";
  9395. min_write_delay = 9000;
  9396. max_write_delay = 9000;
  9397. ;
  9398. memory "hfuse"
  9399. size = 1;
  9400. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  9401. "x x x x x x x x i i i i i i i i";
  9402. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  9403. "x x x x x x x x o o o o o o o o";
  9404. min_write_delay = 9000;
  9405. max_write_delay = 9000;
  9406. ;
  9407. memory "efuse"
  9408. size = 1;
  9409. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  9410. "x x x x x x x x x x x x i i i i";
  9411. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  9412. "x x x x x x x x o o o o o o o o";
  9413. min_write_delay = 9000;
  9414. max_write_delay = 9000;
  9415. ;
  9416. memory "lock"
  9417. size = 1;
  9418. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  9419. "x x x x x x x x x x o o o o o o";
  9420. write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
  9421. "x x x x x x x x 1 1 i i i i i i";
  9422. min_write_delay = 9000;
  9423. max_write_delay = 9000;
  9424. ;
  9425. memory "calibration"
  9426. size = 1;
  9427. read = "0 0 1 1 1 0 0 0 x x x x x x x x",
  9428. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9429. ;
  9430. memory "signature"
  9431. size = 3;
  9432. read = "0 0 1 1 0 0 0 0 x x x x x x x x",
  9433. "x x x x x x a1 a0 o o o o o o o o";
  9434. ;
  9435. ;
  9436. #------------------------------------------------------------
  9437. # ATmega325
  9438. #------------------------------------------------------------
  9439. part
  9440. id = "m325";
  9441. desc = "ATMEGA325";
  9442. signature = 0x1e 0x95 0x05;
  9443. has_jtag = yes;
  9444. # stk500_devcode = 0x??; # No STK500v1 support?
  9445. # avr910_devcode = 0x??; # Try the ATmega16 one
  9446. avr910_devcode = 0x74;
  9447. pagel = 0xd7;
  9448. bs2 = 0xa0;
  9449. chip_erase_delay = 9000;
  9450. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  9451. "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
  9452. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  9453. "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
  9454. timeout = 200;
  9455. stabdelay = 100;
  9456. cmdexedelay = 25;
  9457. synchloops = 32;
  9458. bytedelay = 0;
  9459. pollindex = 3;
  9460. pollvalue = 0x53;
  9461. predelay = 1;
  9462. postdelay = 1;
  9463. pollmethod = 1;
  9464. pp_controlstack =
  9465. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  9466. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  9467. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  9468. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  9469. hventerstabdelay = 100;
  9470. progmodedelay = 0;
  9471. latchcycles = 5;
  9472. togglevtg = 1;
  9473. poweroffdelay = 15;
  9474. resetdelayms = 1;
  9475. resetdelayus = 0;
  9476. hvleavestabdelay = 15;
  9477. chiperasepulsewidth = 0;
  9478. chiperasepolltimeout = 10;
  9479. programfusepulsewidth = 0;
  9480. programfusepolltimeout = 5;
  9481. programlockpulsewidth = 0;
  9482. programlockpolltimeout = 5;
  9483. idr = 0x31;
  9484. spmcr = 0x57;
  9485. allowfullpagebitstream = no;
  9486. memory "eeprom"
  9487. paged = no; /* leave this "no" */
  9488. page_size = 4; /* for parallel programming */
  9489. size = 1024;
  9490. min_write_delay = 9000;
  9491. max_write_delay = 9000;
  9492. readback_p1 = 0xff;
  9493. readback_p2 = 0xff;
  9494. read = " 1 0 1 0 0 0 0 0",
  9495. " 0 0 0 0 0 0 a9 a8",
  9496. " a7 a6 a5 a4 a3 a2 a1 a0",
  9497. " o o o o o o o o";
  9498. write = " 1 1 0 0 0 0 0 0",
  9499. " 0 0 0 0 0 0 a9 a8",
  9500. " a7 a6 a5 a4 a3 a2 a1 a0",
  9501. " i i i i i i i i";
  9502. loadpage_lo = " 1 1 0 0 0 0 0 1",
  9503. " 0 0 0 0 0 0 0 0",
  9504. " 0 0 0 0 0 0 a1 a0",
  9505. " i i i i i i i i";
  9506. writepage = " 1 1 0 0 0 0 1 0",
  9507. " 0 0 0 0 0 0 a9 a8",
  9508. " a7 a6 a5 a4 a3 a2 0 0",
  9509. " x x x x x x x x";
  9510. mode = 0x41;
  9511. delay = 10;
  9512. blocksize = 4;
  9513. readsize = 256;
  9514. ;
  9515. memory "flash"
  9516. paged = yes;
  9517. size = 32768;
  9518. page_size = 128;
  9519. num_pages = 256;
  9520. min_write_delay = 4500;
  9521. max_write_delay = 4500;
  9522. readback_p1 = 0xff;
  9523. readback_p2 = 0xff;
  9524. read_lo = " 0 0 1 0 0 0 0 0",
  9525. " 0 a14 a13 a12 a11 a10 a9 a8",
  9526. " a7 a6 a5 a4 a3 a2 a1 a0",
  9527. " o o o o o o o o";
  9528. read_hi = " 0 0 1 0 1 0 0 0",
  9529. " 0 a14 a13 a12 a11 a10 a9 a8",
  9530. " a7 a6 a5 a4 a3 a2 a1 a0",
  9531. " o o o o o o o o";
  9532. loadpage_lo = " 0 1 0 0 0 0 0 0",
  9533. " 0 0 0 0 0 0 0 0",
  9534. " a7 a6 a5 a4 a3 a2 a1 a0",
  9535. " i i i i i i i i";
  9536. loadpage_hi = " 0 1 0 0 1 0 0 0",
  9537. " 0 0 0 0 0 0 0 0",
  9538. " a7 a6 a5 a4 a3 a2 a1 a0",
  9539. " i i i i i i i i";
  9540. writepage = " 0 1 0 0 1 1 0 0",
  9541. " 0 a14 a13 a12 a11 a10 a9 a8",
  9542. " a7 a6 a5 a4 a3 a2 a1 a0",
  9543. " x x x x x x x x";
  9544. mode = 0x41;
  9545. delay = 10;
  9546. blocksize = 128;
  9547. readsize = 256;
  9548. ;
  9549. memory "lock"
  9550. size = 1;
  9551. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  9552. "x x x x x x x x x x o o o o o o";
  9553. write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0",
  9554. "0 0 0 0 0 0 0 0 1 1 i i i i i i";
  9555. min_write_delay = 9000;
  9556. max_write_delay = 9000;
  9557. ;
  9558. memory "lfuse"
  9559. size = 1;
  9560. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  9561. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9562. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  9563. "0 0 0 0 0 0 0 0 i i i i i i i i";
  9564. min_write_delay = 9000;
  9565. max_write_delay = 9000;
  9566. ;
  9567. memory "hfuse"
  9568. size = 1;
  9569. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  9570. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9571. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  9572. "0 0 0 0 0 0 0 0 i i i i i i i i";
  9573. min_write_delay = 9000;
  9574. max_write_delay = 9000;
  9575. ;
  9576. memory "efuse"
  9577. size = 1;
  9578. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  9579. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9580. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  9581. "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i";
  9582. min_write_delay = 9000;
  9583. max_write_delay = 9000;
  9584. ;
  9585. memory "signature"
  9586. size = 3;
  9587. read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0",
  9588. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  9589. ;
  9590. memory "calibration"
  9591. size = 1;
  9592. read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0",
  9593. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9594. ;
  9595. ;
  9596. #------------------------------------------------------------
  9597. # ATmega645
  9598. #------------------------------------------------------------
  9599. part
  9600. id = "m645";
  9601. desc = "ATMEGA645";
  9602. signature = 0x1E 0x96 0x05;
  9603. has_jtag = yes;
  9604. # stk500_devcode = 0x??; # No STK500v1 support?
  9605. # avr910_devcode = 0x??; # Try the ATmega16 one
  9606. avr910_devcode = 0x74;
  9607. pagel = 0xd7;
  9608. bs2 = 0xa0;
  9609. chip_erase_delay = 9000;
  9610. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  9611. "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
  9612. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  9613. "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
  9614. timeout = 200;
  9615. stabdelay = 100;
  9616. cmdexedelay = 25;
  9617. synchloops = 32;
  9618. bytedelay = 0;
  9619. pollindex = 3;
  9620. pollvalue = 0x53;
  9621. predelay = 1;
  9622. postdelay = 1;
  9623. pollmethod = 1;
  9624. pp_controlstack =
  9625. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  9626. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  9627. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  9628. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  9629. hventerstabdelay = 100;
  9630. progmodedelay = 0;
  9631. latchcycles = 5;
  9632. togglevtg = 1;
  9633. poweroffdelay = 15;
  9634. resetdelayms = 1;
  9635. resetdelayus = 0;
  9636. hvleavestabdelay = 15;
  9637. chiperasepulsewidth = 0;
  9638. chiperasepolltimeout = 10;
  9639. programfusepulsewidth = 0;
  9640. programfusepolltimeout = 5;
  9641. programlockpulsewidth = 0;
  9642. programlockpolltimeout = 5;
  9643. idr = 0x31;
  9644. spmcr = 0x57;
  9645. allowfullpagebitstream = no;
  9646. memory "eeprom"
  9647. paged = no; /* leave this "no" */
  9648. page_size = 8; /* for parallel programming */
  9649. size = 2048;
  9650. min_write_delay = 9000;
  9651. max_write_delay = 9000;
  9652. readback_p1 = 0xff;
  9653. readback_p2 = 0xff;
  9654. read = " 1 0 1 0 0 0 0 0",
  9655. " 0 0 0 0 0 a10 a9 a8",
  9656. " a7 a6 a5 a4 a3 a2 a1 a0",
  9657. " o o o o o o o o";
  9658. write = " 1 1 0 0 0 0 0 0",
  9659. " 0 0 0 0 0 a10 a9 a8",
  9660. " a7 a6 a5 a4 a3 a2 a1 a0",
  9661. " i i i i i i i i";
  9662. loadpage_lo = " 1 1 0 0 0 0 0 1",
  9663. " 0 0 0 0 0 0 0 0",
  9664. " 0 0 0 0 0 a2 a1 a0",
  9665. " i i i i i i i i";
  9666. writepage = " 1 1 0 0 0 0 1 0",
  9667. " 0 0 0 0 0 a10 a9 a8",
  9668. " a7 a6 a5 a4 a3 0 0 0",
  9669. " x x x x x x x x";
  9670. mode = 0x41;
  9671. delay = 10;
  9672. blocksize = 8;
  9673. readsize = 256;
  9674. ;
  9675. memory "flash"
  9676. paged = yes;
  9677. size = 65536;
  9678. page_size = 256;
  9679. num_pages = 256;
  9680. min_write_delay = 4500;
  9681. max_write_delay = 4500;
  9682. readback_p1 = 0xff;
  9683. readback_p2 = 0xff;
  9684. read_lo = " 0 0 1 0 0 0 0 0",
  9685. " a15 a14 a13 a12 a11 a10 a9 a8",
  9686. " a7 a6 a5 a4 a3 a2 a1 a0",
  9687. " o o o o o o o o";
  9688. read_hi = " 0 0 1 0 1 0 0 0",
  9689. " a15 a14 a13 a12 a11 a10 a9 a8",
  9690. " a7 a6 a5 a4 a3 a2 a1 a0",
  9691. " o o o o o o o o";
  9692. loadpage_lo = " 0 1 0 0 0 0 0 0",
  9693. " 0 0 0 0 0 0 0 0",
  9694. " a7 a6 a5 a4 a3 a2 a1 a0",
  9695. " i i i i i i i i";
  9696. loadpage_hi = " 0 1 0 0 1 0 0 0",
  9697. " 0 0 0 0 0 0 0 0",
  9698. " a7 a6 a5 a4 a3 a2 a1 a0",
  9699. " i i i i i i i i";
  9700. writepage = " 0 1 0 0 1 1 0 0",
  9701. " a15 a14 a13 a12 a11 a10 a9 a8",
  9702. " a7 a6 a5 a4 a3 a2 a1 a0",
  9703. " 0 0 0 0 0 0 0 0";
  9704. mode = 0x41;
  9705. delay = 10;
  9706. blocksize = 128;
  9707. readsize = 256;
  9708. ;
  9709. memory "lock"
  9710. size = 1;
  9711. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  9712. "x x x x x x x x x x o o o o o o";
  9713. write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0",
  9714. "0 0 0 0 0 0 0 0 1 1 i i i i i i";
  9715. min_write_delay = 9000;
  9716. max_write_delay = 9000;
  9717. ;
  9718. memory "lfuse"
  9719. size = 1;
  9720. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  9721. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9722. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  9723. "0 0 0 0 0 0 0 0 i i i i i i i i";
  9724. min_write_delay = 9000;
  9725. max_write_delay = 9000;
  9726. ;
  9727. memory "hfuse"
  9728. size = 1;
  9729. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  9730. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9731. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  9732. "0 0 0 0 0 0 0 0 i i i i i i i i";
  9733. min_write_delay = 9000;
  9734. max_write_delay = 9000;
  9735. ;
  9736. memory "efuse"
  9737. size = 1;
  9738. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  9739. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9740. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  9741. "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i";
  9742. min_write_delay = 9000;
  9743. max_write_delay = 9000;
  9744. ;
  9745. memory "signature"
  9746. size = 3;
  9747. read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0",
  9748. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  9749. ;
  9750. memory "calibration"
  9751. size = 1;
  9752. read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0",
  9753. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9754. ;
  9755. ;
  9756. #------------------------------------------------------------
  9757. # ATmega3250
  9758. #------------------------------------------------------------
  9759. part
  9760. id = "m3250";
  9761. desc = "ATMEGA3250";
  9762. signature = 0x1E 0x95 0x06;
  9763. has_jtag = yes;
  9764. # stk500_devcode = 0x??; # No STK500v1 support?
  9765. # avr910_devcode = 0x??; # Try the ATmega16 one
  9766. avr910_devcode = 0x74;
  9767. pagel = 0xd7;
  9768. bs2 = 0xa0;
  9769. chip_erase_delay = 9000;
  9770. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  9771. "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
  9772. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  9773. "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
  9774. timeout = 200;
  9775. stabdelay = 100;
  9776. cmdexedelay = 25;
  9777. synchloops = 32;
  9778. bytedelay = 0;
  9779. pollindex = 3;
  9780. pollvalue = 0x53;
  9781. predelay = 1;
  9782. postdelay = 1;
  9783. pollmethod = 1;
  9784. pp_controlstack =
  9785. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  9786. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  9787. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  9788. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  9789. hventerstabdelay = 100;
  9790. progmodedelay = 0;
  9791. latchcycles = 5;
  9792. togglevtg = 1;
  9793. poweroffdelay = 15;
  9794. resetdelayms = 1;
  9795. resetdelayus = 0;
  9796. hvleavestabdelay = 15;
  9797. chiperasepulsewidth = 0;
  9798. chiperasepolltimeout = 10;
  9799. programfusepulsewidth = 0;
  9800. programfusepolltimeout = 5;
  9801. programlockpulsewidth = 0;
  9802. programlockpolltimeout = 5;
  9803. idr = 0x31;
  9804. spmcr = 0x57;
  9805. allowfullpagebitstream = no;
  9806. memory "eeprom"
  9807. paged = no; /* leave this "no" */
  9808. page_size = 4; /* for parallel programming */
  9809. size = 1024;
  9810. min_write_delay = 9000;
  9811. max_write_delay = 9000;
  9812. readback_p1 = 0xff;
  9813. readback_p2 = 0xff;
  9814. read = " 1 0 1 0 0 0 0 0",
  9815. " 0 0 0 0 0 0 a9 a8",
  9816. " a7 a6 a5 a4 a3 a2 a1 a0",
  9817. " o o o o o o o o";
  9818. write = " 1 1 0 0 0 0 0 0",
  9819. " 0 0 0 0 0 0 a9 a8",
  9820. " a7 a6 a5 a4 a3 a2 a1 a0",
  9821. " i i i i i i i i";
  9822. loadpage_lo = " 1 1 0 0 0 0 0 1",
  9823. " 0 0 0 0 0 0 0 0",
  9824. " 0 0 0 0 0 0 a1 a0",
  9825. " i i i i i i i i";
  9826. writepage = " 1 1 0 0 0 0 1 0",
  9827. " 0 0 0 0 0 0 a9 a8",
  9828. " a7 a6 a5 a4 a3 a2 0 0",
  9829. " x x x x x x x x";
  9830. mode = 0x41;
  9831. delay = 10;
  9832. blocksize = 4;
  9833. readsize = 256;
  9834. ;
  9835. memory "flash"
  9836. paged = yes;
  9837. size = 32768;
  9838. page_size = 128;
  9839. num_pages = 256;
  9840. min_write_delay = 4500;
  9841. max_write_delay = 4500;
  9842. readback_p1 = 0xff;
  9843. readback_p2 = 0xff;
  9844. read_lo = " 0 0 1 0 0 0 0 0",
  9845. " 0 a14 a13 a12 a11 a10 a9 a8",
  9846. " a7 a6 a5 a4 a3 a2 a1 a0",
  9847. " o o o o o o o o";
  9848. read_hi = " 0 0 1 0 1 0 0 0",
  9849. " 0 a14 a13 a12 a11 a10 a9 a8",
  9850. " a7 a6 a5 a4 a3 a2 a1 a0",
  9851. " o o o o o o o o";
  9852. loadpage_lo = " 0 1 0 0 0 0 0 0",
  9853. " 0 0 0 0 0 0 0 0",
  9854. " a7 a6 a5 a4 a3 a2 a1 a0",
  9855. " i i i i i i i i";
  9856. loadpage_hi = " 0 1 0 0 1 0 0 0",
  9857. " 0 0 0 0 0 0 0 0",
  9858. " a7 a6 a5 a4 a3 a2 a1 a0",
  9859. " i i i i i i i i";
  9860. writepage = " 0 1 0 0 1 1 0 0",
  9861. " 0 a14 a13 a12 a11 a10 a9 a8",
  9862. " a7 a6 a5 a4 a3 a2 a1 a0",
  9863. " x x x x x x x x";
  9864. mode = 0x41;
  9865. delay = 10;
  9866. blocksize = 128;
  9867. readsize = 256;
  9868. ;
  9869. memory "lock"
  9870. size = 1;
  9871. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  9872. "x x x x x x x x x x o o o o o o";
  9873. write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0",
  9874. "0 0 0 0 0 0 0 0 1 1 i i i i i i";
  9875. min_write_delay = 9000;
  9876. max_write_delay = 9000;
  9877. ;
  9878. memory "lfuse"
  9879. size = 1;
  9880. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  9881. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9882. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  9883. "0 0 0 0 0 0 0 0 i i i i i i i i";
  9884. min_write_delay = 9000;
  9885. max_write_delay = 9000;
  9886. ;
  9887. memory "hfuse"
  9888. size = 1;
  9889. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  9890. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9891. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  9892. "0 0 0 0 0 0 0 0 i i i i i i i i";
  9893. min_write_delay = 9000;
  9894. max_write_delay = 9000;
  9895. ;
  9896. memory "efuse"
  9897. size = 1;
  9898. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  9899. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9900. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  9901. "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i";
  9902. min_write_delay = 9000;
  9903. max_write_delay = 9000;
  9904. ;
  9905. memory "signature"
  9906. size = 3;
  9907. read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0",
  9908. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  9909. ;
  9910. memory "calibration"
  9911. size = 1;
  9912. read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0",
  9913. "0 0 0 0 0 0 0 0 o o o o o o o o";
  9914. ;
  9915. ;
  9916. #------------------------------------------------------------
  9917. # ATmega6450
  9918. #------------------------------------------------------------
  9919. part
  9920. id = "m6450";
  9921. desc = "ATMEGA6450";
  9922. signature = 0x1E 0x96 0x06;
  9923. has_jtag = yes;
  9924. # stk500_devcode = 0x??; # No STK500v1 support?
  9925. # avr910_devcode = 0x??; # Try the ATmega16 one
  9926. avr910_devcode = 0x74;
  9927. pagel = 0xd7;
  9928. bs2 = 0xa0;
  9929. chip_erase_delay = 9000;
  9930. pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
  9931. "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
  9932. chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
  9933. "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
  9934. timeout = 200;
  9935. stabdelay = 100;
  9936. cmdexedelay = 25;
  9937. synchloops = 32;
  9938. bytedelay = 0;
  9939. pollindex = 3;
  9940. pollvalue = 0x53;
  9941. predelay = 1;
  9942. postdelay = 1;
  9943. pollmethod = 1;
  9944. pp_controlstack =
  9945. 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
  9946. 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
  9947. 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
  9948. 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
  9949. hventerstabdelay = 100;
  9950. progmodedelay = 0;
  9951. latchcycles = 5;
  9952. togglevtg = 1;
  9953. poweroffdelay = 15;
  9954. resetdelayms = 1;
  9955. resetdelayus = 0;
  9956. hvleavestabdelay = 15;
  9957. chiperasepulsewidth = 0;
  9958. chiperasepolltimeout = 10;
  9959. programfusepulsewidth = 0;
  9960. programfusepolltimeout = 5;
  9961. programlockpulsewidth = 0;
  9962. programlockpolltimeout = 5;
  9963. idr = 0x31;
  9964. spmcr = 0x57;
  9965. allowfullpagebitstream = no;
  9966. memory "eeprom"
  9967. paged = no; /* leave this "no" */
  9968. page_size = 8; /* for parallel programming */
  9969. size = 2048;
  9970. min_write_delay = 9000;
  9971. max_write_delay = 9000;
  9972. readback_p1 = 0xff;
  9973. readback_p2 = 0xff;
  9974. read = " 1 0 1 0 0 0 0 0",
  9975. " 0 0 0 0 0 a10 a9 a8",
  9976. " a7 a6 a5 a4 a3 a2 a1 a0",
  9977. " o o o o o o o o";
  9978. write = " 1 1 0 0 0 0 0 0",
  9979. " 0 0 0 0 0 a10 a9 a8",
  9980. " a7 a6 a5 a4 a3 a2 a1 a0",
  9981. " i i i i i i i i";
  9982. loadpage_lo = " 1 1 0 0 0 0 0 1",
  9983. " 0 0 0 0 0 0 0 0",
  9984. " 0 0 0 0 0 a2 a1 a0",
  9985. " i i i i i i i i";
  9986. writepage = " 1 1 0 0 0 0 1 0",
  9987. " 0 0 0 0 0 a10 a9 a8",
  9988. " a7 a6 a5 a4 a3 0 0 0",
  9989. " x x x x x x x x";
  9990. mode = 0x41;
  9991. delay = 10;
  9992. blocksize = 4;
  9993. readsize = 256;
  9994. ;
  9995. memory "flash"
  9996. paged = yes;
  9997. size = 65536;
  9998. page_size = 256;
  9999. num_pages = 256;
  10000. min_write_delay = 4500;
  10001. max_write_delay = 4500;
  10002. readback_p1 = 0xff;
  10003. readback_p2 = 0xff;
  10004. read_lo = " 0 0 1 0 0 0 0 0",
  10005. " a15 a14 a13 a12 a11 a10 a9 a8",
  10006. " a7 a6 a5 a4 a3 a2 a1 a0",
  10007. " o o o o o o o o";
  10008. read_hi = " 0 0 1 0 1 0 0 0",
  10009. " a15 a14 a13 a12 a11 a10 a9 a8",
  10010. " a7 a6 a5 a4 a3 a2 a1 a0",
  10011. " o o o o o o o o";
  10012. loadpage_lo = " 0 1 0 0 0 0 0 0",
  10013. " 0 0 0 0 0 0 0 0",
  10014. " a7 a6 a5 a4 a3 a2 a1 a0",
  10015. " i i i i i i i i";
  10016. loadpage_hi = " 0 1 0 0 1 0 0 0",
  10017. " 0 0 0 0 0 0 0 0",
  10018. " a7 a6 a5 a4 a3 a2 a1 a0",
  10019. " i i i i i i i i";
  10020. writepage = " 0 1 0 0 1 1 0 0",
  10021. " a15 a14 a13 a12 a11 a10 a9 a8",
  10022. " a7 a6 a5 a4 a3 a2 a1 a0",
  10023. " 0 0 0 0 0 0 0 0";
  10024. mode = 0x41;
  10025. delay = 10;
  10026. blocksize = 128;
  10027. readsize = 256;
  10028. ;
  10029. memory "lock"
  10030. size = 1;
  10031. read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
  10032. "x x x x x x x x x x o o o o o o";
  10033. write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0",
  10034. "0 0 0 0 0 0 0 0 1 1 i i i i i i";
  10035. min_write_delay = 9000;
  10036. max_write_delay = 9000;
  10037. ;
  10038. memory "lfuse"
  10039. size = 1;
  10040. read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
  10041. "0 0 0 0 0 0 0 0 o o o o o o o o";
  10042. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
  10043. "0 0 0 0 0 0 0 0 i i i i i i i i";
  10044. min_write_delay = 9000;
  10045. max_write_delay = 9000;
  10046. ;
  10047. memory "hfuse"
  10048. size = 1;
  10049. read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
  10050. "0 0 0 0 0 0 0 0 o o o o o o o o";
  10051. write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
  10052. "0 0 0 0 0 0 0 0 i i i i i i i i";
  10053. min_write_delay = 9000;
  10054. max_write_delay = 9000;
  10055. ;
  10056. memory "efuse"
  10057. size = 1;
  10058. read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
  10059. "0 0 0 0 0 0 0 0 o o o o o o o o";
  10060. write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
  10061. "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i";
  10062. min_write_delay = 9000;
  10063. max_write_delay = 9000;
  10064. ;
  10065. memory "signature"
  10066. size = 3;
  10067. read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0",
  10068. "0 0 0 0 0 0 a1 a0 o o o o o o o o";
  10069. ;
  10070. memory "calibration"
  10071. size = 1;
  10072. read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0",
  10073. "0 0 0 0 0 0 0 0 o o o o o o o o";
  10074. ;
  10075. ;