From 59cda4a216c8b87e2fcb5bda333d1ba39afc9103 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Wed, 19 Jun 2024 21:46:09 +0100 Subject: [PATCH 01/32] Parent XMEGA parts from common family sub-group This commit makes the parent of XMEGA parts one of three common ones: - .xmega-ab for XMEGA-A or XMEGA-B parts - .xmega-cd for XMEGA-C or XMEGA-D parts - .xmega-e for XMEGA-E parts The commit does not change any feature of parts or memories. In order to prove this carry out before this commit $ avrdude -p */At >/tmp/1 After this commit, the following command should not have any output: $ avrdude -p */At | sort | comm -3 - /tmp/1 | grep -v family.common.values (The only feature changes in the .xmega-* prototypes.) --- src/avrdude.conf.in | 1817 ++++++++++++++++++++++++++++++------------- 1 file changed, 1264 insertions(+), 553 deletions(-) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index a638d0381..00d18262c 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -17262,12 +17262,12 @@ part parent "m645" # m6450p ; #------------------------------------------------------------ -# AVR XMEGA family common values +# AVR XMEGA-C/D family common values #------------------------------------------------------------ -part # .xmega - desc = "AVR XMEGA family common values"; - id = ".xmega"; +part # .xmega-cd + desc = "AVR XMEGA-C/D family common values"; + id = ".xmega-cd"; prog_modes = PM_SPM | PM_PDI; n_boot_sections = 1; mcu_base = 0x0090; @@ -17275,6 +17275,34 @@ part # .xmega autobaud_sync = 0x20; factory_fcpu = 2000000; + memory "eeprom" + page_size = 32; + offset = 0x8c0000; + readsize = 256; + ; + + memory "flash" + page_size = 256; + offset = 0x800000; + readsize = 256; + ; + + memory "application" + page_size = 256; + offset = 0x800000; + readsize = 256; + ; + + memory "apptable" + page_size = 256; + readsize = 256; + ; + + memory "boot" + page_size = 256; + readsize = 256; + ; + memory "fuse1" size = 1; initval = 0x00; @@ -17309,9 +17337,9 @@ part # .xmega ; memory "prodsig" - size = 50; + size = 64; offset = 0x8e0200; - readsize = 50; + readsize = 64; ; memory "sigrow" @@ -17323,6 +17351,13 @@ part # .xmega offset = 0x1000090; ; + memory "usersig" + size = 256; + page_size = 256; + offset = 0x8e0400; + readsize = 256; + ; + memory "io" size = 4096; readsize = 1; @@ -17339,26 +17374,58 @@ part # .xmega # Fuse for fault detection action on Px0..5 (unique to XMEGA-E) -part parent ".xmega" # .xmega-e +part parent ".xmega-cd" # .xmega-e desc = "AVR XMEGA-E family common values"; id = ".xmega-e"; + n_interrupts = 43; + + memory "flash" + page_size = 128; + ; + + memory "application" + page_size = 128; + ; + + memory "apptable" + page_size = 128; + ; + + memory "boot" + page_size = 128; + ; + + memory "fuse2" + bitmask = 0x43; + ; memory "fuse6" size = 1; initval = 0xff; offset = 0x8f0026; ; + + memory "prodsig" + size = 54; + readsize = 54; + ; + + memory "usersig" + size = 128; + page_size = 128; + ; ; #------------------------------------------------------------ -# AVR XMEGA-A family common values +# AVR XMEGA-A/B family common values #------------------------------------------------------------ -# JTAG user ID (unique to XMEGA-A and XMEGA-B) +# Most XMEGA-A/B have JTAG, and therefore JTAG user ID -part parent ".xmega" # .xmega-a - desc = "AVR XMEGA-A family common values"; - id = ".xmega-a"; +part parent ".xmega-cd" # .xmega-ab + desc = "AVR XMEGA-A/B family common values"; + id = ".xmega-ab"; + prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; memory "fuse0" size = 1; @@ -17367,15 +17434,21 @@ part parent ".xmega" # .xmega-a ; memory "fuse4" + initval = 0xfe; bitmask = 0x1f; ; + + memory "prodsig" + size = 52; + readsize = 52; + ; ; #------------------------------------------------------------ # ATxmega16A4U #------------------------------------------------------------ -part parent ".xmega-a" # x16a4u +part parent ".xmega-ab" # x16a4u desc = "ATxmega16A4U"; id = "x16a4u"; variants = @@ -17388,6 +17461,7 @@ part parent ".xmega-a" # x16a4u "ATxmega16A4U-M7: VQFN44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", "ATxmega16A4U-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega16A4U-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + prog_modes = PM_SPM | PM_PDI; mcuid = 232; n_interrupts = 127; boot_section_size = 4096; @@ -17396,53 +17470,24 @@ part parent ".xmega-a" # x16a4u memory "eeprom" size = 1024; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x5000; - page_size = 256; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x4000; - page_size = 256; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 4096; - page_size = 256; offset = 0x803000; - readsize = 256; ; memory "boot" size = 4096; - page_size = 256; offset = 0x804000; - readsize = 256; - ; - - memory "fuse4" - initval = 0xfe; - ; - - memory "prodsig" - size = 52; - readsize = 52; - ; - - memory "usersig" - size = 256; - page_size = 256; - offset = 0x8e0400; - readsize = 256; ; memory "sram" @@ -17454,7 +17499,7 @@ part parent ".xmega-a" # x16a4u # ATxmega16C4 #------------------------------------------------------------ -part parent "x16a4u" # x16c4 +part parent ".xmega-cd" # x16c4 desc = "ATxmega16C4"; id = "x16c4"; variants = @@ -17467,19 +17512,39 @@ part parent "x16a4u" # x16c4 "ATxmega16C4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega16C4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 233; + n_interrupts = 127; + boot_section_size = 4096; signature = 0x1e 0x94 0x43; + usbpid = 0x2fe3; + + memory "eeprom" + size = 1024; + ; - memory "fuse0" = NULL; + memory "flash" + size = 0x5000; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "application" + size = 0x4000; + ; + + memory "apptable" + size = 4096; + offset = 0x803000; + ; + + memory "boot" + size = 4096; + offset = 0x804000; ; memory "prodsig" - size = 64; page_size = 64; - readsize = 64; + ; + + memory "sram" + size = 2048; ; ; @@ -17487,7 +17552,7 @@ part parent "x16a4u" # x16c4 # ATxmega16D4 #------------------------------------------------------------ -part parent "x16a4u" # x16d4 +part parent ".xmega-cd" # x16d4 desc = "ATxmega16D4"; id = "x16d4"; variants = @@ -17502,13 +17567,39 @@ part parent "x16a4u" # x16d4 "ATxmega16D4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 234; n_interrupts = 91; + boot_section_size = 4096; signature = 0x1e 0x94 0x42; + usbpid = 0x2fe3; - memory "fuse0" = NULL; + memory "eeprom" + size = 1024; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "flash" + size = 0x5000; + ; + + memory "application" + size = 0x4000; + ; + + memory "apptable" + size = 4096; + offset = 0x803000; + ; + + memory "boot" + size = 4096; + offset = 0x804000; + ; + + memory "prodsig" + size = 52; + readsize = 52; + ; + + memory "sram" + size = 2048; ; ; @@ -17516,7 +17607,7 @@ part parent "x16a4u" # x16d4 # ATxmega16A4 #------------------------------------------------------------ -part parent "x16a4u" # x16a4 +part parent ".xmega-ab" # x16a4 desc = "ATxmega16A4"; id = "x16a4"; variants = @@ -17528,19 +17619,49 @@ part parent "x16a4u" # x16a4 "ATxmega16A4-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega16A4-MHR: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega16A4-MU: VQFN44, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + prog_modes = PM_SPM | PM_PDI; mcuid = 231; n_interrupts = 94; + boot_section_size = 4096; + signature = 0x1e 0x94 0x41; + usbpid = 0x2fe3; + + memory "eeprom" + size = 1024; + ; + + memory "flash" + size = 0x5000; + ; + + memory "application" + size = 0x4000; + ; + + memory "apptable" + size = 4096; + offset = 0x803000; + ; + + memory "boot" + size = 4096; + offset = 0x804000; + ; memory "fuse2" bitmask = 0x43; ; + + memory "sram" + size = 2048; + ; ; #------------------------------------------------------------ # ATxmega32A4U #------------------------------------------------------------ -part parent ".xmega-a" # x32a4u +part parent ".xmega-ab" # x32a4u desc = "ATxmega32A4U"; id = "x32a4u"; variants = @@ -17553,6 +17674,7 @@ part parent ".xmega-a" # x32a4u "ATxmega32A4U-M7: VQFN44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", "ATxmega32A4U-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega32A4U-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + prog_modes = PM_SPM | PM_PDI; mcuid = 239; n_interrupts = 127; boot_section_size = 4096; @@ -17561,53 +17683,24 @@ part parent ".xmega-a" # x32a4u memory "eeprom" size = 1024; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x9000; - page_size = 256; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x8000; - page_size = 256; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 4096; - page_size = 256; offset = 0x807000; - readsize = 256; ; memory "boot" size = 4096; - page_size = 256; offset = 0x808000; - readsize = 256; - ; - - memory "fuse4" - initval = 0xfe; - ; - - memory "prodsig" - size = 52; - readsize = 52; - ; - - memory "usersig" - size = 256; - page_size = 256; - offset = 0x8e0400; - readsize = 256; ; memory "sram" @@ -17619,7 +17712,7 @@ part parent ".xmega-a" # x32a4u # ATxmega32C4 #------------------------------------------------------------ -part parent "x32a4u" # x32c4 +part parent ".xmega-cd" # x32c4 desc = "ATxmega32C4"; id = "x32c4"; variants = @@ -17632,27 +17725,47 @@ part parent "x32a4u" # x32c4 "ATxmega32C4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega32C4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 240; + n_interrupts = 127; + boot_section_size = 4096; signature = 0x1e 0x95 0x44; + usbpid = 0x2fe4; - memory "fuse0" = NULL; + memory "eeprom" + size = 1024; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "flash" + size = 0x9000; ; - memory "prodsig" - size = 64; - page_size = 64; - readsize = 64; + memory "application" + size = 0x8000; ; -; -#------------------------------------------------------------ -# ATxmega32D4 -#------------------------------------------------------------ + memory "apptable" + size = 4096; + offset = 0x807000; + ; -part parent "x32a4u" # x32d4 + memory "boot" + size = 4096; + offset = 0x808000; + ; + + memory "prodsig" + page_size = 64; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# ATxmega32D4 +#------------------------------------------------------------ + +part parent ".xmega-cd" # x32d4 desc = "ATxmega32D4"; id = "x32d4"; variants = @@ -17668,13 +17781,39 @@ part parent "x32a4u" # x32d4 "ATxmega32D4-MHR: VQFN44, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; mcuid = 241; n_interrupts = 91; + boot_section_size = 4096; signature = 0x1e 0x95 0x42; + usbpid = 0x2fe4; - memory "fuse0" = NULL; + memory "eeprom" + size = 1024; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "flash" + size = 0x9000; + ; + + memory "application" + size = 0x8000; + ; + + memory "apptable" + size = 4096; + offset = 0x807000; + ; + + memory "boot" + size = 4096; + offset = 0x808000; + ; + + memory "prodsig" + size = 52; + readsize = 52; + ; + + memory "sram" + size = 4096; ; ; @@ -17682,7 +17821,7 @@ part parent "x32a4u" # x32d4 # ATxmega32A4 #------------------------------------------------------------ -part parent "x32a4u" # x32a4 +part parent ".xmega-ab" # x32a4 desc = "ATxmega32A4"; id = "x32a4"; variants = @@ -17694,19 +17833,49 @@ part parent "x32a4u" # x32a4 "ATxmega32A4-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega32A4-MHR: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega32A4-MU: VQFN44, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + prog_modes = PM_SPM | PM_PDI; mcuid = 238; n_interrupts = 94; + boot_section_size = 4096; + signature = 0x1e 0x95 0x41; + usbpid = 0x2fe4; + + memory "eeprom" + size = 1024; + ; + + memory "flash" + size = 0x9000; + ; + + memory "application" + size = 0x8000; + ; + + memory "apptable" + size = 4096; + offset = 0x807000; + ; + + memory "boot" + size = 4096; + offset = 0x808000; + ; memory "fuse2" bitmask = 0x43; ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega64A4U #------------------------------------------------------------ -part parent ".xmega-a" # x64a4u +part parent ".xmega-ab" # x64a4u desc = "ATxmega64A4U"; id = "x64a4u"; variants = @@ -17718,6 +17887,7 @@ part parent ".xmega-a" # x64a4u "ATxmega64A4U-M7: VQFN44PW, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", "ATxmega64A4U-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega64A4U-MHR: VQFN44, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + prog_modes = PM_SPM | PM_PDI; mcuid = 252; n_interrupts = 127; boot_section_size = 4096; @@ -17726,41 +17896,24 @@ part parent ".xmega-a" # x64a4u memory "eeprom" size = 2048; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x11000; - page_size = 256; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x10000; - page_size = 256; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 4096; - page_size = 256; offset = 0x80f000; - readsize = 256; ; memory "boot" size = 4096; - page_size = 256; offset = 0x810000; - readsize = 256; - ; - - memory "fuse4" - initval = 0xfe; ; memory "prodsig" @@ -17769,13 +17922,6 @@ part parent ".xmega-a" # x64a4u readsize = 64; ; - memory "usersig" - size = 256; - page_size = 256; - offset = 0x8e0400; - readsize = 256; - ; - memory "sram" size = 4096; ; @@ -17785,7 +17931,7 @@ part parent ".xmega-a" # x64a4u # ATxmega32C3 #------------------------------------------------------------ -part parent "x32a4u" # x32c3 +part parent ".xmega-cd" # x32c3 desc = "ATxmega32C3"; id = "x32c3"; variants = @@ -17797,19 +17943,39 @@ part parent "x32a4u" # x32c3 "ATxmega32C3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega32C3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; mcuid = 236; + n_interrupts = 127; + boot_section_size = 4096; signature = 0x1e 0x95 0x49; + usbpid = 0x2fe4; - memory "fuse0" = NULL; + memory "eeprom" + size = 1024; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "flash" + size = 0x9000; + ; + + memory "application" + size = 0x8000; + ; + + memory "apptable" + size = 4096; + offset = 0x807000; + ; + + memory "boot" + size = 4096; + offset = 0x808000; ; memory "prodsig" - size = 64; page_size = 64; - readsize = 64; + ; + + memory "sram" + size = 4096; ; ; @@ -17817,7 +17983,7 @@ part parent "x32a4u" # x32c3 # ATxmega32D3 #------------------------------------------------------------ -part parent "x32a4u" # x32d3 +part parent ".xmega-cd" # x32d3 desc = "ATxmega32D3"; id = "x32d3"; variants = @@ -17830,13 +17996,39 @@ part parent "x32a4u" # x32d3 "ATxmega32D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 237; n_interrupts = 114; + boot_section_size = 4096; signature = 0x1e 0x95 0x4a; + usbpid = 0x2fe4; - memory "fuse0" = NULL; + memory "eeprom" + size = 1024; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "flash" + size = 0x9000; + ; + + memory "application" + size = 0x8000; + ; + + memory "apptable" + size = 4096; + offset = 0x807000; + ; + + memory "boot" + size = 4096; + offset = 0x808000; + ; + + memory "prodsig" + size = 52; + readsize = 52; + ; + + memory "sram" + size = 4096; ; ; @@ -17844,7 +18036,7 @@ part parent "x32a4u" # x32d3 # ATxmega64C3 #------------------------------------------------------------ -part parent "x64a4u" # x64c3 +part parent ".xmega-cd" # x64c3 desc = "ATxmega64C3"; id = "x64c3"; variants = @@ -17856,14 +18048,39 @@ part parent "x64a4u" # x64c3 "ATxmega64C3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega64C3-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 249; + n_interrupts = 127; + boot_section_size = 4096; signature = 0x1e 0x96 0x49; usbpid = 0x2fd6; - memory "fuse0" = NULL; + memory "eeprom" + size = 2048; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "flash" + size = 0x11000; + ; + + memory "application" + size = 0x10000; + ; + + memory "apptable" + size = 4096; + offset = 0x80f000; + ; + + memory "boot" + size = 4096; + offset = 0x810000; + ; + + memory "prodsig" + page_size = 64; + ; + + memory "sram" + size = 4096; ; ; @@ -17871,7 +18088,7 @@ part parent "x64a4u" # x64c3 # ATxmega64D3 #------------------------------------------------------------ -part parent "x64a4u" # x64d3 +part parent ".xmega-cd" # x64d3 desc = "ATxmega64D3"; id = "x64d3"; variants = @@ -17885,27 +18102,47 @@ part parent "x64a4u" # x64d3 "ATxmega64D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 250; n_interrupts = 114; + boot_section_size = 4096; signature = 0x1e 0x96 0x4a; + usbpid = 0x2fe5; - memory "fuse0" = NULL; + memory "eeprom" + size = 2048; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "flash" + size = 0x11000; + ; + + memory "application" + size = 0x10000; + ; + + memory "apptable" + size = 4096; + offset = 0x80f000; + ; + + memory "boot" + size = 4096; + offset = 0x810000; ; memory "prodsig" size = 52; - page_size = 1; readsize = 52; ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega64D4 #------------------------------------------------------------ -part parent "x64a4u" # x64d4 +part parent ".xmega-cd" # x64d4 desc = "ATxmega64D4"; id = "x64d4"; variants = @@ -17919,13 +18156,38 @@ part parent "x64a4u" # x64d4 "ATxmega64D4-MHR: VQFN44, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; mcuid = 253; n_interrupts = 91; + boot_section_size = 4096; signature = 0x1e 0x96 0x47; + usbpid = 0x2fe5; - memory "fuse0" = NULL; + memory "eeprom" + size = 2048; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "flash" + size = 0x11000; + ; + + memory "application" + size = 0x10000; + ; + + memory "apptable" + size = 4096; + offset = 0x80f000; + ; + + memory "boot" + size = 4096; + offset = 0x810000; + ; + + memory "prodsig" + page_size = 64; + ; + + memory "sram" + size = 4096; ; ; @@ -17933,7 +18195,7 @@ part parent "x64a4u" # x64d4 # ATxmega64A1 #------------------------------------------------------------ -part parent "x64a4u" # x64a1 +part parent ".xmega-ab" # x64a1 desc = "ATxmega64A1"; id = "x64a1"; variants = @@ -17944,19 +18206,40 @@ part parent "x64a4u" # x64a1 "ATxmega64A1-C7UR: VFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", "ATxmega64A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega64A1-CUR: BGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; mcuid = 243; n_interrupts = 125; + boot_section_size = 4096; signature = 0x1e 0x96 0x4e; + usbpid = 0x2fe5; + + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x11000; + ; + + memory "application" + size = 0x10000; + ; + + memory "apptable" + size = 4096; + offset = 0x80f000; + ; + + memory "boot" + size = 4096; + offset = 0x810000; + ; memory "fuse2" bitmask = 0x43; ; - memory "prodsig" - size = 52; - page_size = 1; - readsize = 52; + memory "sram" + size = 4096; ; ; @@ -17964,7 +18247,7 @@ part parent "x64a4u" # x64a1 # ATxmega64A1U #------------------------------------------------------------ -part parent "x64a1" # x64a1u +part parent ".xmega-ab" # x64a1u desc = "ATxmega64A1U"; id = "x64a1u"; variants = @@ -17977,10 +18260,30 @@ part parent "x64a1" # x64a1u "ATxmega64A1U-CUR: TFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; mcuid = 244; n_interrupts = 127; + boot_section_size = 4096; + signature = 0x1e 0x96 0x4e; usbpid = 0x2fe8; - memory "fuse2" - bitmask = 0x63; + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x11000; + ; + + memory "application" + size = 0x10000; + ; + + memory "apptable" + size = 4096; + offset = 0x80f000; + ; + + memory "boot" + size = 4096; + offset = 0x810000; ; memory "prodsig" @@ -17988,13 +18291,17 @@ part parent "x64a1" # x64a1u page_size = 64; readsize = 64; ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega64A3 #------------------------------------------------------------ -part parent "x64a1" # x64a3 +part parent ".xmega-ab" # x64a3 desc = "ATxmega64A3"; id = "x64a3"; variants = @@ -18006,14 +18313,46 @@ part parent "x64a1" # x64a3 "ATxmega64A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; mcuid = 246; n_interrupts = 122; + boot_section_size = 4096; signature = 0x1e 0x96 0x42; + usbpid = 0x2fe5; + + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x11000; + ; + + memory "application" + size = 0x10000; + ; + + memory "apptable" + size = 4096; + offset = 0x80f000; + ; + + memory "boot" + size = 4096; + offset = 0x810000; + ; + + memory "fuse2" + bitmask = 0x43; + ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega64A3U #------------------------------------------------------------ -part parent "x64a1" # x64a3u +part parent ".xmega-ab" # x64a3u desc = "ATxmega64A3U"; id = "x64a3u"; variants = @@ -18025,10 +18364,34 @@ part parent "x64a1" # x64a3u "ATxmega64A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 247; n_interrupts = 127; + boot_section_size = 4096; signature = 0x1e 0x96 0x42; + usbpid = 0x2fe5; - memory "fuse2" - bitmask = 0x63; + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x11000; + ; + + memory "application" + size = 0x10000; + ; + + memory "apptable" + size = 4096; + offset = 0x80f000; + ; + + memory "boot" + size = 4096; + offset = 0x810000; + ; + + memory "sram" + size = 4096; ; ; @@ -18036,13 +18399,38 @@ part parent "x64a1" # x64a3u # ATxmega64A4 #------------------------------------------------------------ -part parent "x64a1" # x64a4 +part parent ".xmega-ab" # x64a4 desc = "ATxmega64A4"; id = "x64a4"; variants = "ATxmega64A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; mcuid = 251; + n_interrupts = 125; + boot_section_size = 4096; signature = 0x1e 0x96 0x46; + usbpid = 0x2fe5; + + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x11000; + ; + + memory "application" + size = 0x10000; + ; + + memory "apptable" + size = 4096; + offset = 0x80f000; + ; + + memory "boot" + size = 4096; + offset = 0x810000; + ; memory "fuse0" initval = -1; @@ -18070,13 +18458,17 @@ part parent "x64a1" # x64a4 memory "lock" initval = -1; ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega64B1 #------------------------------------------------------------ -part parent "x64a1" # x64b1 +part parent ".xmega-ab" # x64b1 desc = "ATxmega64B1"; id = "x64b1"; variants = @@ -18086,23 +18478,46 @@ part parent "x64a1" # x64b1 "ATxmega64B1-CUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 245; n_interrupts = 81; + boot_section_size = 4096; signature = 0x1e 0x96 0x52; usbpid = 0x2fe1; - memory "fuse2" - bitmask = 0x63; + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x11000; + ; + + memory "application" + size = 0x10000; + ; + + memory "apptable" + size = 4096; + offset = 0x80f000; + ; + + memory "boot" + size = 4096; + offset = 0x810000; ; memory "fuse4" initval = 0xff; ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega64B3 #------------------------------------------------------------ -part parent "x64a1" # x64b3 +part parent ".xmega-ab" # x64b3 desc = "ATxmega64B3"; id = "x64b3"; variants = @@ -18111,23 +18526,46 @@ part parent "x64a1" # x64b3 "ATxmega64B3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 248; n_interrupts = 54; + boot_section_size = 4096; signature = 0x1e 0x96 0x51; usbpid = 0x2fdf; - memory "fuse2" - bitmask = 0x63; + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x11000; + ; + + memory "application" + size = 0x10000; + ; + + memory "apptable" + size = 4096; + offset = 0x80f000; + ; + + memory "boot" + size = 4096; + offset = 0x810000; ; memory "fuse4" initval = 0xff; ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega128C3 #------------------------------------------------------------ -part parent ".xmega" # x128c3 +part parent ".xmega-cd" # x128c3 desc = "ATxmega128C3"; id = "x128c3"; variants = @@ -18145,50 +18583,37 @@ part parent ".xmega" # x128c3 memory "eeprom" size = 2048; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x22000; page_size = 512; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x20000; page_size = 512; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 8192; page_size = 512; offset = 0x81e000; - readsize = 256; ; memory "boot" size = 8192; page_size = 512; offset = 0x820000; - readsize = 256; ; memory "prodsig" - size = 64; page_size = 64; - readsize = 64; ; memory "usersig" size = 512; page_size = 512; - offset = 0x8e0400; - readsize = 256; ; memory "sram" @@ -18200,7 +18625,7 @@ part parent ".xmega" # x128c3 # ATxmega128D3 #------------------------------------------------------------ -part parent "x128c3" # x128d3 +part parent ".xmega-cd" # x128d3 desc = "ATxmega128D3"; id = "x128d3"; variants = @@ -18213,20 +18638,56 @@ part parent "x128c3" # x128d3 "ATxmega128D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 262; n_interrupts = 114; + boot_section_size = 8192; signature = 0x1e 0x97 0x48; + usbpid = 0x2fd7; + + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x22000; + page_size = 512; + ; + + memory "application" + size = 0x20000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x81e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x820000; + ; memory "prodsig" size = 52; - page_size = 1; readsize = 52; ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 8192; + ; ; #------------------------------------------------------------ # ATxmega128D4 #------------------------------------------------------------ -part parent "x128c3" # x128d4 +part parent ".xmega-cd" # x128d4 desc = "ATxmega128D4"; id = "x128d4"; variants = @@ -18240,10 +18701,46 @@ part parent "x128c3" # x128d4 "ATxmega128D4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 265; n_interrupts = 91; + boot_section_size = 8192; signature = 0x1e 0x97 0x47; + usbpid = 0x2fd7; + + memory "eeprom" + size = 2048; + ; memory "flash" - page_size = 256; + size = 0x22000; + ; + + memory "application" + size = 0x20000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x81e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x820000; + ; + + memory "prodsig" + page_size = 64; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 8192; ; ; @@ -18251,7 +18748,7 @@ part parent "x128c3" # x128d4 # ATxmega128A1 #------------------------------------------------------------ -part parent "x128c3" # x128a1 +part parent ".xmega-ab" # x128a1 desc = "ATxmega128A1"; id = "x128a1"; variants = @@ -18262,30 +18759,49 @@ part parent "x128c3" # x128a1 "ATxmega128A1-C7UR: VFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", "ATxmega128A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega128A1-CUR: BGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; mcuid = 254; n_interrupts = 125; + boot_section_size = 8192; signature = 0x1e 0x97 0x4c; + usbpid = 0x2fd7; - memory "fuse0" - size = 1; - initval = 0xff; - offset = 0x8f0020; + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x22000; + page_size = 512; + ; + + memory "application" + size = 0x20000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x81e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x820000; ; memory "fuse2" bitmask = 0x43; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "usersig" + size = 512; + page_size = 512; ; - memory "prodsig" - size = 52; - page_size = 1; - readsize = 52; + memory "sram" + size = 8192; ; ; @@ -18304,7 +18820,7 @@ part parent "x128a1" # x128a1d # ATxmega128A1U #------------------------------------------------------------ -part parent "x128a1" # x128a1u +part parent ".xmega-ab" # x128a1u desc = "ATxmega128A1U"; id = "x128a1u"; variants = @@ -18318,10 +18834,34 @@ part parent "x128a1" # x128a1u "ATxmega128A1U-CUR: CBGA100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 256; n_interrupts = 127; + boot_section_size = 8192; + signature = 0x1e 0x97 0x4c; usbpid = 0x2fed; - memory "fuse2" - bitmask = 0x63; + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x22000; + page_size = 512; + ; + + memory "application" + size = 0x20000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x81e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x820000; ; memory "prodsig" @@ -18329,13 +18869,22 @@ part parent "x128a1" # x128a1u page_size = 64; readsize = 64; ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 8192; + ; ; #------------------------------------------------------------ # ATxmega128A3 #------------------------------------------------------------ -part parent "x128a1" # x128a3 +part parent ".xmega-ab" # x128a3 desc = "ATxmega128A3"; id = "x128a3"; variants = @@ -18347,14 +18896,55 @@ part parent "x128a1" # x128a3 "ATxmega128A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; mcuid = 258; n_interrupts = 122; + boot_section_size = 8192; signature = 0x1e 0x97 0x42; + usbpid = 0x2fd7; + + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x22000; + page_size = 512; + ; + + memory "application" + size = 0x20000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x81e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x820000; + ; + + memory "fuse2" + bitmask = 0x43; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 8192; + ; ; #------------------------------------------------------------ # ATxmega128A3U #------------------------------------------------------------ -part parent "x128a1" # x128a3u +part parent ".xmega-ab" # x128a3u desc = "ATxmega128A3U"; id = "x128a3u"; variants = @@ -18366,11 +18956,43 @@ part parent "x128a1" # x128a3u "ATxmega128A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 259; n_interrupts = 127; + boot_section_size = 8192; signature = 0x1e 0x97 0x42; usbpid = 0x2fe6; - memory "fuse2" - bitmask = 0x63; + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x22000; + page_size = 512; + ; + + memory "application" + size = 0x20000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x81e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x820000; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 8192; ; ; @@ -18378,53 +19000,42 @@ part parent "x128a1" # x128a3u # ATxmega128A4 #------------------------------------------------------------ -part parent ".xmega" # x128a4 +part parent ".xmega-ab" # x128a4 desc = "ATxmega128A4"; id = "x128a4"; variants = "ATxmega128A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; mcuid = 263; signature = 0x1e 0x97 0x46; memory "eeprom" size = 2048; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x22000; page_size = 512; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x20000; page_size = 512; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 4096; page_size = 512; offset = 0x81f000; - readsize = 256; ; memory "boot" size = 8192; page_size = 512; offset = 0x820000; - readsize = 256; ; memory "fuse0" - size = 1; - offset = 0x8f0020; + initval = -1; ; memory "fuse1" @@ -18450,11 +19061,14 @@ part parent ".xmega" # x128a4 initval = -1; ; + memory "prodsig" + size = 50; + readsize = 50; + ; + memory "usersig" size = 512; page_size = 512; - offset = 0x8e0400; - readsize = 256; ; memory "sram" @@ -18466,7 +19080,7 @@ part parent ".xmega" # x128a4 # ATxmega128A4U #------------------------------------------------------------ -part parent ".xmega-a" # x128a4u +part parent ".xmega-ab" # x128a4u desc = "ATxmega128A4U"; id = "x128a4u"; variants = @@ -18477,6 +19091,7 @@ part parent ".xmega-a" # x128a4u "ATxmega128A4U-M7: VQFN44PW, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", "ATxmega128A4U-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega128A4U-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + prog_modes = PM_SPM | PM_PDI; mcuid = 264; n_interrupts = 127; boot_section_size = 8192; @@ -18485,41 +19100,24 @@ part parent ".xmega-a" # x128a4u memory "eeprom" size = 2048; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x22000; - page_size = 256; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x20000; - page_size = 256; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 4096; - page_size = 256; offset = 0x81f000; - readsize = 256; ; memory "boot" size = 8192; - page_size = 256; offset = 0x820000; - readsize = 256; - ; - - memory "fuse4" - initval = 0xfe; ; memory "prodsig" @@ -18528,13 +19126,6 @@ part parent ".xmega-a" # x128a4u readsize = 64; ; - memory "usersig" - size = 256; - page_size = 256; - offset = 0x8e0400; - readsize = 256; - ; - memory "sram" size = 8192; ; @@ -18544,7 +19135,7 @@ part parent ".xmega-a" # x128a4u # ATxmega128B1 #------------------------------------------------------------ -part parent ".xmega" # x128b1 +part parent ".xmega-ab" # x128b1 desc = "ATxmega128B1"; id = "x128b1"; variants = @@ -18553,7 +19144,6 @@ part parent ".xmega" # x128b1 "ATxmega128B1-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega128B1-CU: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega128B1-CUR: TFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; mcuid = 257; n_interrupts = 81; boot_section_size = 8192; @@ -18562,59 +19152,28 @@ part parent ".xmega" # x128b1 memory "eeprom" size = 2048; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x22000; - page_size = 256; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x20000; - page_size = 256; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 8192; - page_size = 256; offset = 0x81e000; - readsize = 256; ; memory "boot" size = 8192; - page_size = 256; offset = 0x820000; - readsize = 256; - ; - - memory "fuse0" - size = 1; - initval = 0xff; - offset = 0x8f0020; ; memory "fuse4" - bitmask = 0x1f; - ; - - memory "prodsig" - size = 52; - readsize = 52; - ; - - memory "usersig" - size = 256; - page_size = 256; - offset = 0x8e0400; - readsize = 256; + initval = 0xff; ; memory "sram" @@ -18626,7 +19185,7 @@ part parent ".xmega" # x128b1 # ATxmega128B3 #------------------------------------------------------------ -part parent "x128b1" # x128b3 +part parent ".xmega-ab" # x128b3 desc = "ATxmega128B3"; id = "x128b3"; variants = @@ -18638,15 +19197,46 @@ part parent "x128b1" # x128b3 "ATxmega128B3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 260; n_interrupts = 54; + boot_section_size = 8192; signature = 0x1e 0x97 0x4b; usbpid = 0x2fe0; + + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x22000; + ; + + memory "application" + size = 0x20000; + ; + + memory "apptable" + size = 8192; + offset = 0x81e000; + ; + + memory "boot" + size = 8192; + offset = 0x820000; + ; + + memory "fuse4" + initval = 0xff; + ; + + memory "sram" + size = 8192; + ; ; #------------------------------------------------------------ # ATxmega192C3 #------------------------------------------------------------ -part parent ".xmega" # x192c3 +part parent ".xmega-cd" # x192c3 desc = "ATxmega192C3"; id = "x192c3"; variants = @@ -18663,50 +19253,37 @@ part parent ".xmega" # x192c3 memory "eeprom" size = 2048; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x32000; page_size = 512; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x30000; page_size = 512; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 8192; page_size = 512; offset = 0x82e000; - readsize = 256; ; memory "boot" size = 8192; page_size = 512; offset = 0x830000; - readsize = 256; ; memory "prodsig" - size = 64; page_size = 64; - readsize = 64; ; memory "usersig" size = 512; page_size = 512; - offset = 0x8e0400; - readsize = 256; ; memory "sram" @@ -18718,7 +19295,7 @@ part parent ".xmega" # x192c3 # ATxmega192D3 #------------------------------------------------------------ -part parent "x192c3" # x192d3 +part parent ".xmega-cd" # x192d3 desc = "ATxmega192D3"; id = "x192d3"; variants = @@ -18731,32 +19308,97 @@ part parent "x192c3" # x192d3 "ATxmega192D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 270; n_interrupts = 114; + boot_section_size = 8192; signature = 0x1e 0x97 0x49; +# usbpid = 0x2f??; + + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x32000; + page_size = 512; + ; + + memory "application" + size = 0x30000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x82e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x830000; + ; + memory "prodsig" size = 52; - page_size = 1; readsize = 52; ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x4000; + ; ; #------------------------------------------------------------ # ATxmega192A1 #------------------------------------------------------------ -part parent "x192c3" # x192a1 +part parent ".xmega-ab" # x192a1 desc = "ATxmega192A1"; id = "x192a1"; variants = "ATxmega192A1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega192A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; mcuid = 266; + n_interrupts = 127; + boot_section_size = 8192; signature = 0x1e 0x97 0x4e; +# usbpid = 0x2f??; + + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x32000; + page_size = 512; + ; + + memory "application" + size = 0x30000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x82e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x830000; + ; + memory "fuse0" - size = 1; - offset = 0x8f0020; + initval = -1; ; memory "fuse1" @@ -18773,13 +19415,28 @@ part parent "x192c3" # x192a1 bitmask = -1; ; - memory "fuse5" - initval = -1; - bitmask = -1; + memory "fuse5" + initval = -1; + bitmask = -1; + ; + + memory "lock" + initval = -1; + ; + + memory "prodsig" + size = 64; + page_size = 64; + readsize = 64; + ; + + memory "usersig" + size = 512; + page_size = 512; ; - memory "lock" - initval = -1; + memory "sram" + size = 0x4000; ; ; @@ -18787,7 +19444,7 @@ part parent "x192c3" # x192a1 # ATxmega192A3 #------------------------------------------------------------ -part parent "x192c3" # x192a3 +part parent ".xmega-ab" # x192a3 desc = "ATxmega192A3"; id = "x192a3"; variants = @@ -18797,30 +19454,50 @@ part parent "x192c3" # x192a3 "ATxmega192A3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega192A3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega192A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; mcuid = 267; n_interrupts = 122; + boot_section_size = 8192; signature = 0x1e 0x97 0x44; - memory "fuse0" - size = 1; - initval = 0xff; - offset = 0x8f0020; +# usbpid = 0x2f??; + + memory "eeprom" + size = 2048; + ; + + memory "flash" + size = 0x32000; + page_size = 512; + ; + + memory "application" + size = 0x30000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x82e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x830000; ; memory "fuse2" bitmask = 0x43; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "usersig" + size = 512; + page_size = 512; ; - memory "prodsig" - size = 52; - page_size = 1; - readsize = 52; + memory "sram" + size = 0x4000; ; ; @@ -18828,7 +19505,7 @@ part parent "x192c3" # x192a3 # ATxmega192A3U #------------------------------------------------------------ -part parent "x192a1" # x192a3u +part parent ".xmega-ab" # x192a3u desc = "ATxmega192A3U"; id = "x192a3u"; variants = @@ -18840,40 +19517,46 @@ part parent "x192a1" # x192a3u "ATxmega192A3U-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", "ATxmega192A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 268; + n_interrupts = 127; + boot_section_size = 8192; signature = 0x1e 0x97 0x44; usbpid = 0x2fe7; - memory "fuse0" - initval = 0xff; +# usbpid = 0x2f??; + + memory "eeprom" + size = 2048; ; - memory "fuse1" - initval = 0x00; + memory "flash" + size = 0x32000; + page_size = 512; ; - memory "fuse2" - initval = 0xff; - bitmask = 0x63; + memory "application" + size = 0x30000; + page_size = 512; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x82e000; ; - memory "fuse5" - initval = 0xff; - bitmask = 0x3f; + memory "boot" + size = 8192; + page_size = 512; + offset = 0x830000; ; - memory "lock" - initval = 0xff; + memory "usersig" + size = 512; + page_size = 512; ; - memory "prodsig" - size = 52; - page_size = 1; - readsize = 52; + memory "sram" + size = 0x4000; ; ; @@ -18881,7 +19564,7 @@ part parent "x192a1" # x192a3u # ATxmega256C3 #------------------------------------------------------------ -part parent ".xmega" # x256c3 +part parent ".xmega-cd" # x256c3 desc = "ATxmega256C3"; id = "x256c3"; variants = @@ -18899,50 +19582,37 @@ part parent ".xmega" # x256c3 memory "eeprom" size = 4096; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x42000; page_size = 512; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x40000; page_size = 512; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 8192; page_size = 512; offset = 0x83e000; - readsize = 256; ; memory "boot" size = 8192; page_size = 512; offset = 0x840000; - readsize = 256; ; memory "prodsig" - size = 64; page_size = 64; - readsize = 64; ; memory "usersig" size = 512; page_size = 512; - offset = 0x8e0400; - readsize = 256; ; memory "sram" @@ -18954,7 +19624,7 @@ part parent ".xmega" # x256c3 # ATxmega256D3 #------------------------------------------------------------ -part parent "x256c3" # x256d3 +part parent ".xmega-cd" # x256d3 desc = "ATxmega256D3"; id = "x256d3"; variants = @@ -18967,31 +19637,95 @@ part parent "x256c3" # x256d3 "ATxmega256D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 277; n_interrupts = 114; + boot_section_size = 8192; signature = 0x1e 0x98 0x44; + usbpid = 0x2fda; + + memory "eeprom" + size = 4096; + ; + + memory "flash" + size = 0x42000; + page_size = 512; + ; + + memory "application" + size = 0x40000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x83e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x840000; + ; memory "prodsig" size = 52; - page_size = 1; readsize = 52; ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x4000; + ; ; #------------------------------------------------------------ # ATxmega256A1 #------------------------------------------------------------ -part parent "x256c3" # x256a1 +part parent ".xmega-ab" # x256a1 desc = "ATxmega256A1"; id = "x256a1"; variants = "ATxmega256A1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega256A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; mcuid = 271; + n_interrupts = 127; + boot_section_size = 8192; + signature = 0x1e 0x98 0x46; + usbpid = 0x2fda; + + memory "eeprom" + size = 4096; + ; + + memory "flash" + size = 0x42000; + page_size = 512; + ; + + memory "application" + size = 0x40000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x83e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x840000; + ; memory "fuse0" - size = 1; - offset = 0x8f0020; + initval = -1; ; memory "fuse1" @@ -19016,13 +19750,28 @@ part parent "x256c3" # x256a1 memory "lock" initval = -1; ; + + memory "prodsig" + size = 64; + page_size = 64; + readsize = 64; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x4000; + ; ; #------------------------------------------------------------ # ATxmega256A3 #------------------------------------------------------------ -part parent "x256a1" # x256a3 +part parent ".xmega-ab" # x256a3 desc = "ATxmega256A3"; id = "x256a3"; variants = @@ -19034,39 +19783,47 @@ part parent "x256a1" # x256a3 "ATxmega256A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; mcuid = 272; n_interrupts = 122; + boot_section_size = 8192; signature = 0x1e 0x98 0x42; + usbpid = 0x2fda; - memory "fuse0" - initval = 0xff; + memory "eeprom" + size = 4096; ; - memory "fuse1" - initval = 0x00; + memory "flash" + size = 0x42000; + page_size = 512; ; - memory "fuse2" - initval = 0xff; - bitmask = 0x43; + memory "application" + size = 0x40000; + page_size = 512; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x83e000; ; - memory "fuse5" - initval = 0xff; - bitmask = 0x3f; + memory "boot" + size = 8192; + page_size = 512; + offset = 0x840000; ; - memory "lock" - initval = 0xff; + memory "fuse2" + bitmask = 0x43; ; - memory "prodsig" - size = 52; - page_size = 1; - readsize = 52; + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x4000; ; ; @@ -19074,7 +19831,7 @@ part parent "x256a1" # x256a3 # ATxmega256A3U #------------------------------------------------------------ -part parent "x256a1" # x256a3u +part parent ".xmega-ab" # x256a3u desc = "ATxmega256A3U"; id = "x256a3u"; variants = @@ -19086,40 +19843,44 @@ part parent "x256a1" # x256a3u "ATxmega256A3U-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega256A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 275; + n_interrupts = 127; + boot_section_size = 8192; signature = 0x1e 0x98 0x42; usbpid = 0x2fec; - memory "fuse0" - initval = 0xff; + memory "eeprom" + size = 4096; ; - memory "fuse1" - initval = 0x00; + memory "flash" + size = 0x42000; + page_size = 512; ; - memory "fuse2" - initval = 0xff; - bitmask = 0x63; + memory "application" + size = 0x40000; + page_size = 512; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x83e000; ; - memory "fuse5" - initval = 0xff; - bitmask = 0x3f; + memory "boot" + size = 8192; + page_size = 512; + offset = 0x840000; ; - memory "lock" - initval = 0xff; + memory "usersig" + size = 512; + page_size = 512; ; - memory "prodsig" - size = 52; - page_size = 1; - readsize = 52; + memory "sram" + size = 0x4000; ; ; @@ -19127,7 +19888,7 @@ part parent "x256a1" # x256a3u # ATxmega256A3B #------------------------------------------------------------ -part parent "x256a1" # x256a3b +part parent ".xmega-ab" # x256a3b desc = "ATxmega256A3B"; id = "x256a3b"; variants = @@ -19138,39 +19899,47 @@ part parent "x256a1" # x256a3b "ATxmega256A3B-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; mcuid = 273; n_interrupts = 122; + boot_section_size = 8192; signature = 0x1e 0x98 0x43; + usbpid = 0x2fda; - memory "fuse0" - initval = 0xff; + memory "eeprom" + size = 4096; ; - memory "fuse1" - initval = 0x00; + memory "flash" + size = 0x42000; + page_size = 512; ; - memory "fuse2" - initval = 0xff; - bitmask = 0x43; + memory "application" + size = 0x40000; + page_size = 512; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x83e000; ; - memory "fuse5" - initval = 0xff; - bitmask = 0x3f; + memory "boot" + size = 8192; + page_size = 512; + offset = 0x840000; ; - memory "lock" - initval = 0xff; + memory "fuse2" + bitmask = 0x43; ; - memory "prodsig" - size = 52; - page_size = 1; - readsize = 52; + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x4000; ; ; @@ -19178,7 +19947,7 @@ part parent "x256a1" # x256a3b # ATxmega256A3BU #------------------------------------------------------------ -part parent "x256a1" # x256a3bu +part parent ".xmega-ab" # x256a3bu desc = "ATxmega256A3BU"; id = "x256a3bu"; variants = @@ -19187,40 +19956,44 @@ part parent "x256a1" # x256a3bu "ATxmega256A3BU-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega256A3BU-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 274; + n_interrupts = 127; + boot_section_size = 8192; signature = 0x1e 0x98 0x43; usbpid = 0x2fe2; - memory "fuse0" - initval = 0xff; + memory "eeprom" + size = 4096; ; - memory "fuse1" - initval = 0x00; + memory "flash" + size = 0x42000; + page_size = 512; ; - memory "fuse2" - initval = 0xff; - bitmask = 0x63; + memory "application" + size = 0x40000; + page_size = 512; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x83e000; ; - memory "fuse5" - initval = 0xff; - bitmask = 0x3f; + memory "boot" + size = 8192; + page_size = 512; + offset = 0x840000; ; - memory "lock" - initval = 0xff; + memory "usersig" + size = 512; + page_size = 512; ; - memory "prodsig" - size = 52; - page_size = 1; - readsize = 52; + memory "sram" + size = 0x4000; ; ; @@ -19228,7 +20001,7 @@ part parent "x256a1" # x256a3bu # ATxmega384C3 #------------------------------------------------------------ -part parent ".xmega" # x384c3 +part parent ".xmega-cd" # x384c3 desc = "ATxmega384C3"; id = "x384c3"; variants = @@ -19246,50 +20019,37 @@ part parent ".xmega" # x384c3 memory "eeprom" size = 4096; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x62000; page_size = 512; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x60000; page_size = 512; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 8192; page_size = 512; offset = 0x85e000; - readsize = 256; ; memory "boot" size = 8192; page_size = 512; offset = 0x860000; - readsize = 256; ; memory "prodsig" - size = 64; page_size = 64; - readsize = 64; ; memory "usersig" size = 512; page_size = 512; - offset = 0x8e0400; - readsize = 256; ; memory "sram" @@ -19301,7 +20061,7 @@ part parent ".xmega" # x384c3 # ATxmega384D3 #------------------------------------------------------------ -part parent "x384c3" # x384d3 +part parent ".xmega-cd" # x384d3 desc = "ATxmega384D3"; id = "x384d3"; variants = @@ -19312,7 +20072,48 @@ part parent "x384c3" # x384d3 "ATxmega384D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 279; n_interrupts = 114; + boot_section_size = 8192; signature = 0x1e 0x98 0x47; + usbpid = 0x2fdb; + + memory "eeprom" + size = 4096; + ; + + memory "flash" + size = 0x62000; + page_size = 512; + ; + + memory "application" + size = 0x60000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x85e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x860000; + ; + + memory "prodsig" + page_size = 64; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x8000; + ; ; #------------------------------------------------------------ @@ -19335,59 +20136,29 @@ part parent ".xmega-e" # x8e5 "ATxmega8E5-MU: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega8E5-MUR: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 230; - n_interrupts = 43; boot_section_size = 2048; signature = 0x1e 0x93 0x41; memory "eeprom" size = 512; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x2800; - page_size = 128; - offset = 0x800000; - readsize = 256; ; memory "application" size = 8192; - page_size = 128; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 2048; - page_size = 128; offset = 0x801800; - readsize = 256; ; memory "boot" size = 2048; - page_size = 128; offset = 0x802000; - readsize = 256; - ; - - memory "fuse2" - bitmask = 0x43; - ; - - memory "prodsig" - size = 54; - readsize = 54; - ; - - memory "usersig" - size = 128; - page_size = 128; - offset = 0x8e0400; - readsize = 256; ; memory "sram" @@ -19415,59 +20186,29 @@ part parent ".xmega-e" # x16e5 "ATxmega16E5-MU: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega16E5-MUR: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 235; - n_interrupts = 43; boot_section_size = 4096; signature = 0x1e 0x94 0x45; memory "eeprom" size = 512; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x5000; - page_size = 128; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x4000; - page_size = 128; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 4096; - page_size = 128; offset = 0x803000; - readsize = 256; ; memory "boot" size = 4096; - page_size = 128; offset = 0x804000; - readsize = 256; - ; - - memory "fuse2" - bitmask = 0x43; - ; - - memory "prodsig" - size = 54; - readsize = 54; - ; - - memory "usersig" - size = 128; - page_size = 128; - offset = 0x8e0400; - readsize = 256; ; memory "sram" @@ -19495,59 +20236,29 @@ part parent ".xmega-e" # x32e5 "ATxmega32E5-MU: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", "ATxmega32E5-MUR: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; mcuid = 242; - n_interrupts = 43; boot_section_size = 4096; signature = 0x1e 0x95 0x4c; memory "eeprom" size = 1024; - page_size = 32; - offset = 0x8c0000; - readsize = 256; ; memory "flash" size = 0x9000; - page_size = 128; - offset = 0x800000; - readsize = 256; ; memory "application" size = 0x8000; - page_size = 128; - offset = 0x800000; - readsize = 256; ; memory "apptable" size = 4096; - page_size = 128; offset = 0x807000; - readsize = 256; ; memory "boot" size = 4096; - page_size = 128; offset = 0x808000; - readsize = 256; - ; - - memory "fuse2" - bitmask = 0x43; - ; - - memory "prodsig" - size = 54; - readsize = 54; - ; - - memory "usersig" - size = 128; - page_size = 128; - offset = 0x8e0400; - readsize = 256; ; memory "sram" From 9576aec26af3278f68255e07c42a7e2d3e7ecd34 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Wed, 19 Jun 2024 21:57:35 +0100 Subject: [PATCH 02/32] Fix boot_section_size of ATxmega128A4 --- src/avrdude.conf.in | 1 + 1 file changed, 1 insertion(+) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index 00d18262c..45d023e33 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -19006,6 +19006,7 @@ part parent ".xmega-ab" # x128a4 variants = "ATxmega128A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; mcuid = 263; + boot_section_size = 8192; signature = 0x1e 0x97 0x46; memory "eeprom" From 5d322eb9dc4a3e16618162918a5dfa8b1d418e55 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Wed, 19 Jun 2024 22:09:25 +0100 Subject: [PATCH 03/32] Add calibration, sernum and tempsense sub-memories to XMEGAs --- src/avrdude.conf.in | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index 45d023e33..73f78feb4 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -17351,6 +17351,21 @@ part # .xmega-cd offset = 0x1000090; ; + memory "calibration" + size = 5; + offset = 0x8e0200; + ; + + memory "tempsense" + size = 2; + offset = 0x8e022e; + ; + + memory "sernum" + size = 14; + offset = 0x8e0208; + ; + memory "usersig" size = 256; page_size = 256; @@ -17442,6 +17457,10 @@ part parent ".xmega-cd" # .xmega-ab size = 52; readsize = 52; ; + + memory "calibration" + size = 4; + ; ; #------------------------------------------------------------ @@ -18508,6 +18527,10 @@ part parent ".xmega-ab" # x64b1 initval = 0xff; ; + memory "calibration" + size = 5; + ; + memory "sram" size = 4096; ; @@ -18556,6 +18579,10 @@ part parent ".xmega-ab" # x64b3 initval = 0xff; ; + memory "calibration" + size = 5; + ; + memory "sram" size = 4096; ; @@ -19177,6 +19204,10 @@ part parent ".xmega-ab" # x128b1 initval = 0xff; ; + memory "calibration" + size = 5; + ; + memory "sram" size = 8192; ; @@ -19228,6 +19259,10 @@ part parent ".xmega-ab" # x128b3 initval = 0xff; ; + memory "calibration" + size = 5; + ; + memory "sram" size = 8192; ; From 2373b0a06c6c93ecb1f20a1b3750aa703050d37e Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Thu, 20 Jun 2024 00:06:25 +0100 Subject: [PATCH 04/32] Fix access for XMEGA sernum and tempsense --- src/stk500v2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stk500v2.c b/src/stk500v2.c index 702566776..e69ad7e60 100644 --- a/src/stk500v2.c +++ b/src/stk500v2.c @@ -4496,7 +4496,7 @@ static int stk600_xprog_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const b[1] = XPRG_MEM_TYPE_FUSE; } else if (mem_is_lock(mem)) { b[1] = XPRG_MEM_TYPE_LOCKBITS; - } else if (mem_is_calibration(mem) || mem_is_sigrow(mem)) { + } else if (mem_is_calibration(mem) || mem_is_in_sigrow(mem)) { b[1] = XPRG_MEM_TYPE_FACTORY_CALIBRATION; } else if (mem_is_userrow(mem)) { b[1] = XPRG_MEM_TYPE_USERSIG; From ebe370ab0e35d970601496c331c85198a0587955 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Thu, 20 Jun 2024 00:10:01 +0100 Subject: [PATCH 05/32] Document XMEGA calibration, sernum and tempsense memories --- src/avrdude.1 | 16 ++++++++++++---- src/doc/avrdude.texi | 16 ++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/avrdude.1 b/src/avrdude.1 index 3a859781a..528d40cf0 100644 --- a/src/avrdude.1 +++ b/src/avrdude.1 @@ -845,6 +845,9 @@ Application flash area Application table flash area .It boot Boot flash area +.It calibration +An area of 4 (ATxmega-A series) or 5 bytes (ATxmega-B/C/D/E) with +oscillator calibration values; this is a sub-memory of prodsig .It fuse0 A.k.a. jtaguid: JTAG user ID for some devices .It fuse1 @@ -857,12 +860,17 @@ Other fuse bytes of ATxmega devices, where is 2, 4 or 5, for system configuration .It prodsig The production signature row is a read-only memory section for factory -programmed data such as the signature and calibration values for -oscillators or analogue modules; it also contains a serial number that -consists of the production lot number, wafer number and wafer coordinates -for the part +programmed data such as the calibration values for oscillators or analogue +modules; it also contains a serial number that consists of the production +lot number, wafer number and wafer coordinates for the part +.It sernum +Serial number with a unique ID for the part consisting of 10 bytes; these +are part of the prodsig memory above .It sigrow Memory alias for prodsig +.It tempsense +A two-byte memory, which is located within prodsig; it contains a 12-bit +temperature sensor calibration value .It usersig Additional flash memory page that can be used for firmware settings; this memory is not erased during a chip erase diff --git a/src/doc/avrdude.texi b/src/doc/avrdude.texi index b9b9dacf1..dcde9e53a 100644 --- a/src/doc/avrdude.texi +++ b/src/doc/avrdude.texi @@ -901,6 +901,9 @@ Application flash area Application table flash area @item boot Boot flash area +@item calibration +An area of 4 (ATxmega-A series) or 5 bytes (ATxmega-B/C/D/E) with +oscillator calibration values; this is a sub-memory of @code{prodsig} @item fuse0 A.k.a. jtaguid: JTAG user ID for some devices @item fuse1 @@ -911,12 +914,17 @@ Fault detection action configuration TC4/5 for ATxmega E series parts Other fuse bytes of ATxmega devices, where @emph{N} is 2, 4 or 5, for system configuration @item prodsig The production signature row is a read-only memory section for factory -programmed data such as the signature and calibration values for -oscillators or analogue modules; it also contains a serial number that -consists of the production lot number, wafer number and wafer coordinates -for the part +programmed data such as calibration values for oscillators or analogue +modules; it also contains a serial number that consists of the production +lot number, wafer number and wafer coordinates for the part +@item sernum +Serial number with a unique ID for the part consisting of 10 bytes; these +are part of the @code{prodsig} memory above @item sigrow Memory alias for prodsig +@item tempsense +A two-byte memory, which is located within @code{prodsig}; it contains a 12-bit +temperature sensor calibration value @item usersig Additional flash memory page that can be used for firmware settings; this memory is not erased during a chip erase From cde5d3e4619bc670ecba0d6761ad7cd1f99d4845 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Thu, 20 Jun 2024 00:26:39 +0100 Subject: [PATCH 06/32] Add sernum memory to m324pb, m328pb, t102 and t104 --- src/avrdude.conf.in | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index 73f78feb4..43a6efaeb 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -6233,6 +6233,11 @@ part parent "m324p" # m324pb memory "sigrow" alias "prodsig"; ; + + memory "sernum" + size = 10; + offset = 0xe; # Sub-region of prodsig + ; ; #------------------------------------------------------------ @@ -11036,6 +11041,11 @@ part parent "m328" # m328pb memory "sigrow" alias "prodsig"; ; + + memory "sernum" + size = 10; + offset = 0xe; # Sub-region of prodsig + ; ; #------------------------------------------------------------ @@ -20763,6 +20773,11 @@ part parent ".reduced_core_tiny" # t102 alias "prodsig"; ; + memory "sernum" + size = 10; + offset = 0x6; # Sub-region of prodsig + ; + memory "io" size = 64; ; @@ -20806,6 +20821,11 @@ part parent ".reduced_core_tiny" # t104 alias "prodsig"; ; + memory "sernum" + size = 10; + offset = 0x6; # Sub-region of prodsig + ; + memory "io" size = 64; ; From 110c7f961418f33c7ca7c8e97dd32bdbf356744d Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Thu, 20 Jun 2024 22:38:52 +0100 Subject: [PATCH 07/32] Add collective fuses memory for XMEGAs --- src/avrdude.conf.in | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index 43a6efaeb..51c54dfb9 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -17313,6 +17313,18 @@ part # .xmega-cd readsize = 256; ; + ###### + # Collective fuses memory + # - Does not know factory settings (only individual fuse bytes do) + # - fuses[0] (jtaguid) only used for (most) XMEGA-A/B parts + # - fuses[3] always reserved + # - fuses[6] only used in XMEGA-E parts + # + memory "fuses" + size = 7; + offset = 0x8f0020; + ; + memory "fuse1" size = 1; initval = 0x00; From d184b10e540a2fd7ac490f4751daf778fa9e0f54 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 21 Jun 2024 20:59:40 +0100 Subject: [PATCH 08/32] Fix access to sigrow submemories in jtag3.c --- src/jtag3.c | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/src/jtag3.c b/src/jtag3.c index c5ff43db0..b3935d6ef 100644 --- a/src/jtag3.c +++ b/src/jtag3.c @@ -1184,8 +1184,7 @@ static int jtag3_initialize(const PROGRAMMER *pgm, const AVRPART *p) { u32_to_b4(xd.nvm_prod_sig_offset, m->offset); } } - if(p->prog_modes & (PM_PDI | PM_UPDI)) - u32_to_b4(xd.nvm_data_offset, DATA_OFFSET); + u32_to_b4(xd.nvm_data_offset, DATA_OFFSET); if (jtag3_setparm(pgm, SCOPE_AVR, 2, PARM3_DEVICEDESC, (unsigned char *)&xd, sizeof xd) < 0) return -1; @@ -1245,8 +1244,7 @@ static int jtag3_initialize(const PROGRAMMER *pgm, const AVRPART *p) { } // Generate UPDI high-voltage pulse if user asks for it and hardware supports it - if (p->prog_modes & PM_UPDI && - PDATA(pgm)->use_hvupdi == true && + if (PDATA(pgm)->use_hvupdi == true && p->hvupdi_variant != HV_UPDI_VARIANT_1) { parm[0] = PARM3_UPDI_HV_NONE; for (LNODEID ln = lfirst(pgm->hvupdi_support); ln; ln = lnext(ln)) { @@ -2108,7 +2106,7 @@ static int jtag3_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM paddr = jtag3_memaddr(pgm, p, mem, addr); if (paddr != addr) - imsg_notice2("mapped to address: 0x%lx\n", paddr); + imsg_debug("addr 0x%lx mapped to address 0x%lx\n", addr, paddr); paddr = 0; if (mem->size < 1) { @@ -2131,7 +2129,7 @@ static int jtag3_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM cmd[3] = p->prog_modes & (PM_PDI | PM_UPDI)? MTYPE_FLASH: MTYPE_FLASH_PAGE; if (mem_is_in_flash(mem)) { - addr += mem->offset & (512 * 1024 - 1); /* max 512 KiB flash */ + addr += mem->offset & (512 * 1024 - 1); /* max 512 KiB flash @@@ could be max 8M */ pagesize = PDATA(pgm)->flash_pagesize; paddr = addr & ~(pagesize - 1); paddr_ptr = &PDATA(pgm)->flash_pageaddr; @@ -2167,19 +2165,7 @@ static int jtag3_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM if (pgm->flag & PGM_FL_IS_DW) unsupp = 1; } - } else if (mem_is_sernum(mem)) { - cmd[3] = MTYPE_SIGN_JTAG; - } else if (mem_is_osccal16(mem)) { - cmd[3] = MTYPE_SIGN_JTAG; - } else if (mem_is_osccal20(mem)) { - cmd[3] = MTYPE_SIGN_JTAG; - } else if (mem_is_tempsense(mem)) { - cmd[3] = MTYPE_SIGN_JTAG; - } else if (mem_is_osc16err(mem)) { - cmd[3] = MTYPE_SIGN_JTAG; - } else if (mem_is_osc20err(mem)) { - cmd[3] = MTYPE_SIGN_JTAG; - } else if (mem_is_calibration(mem)) { + } else if (!(p->prog_modes & (PM_PDI | PM_UPDI)) && mem_is_calibration(mem)) { // Classic part calibration cmd[3] = MTYPE_OSCCAL_BYTE; if (pgm->flag & PGM_FL_IS_DW) unsupp = 1; @@ -2226,6 +2212,11 @@ static int jtag3_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM msg_error("address out of range for signature memory: %lu\n", addr); return -1; } + } else if(mem_is_in_sigrow(mem)) { // sigrow submemories but not signature nor sigrow itself + cmd[3] = (p->prog_modes & PM_PDI)? MTYPE_SIGN_JTAG: MTYPE_PRODSIG; + AVRMEM *sigrow = avr_locate_sigrow(p); + if(sigrow) + addr += mem->offset - sigrow->offset; // Adjust offset for parent memory } else { pmsg_error("unknown memory %s\n", mem->desc); return -1; From 56e6535f963c0daf038cc46bf74118924d6e1b61 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 21 Jun 2024 21:32:11 +0100 Subject: [PATCH 09/32] Document the new fuses memory for XMEGAs --- src/avrdude.1 | 6 +++++- src/doc/avrdude.texi | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/avrdude.1 b/src/avrdude.1 index 528d40cf0..b97d7a9f1 100644 --- a/src/avrdude.1 +++ b/src/avrdude.1 @@ -848,6 +848,10 @@ Boot flash area .It calibration An area of 4 (ATxmega-A series) or 5 bytes (ATxmega-B/C/D/E) with oscillator calibration values; this is a sub-memory of prodsig +.It fuses +A logical memory of 7 bytes containing all fuseX of a part, which can be +used to program all fuses at the same time; note that some fuse bytes will +be reserved, though .It fuse0 A.k.a. jtaguid: JTAG user ID for some devices .It fuse1 @@ -903,7 +907,7 @@ A.k.a. bootend or bootsize: end of the boot section or the boot size in blocks o .It fusea A.k.a. pdicfg: configures/locks updi access; it is the only fuse that consists of two bytes .It fuses -A "logical" memory of up to 16 bytes containing all fuseX of a part, which can be +A logical memory of up to 16 bytes containing all fuseX of a part, which can be used to program all fuses at the same time .It osc16err Two bytes typically describing the 16 MHz oscillator frequency error at 3 V and 5 V, respectively diff --git a/src/doc/avrdude.texi b/src/doc/avrdude.texi index dcde9e53a..20b99dda0 100644 --- a/src/doc/avrdude.texi +++ b/src/doc/avrdude.texi @@ -904,6 +904,10 @@ Boot flash area @item calibration An area of 4 (ATxmega-A series) or 5 bytes (ATxmega-B/C/D/E) with oscillator calibration values; this is a sub-memory of @code{prodsig} +@item fuses +A logical memory of 7 bytes containing all @code{fuse}X of a part, which +can be used to program all fuses at the same time; note that some of the +fuse bytes will be reserved, though @item fuse0 A.k.a. jtaguid: JTAG user ID for some devices @item fuse1 @@ -957,7 +961,7 @@ A.k.a. bootend or bootsize: end of the boot section or the boot size in blocks o @item fusea A.k.a. pdicfg: configures/locks updi access; it is the only fuse that consists of two bytes @item fuses -A "logical" memory of up to 16 bytes containing all fuseX of a part, which can be used to program all fuses at the same time +A logical memory of up to 16 bytes containing all fuseX of a part, which can be used to program all fuses at the same time @item osc16err Two bytes typically describing the 16 MHz oscillator frequency error at 3 V and 5 V, respectively @item osc20err From 808457e53e3a037a8a0fe962a55019a8c5a5348f Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Thu, 4 Jul 2024 17:34:36 +0100 Subject: [PATCH 10/32] Fix flash size of x128a4 --- src/avrdude.conf.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index 51c54dfb9..bf090b0f2 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -19064,7 +19064,7 @@ part parent ".xmega-ab" # x128a4 memory "flash" size = 0x22000; - page_size = 512; + page_size = 256; ; memory "application" From dbb2fc36e4b113af5aa797b62f496bf5cf1e4349 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Thu, 4 Jul 2024 20:23:01 +0100 Subject: [PATCH 11/32] Adapt dryrun.c to new XMEGA memories --- src/dryrun.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/dryrun.c b/src/dryrun.c index 94f7d8457..dde53cc2a 100644 --- a/src/dryrun.c +++ b/src/dryrun.c @@ -557,12 +557,10 @@ static void dryrun_enable(PROGRAMMER *pgm, const AVRPART *p) { } else if(mem_is_sigrow(m) && m->size >= 6) { prodsigm = m; memset(m->buf, 0xff, m->size); - if(q->prog_modes & PM_PDI) { - m->buf[0] = m->buf[1] = 'U'; - } else if(q->prog_modes & PM_Classic) { // Signature at even addresses + // Classic parts: signature at even addresses @@@ but not t102/t104 + if(q->prog_modes & PM_Classic) for(int i=0; i<3; i++) m->buf[2*i] = q->signature[i]; - } } else if(mem_is_io(m)) { // Initialise reset values (if known) int nr; const Register_file *rf = avr_locate_register_file(q, &nr); @@ -575,7 +573,7 @@ static void dryrun_enable(PROGRAMMER *pgm, const AVRPART *p) { } } if(prodsigm) { - if(q->prog_modes & PM_UPDI) { + if(q->prog_modes & (PM_UPDI | PM_PDI)) { for (LNODEID ln=lfirst(q->mem); ln; ln=lnext(ln)) { AVRMEM *m = ldata(ln); if(m->buf == prodsigm->buf) // Skip prodsig memory @@ -588,7 +586,7 @@ static void dryrun_enable(PROGRAMMER *pgm, const AVRPART *p) { } } if((q->prog_modes & PM_Classic) && (calm = avr_locate_calibration(q))) { - // Calibration bytes of classic parts are interspersed with signature + // Calibration bytes of classic parts are interspersed with signature @@@ but not t102/104 for(int i=0; isize; i++) if(2*i+1 < prodsigm->size) prodsigm->buf[2*i+1] = 'U'; From ff35f536531b8d9ad10689ec62fac414b4cf91f7 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Thu, 4 Jul 2024 20:25:23 +0100 Subject: [PATCH 12/32] Prevent warnings for incomplete stump XMEGA family entries --- src/avrdude.conf.in | 350 +------------------------------------------- 1 file changed, 7 insertions(+), 343 deletions(-) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index eb4bcb1eb..4b4135e1c 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -17286,30 +17286,37 @@ part # .xmega-cd factory_fcpu = 2000000; memory "eeprom" + size = 2048; page_size = 32; offset = 0x8c0000; readsize = 256; ; memory "flash" + size = 0x11000; page_size = 256; offset = 0x800000; readsize = 256; ; memory "application" + size = 0x10000; page_size = 256; offset = 0x800000; readsize = 256; ; memory "apptable" + size = 4096; page_size = 256; + offset = 0x80f000; readsize = 256; ; memory "boot" + size = 4096; page_size = 256; + offset = 0x810000; readsize = 256; ; @@ -17522,12 +17529,10 @@ part parent ".xmega-ab" # x16a4u ; memory "apptable" - size = 4096; offset = 0x803000; ; memory "boot" - size = 4096; offset = 0x804000; ; @@ -17571,12 +17576,10 @@ part parent ".xmega-cd" # x16c4 ; memory "apptable" - size = 4096; offset = 0x803000; ; memory "boot" - size = 4096; offset = 0x804000; ; @@ -17625,12 +17628,10 @@ part parent ".xmega-cd" # x16d4 ; memory "apptable" - size = 4096; offset = 0x803000; ; memory "boot" - size = 4096; offset = 0x804000; ; @@ -17680,12 +17681,10 @@ part parent ".xmega-ab" # x16a4 ; memory "apptable" - size = 4096; offset = 0x803000; ; memory "boot" - size = 4096; offset = 0x804000; ; @@ -17735,12 +17734,10 @@ part parent ".xmega-ab" # x32a4u ; memory "apptable" - size = 4096; offset = 0x807000; ; memory "boot" - size = 4096; offset = 0x808000; ; @@ -17784,12 +17781,10 @@ part parent ".xmega-cd" # x32c4 ; memory "apptable" - size = 4096; offset = 0x807000; ; memory "boot" - size = 4096; offset = 0x808000; ; @@ -17839,12 +17834,10 @@ part parent ".xmega-cd" # x32d4 ; memory "apptable" - size = 4096; offset = 0x807000; ; memory "boot" - size = 4096; offset = 0x808000; ; @@ -17894,12 +17887,10 @@ part parent ".xmega-ab" # x32a4 ; memory "apptable" - size = 4096; offset = 0x807000; ; memory "boot" - size = 4096; offset = 0x808000; ; @@ -17935,28 +17926,6 @@ part parent ".xmega-ab" # x64a4u signature = 0x1e 0x96 0x46; usbpid = 0x2fe5; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "prodsig" size = 64; page_size = 64; @@ -18002,12 +17971,10 @@ part parent ".xmega-cd" # x32c3 ; memory "apptable" - size = 4096; offset = 0x807000; ; memory "boot" - size = 4096; offset = 0x808000; ; @@ -18054,12 +18021,10 @@ part parent ".xmega-cd" # x32d3 ; memory "apptable" - size = 4096; offset = 0x807000; ; memory "boot" - size = 4096; offset = 0x808000; ; @@ -18094,28 +18059,6 @@ part parent ".xmega-cd" # x64c3 signature = 0x1e 0x96 0x49; usbpid = 0x2fd6; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "prodsig" page_size = 64; ; @@ -18147,28 +18090,6 @@ part parent ".xmega-cd" # x64d3 signature = 0x1e 0x96 0x4a; usbpid = 0x2fe5; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "prodsig" size = 52; readsize = 52; @@ -18201,28 +18122,6 @@ part parent ".xmega-cd" # x64d4 signature = 0x1e 0x96 0x47; usbpid = 0x2fe5; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "prodsig" page_size = 64; ; @@ -18253,28 +18152,6 @@ part parent ".xmega-ab" # x64a1 signature = 0x1e 0x96 0x4e; usbpid = 0x2fe5; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "fuse2" bitmask = 0x43; ; @@ -18305,28 +18182,6 @@ part parent ".xmega-ab" # x64a1u signature = 0x1e 0x96 0x4e; usbpid = 0x2fe8; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "prodsig" size = 64; page_size = 64; @@ -18358,28 +18213,6 @@ part parent ".xmega-ab" # x64a3 signature = 0x1e 0x96 0x42; usbpid = 0x2fe5; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "fuse2" bitmask = 0x43; ; @@ -18409,28 +18242,6 @@ part parent ".xmega-ab" # x64a3u signature = 0x1e 0x96 0x42; usbpid = 0x2fe5; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "sram" size = 4096; ; @@ -18451,28 +18262,6 @@ part parent ".xmega-ab" # x64a4 signature = 0x1e 0x96 0x46; usbpid = 0x2fe5; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "fuse0" initval = -1; ; @@ -18523,28 +18312,6 @@ part parent ".xmega-ab" # x64b1 signature = 0x1e 0x96 0x52; usbpid = 0x2fe1; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "fuse4" initval = 0xff; ; @@ -18575,28 +18342,6 @@ part parent ".xmega-ab" # x64b3 signature = 0x1e 0x96 0x51; usbpid = 0x2fdf; - memory "eeprom" - size = 2048; - ; - - memory "flash" - size = 0x11000; - ; - - memory "application" - size = 0x10000; - ; - - memory "apptable" - size = 4096; - offset = 0x80f000; - ; - - memory "boot" - size = 4096; - offset = 0x810000; - ; - memory "fuse4" initval = 0xff; ; @@ -18630,10 +18375,6 @@ part parent ".xmega-cd" # x128c3 signature = 0x1e 0x97 0x52; usbpid = 0x2fd7; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; page_size = 512; @@ -18691,10 +18432,6 @@ part parent ".xmega-cd" # x128d3 signature = 0x1e 0x97 0x48; usbpid = 0x2fd7; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; page_size = 512; @@ -18754,10 +18491,6 @@ part parent ".xmega-cd" # x128d4 signature = 0x1e 0x97 0x47; usbpid = 0x2fd7; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; ; @@ -18814,10 +18547,6 @@ part parent ".xmega-ab" # x128a1 signature = 0x1e 0x97 0x4c; usbpid = 0x2fd7; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; page_size = 512; @@ -18887,10 +18616,6 @@ part parent ".xmega-ab" # x128a1u signature = 0x1e 0x97 0x4c; usbpid = 0x2fed; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; page_size = 512; @@ -18949,10 +18674,6 @@ part parent ".xmega-ab" # x128a3 signature = 0x1e 0x97 0x42; usbpid = 0x2fd7; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; page_size = 512; @@ -19009,10 +18730,6 @@ part parent ".xmega-ab" # x128a3u signature = 0x1e 0x97 0x42; usbpid = 0x2fe6; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; page_size = 512; @@ -19058,13 +18775,8 @@ part parent ".xmega-ab" # x128a4 boot_section_size = 8192; signature = 0x1e 0x97 0x46; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; - page_size = 256; ; memory "application" @@ -19073,7 +18785,6 @@ part parent ".xmega-ab" # x128a4 ; memory "apptable" - size = 4096; page_size = 512; offset = 0x81f000; ; @@ -19148,10 +18859,6 @@ part parent ".xmega-ab" # x128a4u signature = 0x1e 0x97 0x46; usbpid = 0x2fde; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; ; @@ -19161,7 +18868,6 @@ part parent ".xmega-ab" # x128a4u ; memory "apptable" - size = 4096; offset = 0x81f000; ; @@ -19200,10 +18906,6 @@ part parent ".xmega-ab" # x128b1 signature = 0x1e 0x97 0x4d; usbpid = 0x2fea; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; ; @@ -19255,10 +18957,6 @@ part parent ".xmega-ab" # x128b3 signature = 0x1e 0x97 0x4b; usbpid = 0x2fe0; - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x22000; ; @@ -19307,12 +19005,6 @@ part parent ".xmega-cd" # x192c3 boot_section_size = 8192; signature = 0x1e 0x97 0x51; -# usbpid = 0x2f??; - - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x32000; page_size = 512; @@ -19369,12 +19061,6 @@ part parent ".xmega-cd" # x192d3 boot_section_size = 8192; signature = 0x1e 0x97 0x49; -# usbpid = 0x2f??; - - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x32000; page_size = 512; @@ -19427,12 +19113,6 @@ part parent ".xmega-ab" # x192a1 boot_section_size = 8192; signature = 0x1e 0x97 0x4e; -# usbpid = 0x2f??; - - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x32000; page_size = 512; @@ -19517,12 +19197,6 @@ part parent ".xmega-ab" # x192a3 boot_section_size = 8192; signature = 0x1e 0x97 0x44; -# usbpid = 0x2f??; - - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x32000; page_size = 512; @@ -19580,12 +19254,6 @@ part parent ".xmega-ab" # x192a3u signature = 0x1e 0x97 0x44; usbpid = 0x2fe7; -# usbpid = 0x2f??; - - memory "eeprom" - size = 2048; - ; - memory "flash" size = 0x32000; page_size = 512; @@ -20260,12 +19928,10 @@ part parent ".xmega-e" # x16e5 ; memory "apptable" - size = 4096; offset = 0x803000; ; memory "boot" - size = 4096; offset = 0x804000; ; @@ -20310,12 +19976,10 @@ part parent ".xmega-e" # x32e5 ; memory "apptable" - size = 4096; offset = 0x807000; ; memory "boot" - size = 4096; offset = 0x808000; ; From 6de1cd928ec277e7e8be12dfb2575c2e8b8bf0cb Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Thu, 4 Jul 2024 20:34:57 +0100 Subject: [PATCH 13/32] Place classic prodsig submemories into flat address model --- src/fileio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fileio.c b/src/fileio.c index 3004f1f99..719786f8c 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -224,7 +224,7 @@ unsigned fileio_mem_offset(const AVRPART *p, const AVRMEM *mem) { // Classic parts intersperse signature and calibration bytes, this code places them together (p->prog_modes & PM_Classic) && mem_is_signature(mem)? MBASE(SIGROW): (p->prog_modes & PM_Classic) && mem_is_calibration(mem)? MBASE(SIGROW)+3: - (p->prog_modes & PM_Classic) && mem_is_sigrow(mem)? MBASE(SIGROW)+0x10: // Eg, m328pb + (p->prog_modes & PM_Classic) && mem_is_in_sigrow(mem)? MBASE(SIGROW)+0x10+mem->offset-boffset(p, sigrow): // XMEGA parts have signature separate from prodsig, place prodsig at +0x10 as above (p->prog_modes & PM_PDI) && mem_is_signature(mem)? MBASE(SIGROW): (p->prog_modes & PM_PDI) && mem_is_in_sigrow(mem)? MBASE(SIGROW)+0x10 + mem->offset - boffset(p, sigrow): From 6979fce1ee161fe7b5e20a7f49e075f2b4f010a5 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 12 Jul 2024 17:52:54 +0100 Subject: [PATCH 14/32] Fix sernum entries for classic parts --- src/avrdude.conf.in | 6 ++++-- src/config_gram.y | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index 4b4135e1c..f874d40b5 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -6237,6 +6237,7 @@ part parent "m324p" # m324pb memory "sernum" size = 10; offset = 0xe; # Sub-region of prodsig + read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; ; ; @@ -11045,6 +11046,7 @@ part parent "m328" # m328pb memory "sernum" size = 10; offset = 0xe; # Sub-region of prodsig + read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; ; ; @@ -20451,7 +20453,7 @@ part parent ".reduced_core_tiny" # t102 memory "sernum" size = 10; - offset = 0x6; # Sub-region of prodsig + offset = 0x3fc6; # Sub-region of prodsig ; memory "io" @@ -20499,7 +20501,7 @@ part parent ".reduced_core_tiny" # t104 memory "sernum" size = 10; - offset = 0x6; # Sub-region of prodsig + offset = 0x3fc6; # Sub-region of prodsig ; memory "io" diff --git a/src/config_gram.y b/src/config_gram.y index 11e57316d..62f0e6737 100644 --- a/src/config_gram.y +++ b/src/config_gram.y @@ -374,7 +374,7 @@ part_def : m->type &= and_mask; // Remove MEM_IN_SIGROW attribute from classic calibration and classic/XMEGA signature mem - if(!(current_part->prog_modes & (PM_PDI|PM_UPDI))) { + if(current_part->prog_modes & PM_Classic) { if(mem_is_signature(m)) m->type &= ~MEM_IN_SIGROW; if(mem_is_calibration(m)) @@ -1396,11 +1396,11 @@ static int parse_cmdbits(OPCODE * op, int opnum) case 'a': sb = opnum == AVR_OP_LOAD_EXT_ADDR? bitno+8: bitno-8; // should be this number if(bitno < 8 || bitno > 23) { - if(!current_mem || !mem_is_sigrow(current_mem)) // Known exemption + if(!current_mem || !mem_is_in_sigrow(current_mem)) // Known exemptions yywarning("address bits don't normally appear in Bytes 0 or 3 of SPI commands"); } else if((bn & 31) != sb) { if(!current_part || !str_casestarts(current_part->desc, "AT89S5")) // Exempt AT89S5x - if(!current_mem || !mem_is_sigrow(current_mem)) // and prodsig + if(!current_mem || !mem_is_in_sigrow(current_mem)) // ... and prodsig/sernum yywarning("a%d would normally be expected to be a%d", bn, sb); } else if(bn < 0 || bn > 31) yywarning("invalid address bit a%d, using a%d", bn, bn & 31); From 8d1ea3829769ac243b6e25aeda1aa20e56faea6c Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 12 Jul 2024 18:25:21 +0100 Subject: [PATCH 15/32] Fix plural in message --- src/term.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/term.c b/src/term.c index 07ade813d..937c8ac29 100644 --- a/src/term.c +++ b/src/term.c @@ -2009,7 +2009,8 @@ static int cmd_part(const PROGRAMMER *pgm, const AVRPART *p, int argc, const cha else if(onlyvariants) avr_variants_display(stdout, p, ""); else { - term_out("%s with programming modes %s\n", p->desc, str_prog_modes(p->prog_modes)); + char *q = str_prog_modes(p->prog_modes); + term_out("%s with programming mode%s %s\n", p->desc, strchr(q, ',')? "s": "", q); avr_mem_display(stdout, p, ""); avr_variants_display(stdout, p, ""); } From be63435aa24cb143b09dda294e8fffa7be1cec78 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 12 Jul 2024 18:37:28 +0100 Subject: [PATCH 16/32] Copy sernum into prodsig for classic parts in dryrun.c --- src/dryrun.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/dryrun.c b/src/dryrun.c index 30a33dacb..d680a7289 100644 --- a/src/dryrun.c +++ b/src/dryrun.c @@ -603,10 +603,11 @@ static void dryrun_enable(PROGRAMMER *pgm, const AVRPART *p) { } else if(mem_is_sigrow(m) && m->size >= 6) { prodsigm = m; memset(m->buf, 0xff, m->size); - // Classic parts: signature at even addresses @@@ but not t102/t104 + // Classic parts: signature at even addresses + int n = q->prog_modes & PM_TPI? 1: 2; // ... unless it's the TPI parts t102/t104 if(q->prog_modes & PM_Classic) for(int i=0; i<3; i++) - m->buf[2*i] = q->signature[i]; + m->buf[n*i] = q->signature[i]; } else if(mem_is_io(m)) { // Initialise reset values (if known) int nr; const Register_file *rf = avr_locate_register_file(q, &nr); @@ -632,10 +633,18 @@ static void dryrun_enable(PROGRAMMER *pgm, const AVRPART *p) { } } if((q->prog_modes & PM_Classic) && (calm = avr_locate_calibration(q))) { - // Calibration bytes of classic parts are interspersed with signature @@@ but not t102/104 - for(int i=0; isize; i++) - if(2*i+1 < prodsigm->size) - prodsigm->buf[2*i+1] = 'U'; + // Calibration bytes of classic parts are interspersed with signature + int n, tpi = !!(q->prog_modes & PM_TPI); // ... unless it's the TPI parts t102/t104 + for(int i=0; isize; i++) { + if((n = tpi? 3+i: 2*i+1) < prodsigm->size) + prodsigm->buf[n] = 'U'; + } + } + if((q->prog_modes & PM_Classic) && (m = avr_locate_sernum(q))) { // m324pb/m328pb, t102/t104 + int off = m->offset - prodsigm->offset; + int cpy = m->size; + if(off >= 0 && off+cpy <= prodsigm->size) + memcpy(prodsigm->buf + off, m->buf, cpy); } } if(fusesm) { From 8a4c00fc21a923266a53ebdfd6ce6cf800b828ce Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 12 Jul 2024 18:41:37 +0100 Subject: [PATCH 17/32] Add ability to read classic sernum mem to avr_read_byte_default() --- src/avr.c | 18 +++++++++++++++++- src/libavrdude.h | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/avr.c b/src/avr.c index 51be9006b..fe48def3b 100644 --- a/src/avr.c +++ b/src/avr.c @@ -181,6 +181,22 @@ static int avr_tpi_setup_rw(const PROGRAMMER *pgm, const AVRMEM *mem, return 0; } +// If mem is a sub-memory of sigrow return its offset within sigrow, 0 otherwise +int avr_sigrow_offset(const AVRPART *p, const AVRMEM *mem, int addr) { + int offset = 0; + + if(mem_is_in_sigrow(mem)) { + AVRMEM *m = avr_locate_sigrow(p); + if(m) { + int off = mem->offset - m->offset; + if(off >= 0 && off + addr < m->size) + offset = off; + } + } + + return offset; +} + int avr_read_byte_default(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *mem, unsigned long addr, unsigned char * value) { @@ -258,7 +274,7 @@ int avr_read_byte_default(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM memset(cmd, 0, sizeof(cmd)); avr_set_bits(readop, cmd); - avr_set_addr(readop, cmd, addr); + avr_set_addr(readop, cmd, addr + avr_sigrow_offset(p, mem, addr)); rc = pgm->cmd(pgm, cmd, res); if(rc < 0) goto rcerror; diff --git a/src/libavrdude.h b/src/libavrdude.h index baa24b1cd..d1b4af403 100644 --- a/src/libavrdude.h +++ b/src/libavrdude.h @@ -1102,6 +1102,7 @@ extern "C" { int avr_tpi_poll_nvmbsy(const PROGRAMMER *pgm); int avr_tpi_chip_erase(const PROGRAMMER *pgm, const AVRPART *p); int avr_tpi_program_enable(const PROGRAMMER *pgm, const AVRPART *p, unsigned char guard_time); +int avr_sigrow_offset(const AVRPART *p, const AVRMEM *mem, int addr); int avr_read_byte_default(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *mem, unsigned long addr, unsigned char * value); From 45d1bea57584987f9b979185dc30a47af637b718 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 12 Jul 2024 18:53:00 +0100 Subject: [PATCH 18/32] Enable classic sernum read for ISP/HVPP/HVSP/JTAG in stk500v2.c --- src/stk500v2.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/stk500v2.c b/src/stk500v2.c index e69ad7e60..350547407 100644 --- a/src/stk500v2.c +++ b/src/stk500v2.c @@ -2308,11 +2308,11 @@ static int stk500hv_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVR buf[0] = mode == PPMODE? CMD_READ_OSCCAL_PP: CMD_READ_OSCCAL_HVSP; } else if (mem_is_signature(mem)) { buf[0] = mode == PPMODE? CMD_READ_SIGNATURE_PP: CMD_READ_SIGNATURE_HVSP; - } else if (mem_is_sigrow(mem)) { + } else if (mem_is_in_sigrow(mem)) { buf[0] = addr&1? (mode == PPMODE? CMD_READ_OSCCAL_PP: CMD_READ_OSCCAL_HVSP): (mode == PPMODE? CMD_READ_SIGNATURE_PP: CMD_READ_SIGNATURE_HVSP); - addr /= 2; + addr = (addr + avr_sigrow_offset(p, mem, addr))/2; } else { pmsg_error("unsupported memory %s\n", mem->desc); return -1; @@ -2391,7 +2391,7 @@ static int stk500hvsp_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const A static int stk500isp_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *mem, unsigned long addr, unsigned char * value) { - int result, pollidx; + int result, pollidx, offset = 0; unsigned char buf[6]; unsigned long paddr = 0UL, *paddr_ptr = NULL; unsigned int pagesize = 0; @@ -2441,8 +2441,9 @@ static int stk500isp_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AV buf[0] = CMD_READ_OSCCAL_ISP; } else if (mem_is_signature(mem)) { buf[0] = CMD_READ_SIGNATURE_ISP; - } else if (mem_is_sigrow(mem)) { + } else if (mem_is_in_sigrow(mem)) { // Sernum and prodsig/sigrow (m324pb/m328pb) buf[0] = addr&1? CMD_READ_OSCCAL_ISP: CMD_READ_SIGNATURE_ISP; + offset = avr_sigrow_offset(p, mem, addr); } else { pmsg_error("unsupported memory %s\n", mem->desc); return -1; @@ -2459,7 +2460,7 @@ static int stk500isp_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AV pollidx = 3; } buf[1] = pollidx + 1; - avr_set_addr(op, buf + 2, addr); + avr_set_addr(op, buf + 2, addr + offset); pmsg_notice2("stk500isp_read_byte(): sending read memory command: "); @@ -4570,7 +4571,7 @@ static int stk600_xprog_paged_load(const PROGRAMMER *pgm, const AVRPART *p, cons mtype = XPRG_MEM_TYPE_FUSE; } else if (mem_is_lock(mem)) { mtype = XPRG_MEM_TYPE_LOCKBITS; - } else if (mem_is_calibration(mem) || mem_is_sigrow(mem)) { + } else if (mem_is_calibration(mem) || mem_is_in_sigrow(mem)) { mtype = XPRG_MEM_TYPE_FACTORY_CALIBRATION; } else if (mem_is_userrow(mem)) { mtype = XPRG_MEM_TYPE_USERSIG; From 1ce9154664276d95454d000f98fe506bcf85a6a1 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 12 Jul 2024 19:04:19 +0100 Subject: [PATCH 19/32] Review sigrow sub-memory treatment in jtag*.c --- src/jtag3.c | 4 ++-- src/jtagmkI.c | 3 ++- src/jtagmkII.c | 5 ++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/jtag3.c b/src/jtag3.c index b3935d6ef..c2976ae0b 100644 --- a/src/jtag3.c +++ b/src/jtag3.c @@ -2165,7 +2165,7 @@ static int jtag3_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM if (pgm->flag & PGM_FL_IS_DW) unsupp = 1; } - } else if (!(p->prog_modes & (PM_PDI | PM_UPDI)) && mem_is_calibration(mem)) { // Classic part calibration + } else if ((p->prog_modes & PM_Classic) && mem_is_calibration(mem)) { // Classic part calibration cmd[3] = MTYPE_OSCCAL_BYTE; if (pgm->flag & PGM_FL_IS_DW) unsupp = 1; @@ -2815,7 +2815,7 @@ static unsigned char tpi_get_mtype(const AVRMEM *m) { mem_is_lock(m)? XPRG_MEM_TYPE_LOCKBITS: mem_is_calibration(m)? XPRG_MEM_TYPE_LOCKBITS: // Sic, uses offset to distingish memories mem_is_signature(m)? XPRG_MEM_TYPE_LOCKBITS: - mem_is_sigrow(m)? XPRG_MEM_TYPE_LOCKBITS: + mem_is_in_sigrow(m)? XPRG_MEM_TYPE_LOCKBITS: XPRG_MEM_TYPE_APPL; // Sic, TPI parts do not have eeprom } diff --git a/src/jtagmkI.c b/src/jtagmkI.c index 9f546cf8b..23923bf5d 100644 --- a/src/jtagmkI.c +++ b/src/jtagmkI.c @@ -852,7 +852,8 @@ static int jtagmkI_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRM cmd[1] = MTYPE_OSCCAL_BYTE; } else if (mem_is_signature(mem)) { cmd[1] = MTYPE_SIGN_JTAG; - } else if (mem_is_sigrow(mem)) { + } else if (mem_is_in_sigrow(mem)) { + addr += avr_sigrow_offset(p, mem, addr); cmd[1] = addr&1? MTYPE_OSCCAL_BYTE: MTYPE_SIGN_JTAG; addr /= 2; } else { diff --git a/src/jtagmkII.c b/src/jtagmkII.c index 12c4b53b3..4cf13f46f 100644 --- a/src/jtagmkII.c +++ b/src/jtagmkII.c @@ -892,7 +892,7 @@ static void jtagmkII_set_devdescr(const PROGRAMMER *pgm, const AVRPART *p) { } } sendbuf.dd.ucCacheType = - p->prog_modes & (PM_PDI | PM_UPDI)? 0x02 /* ATxmega */: 0x00; + p->prog_modes & (PM_PDI | PM_UPDI)? 0x02: 0x00; pmsg_notice2("jtagmkII_set_devdescr(): " "Sending set device descriptor command: "); @@ -2193,6 +2193,9 @@ static int jtagmkII_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVR } else if ((p->prog_modes & (PM_PDI | PM_UPDI)) && mem_is_in_sigrow(mem)) { cmd[1] = MTYPE_PRODSIG; pmsg_notice2("in_sigrow addr 0x%05lx\n", addr); + } else if (mem_is_in_sigrow(mem)) { // Classic part + cmd[1] = addr&1? MTYPE_OSCCAL_BYTE: MTYPE_SIGN_JTAG; + addr /= 2; } else if (mem_is_io(mem) || mem_is_sram(mem)) { cmd[1] = MTYPE_FLASH; addr += avr_data_offset(p); From b23370a8c105e50f9fddc36a37e65b36e5666b59 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 12 Jul 2024 19:05:42 +0100 Subject: [PATCH 20/32] Enable sigrow sub-memory reading for avrftdi_jtag --- src/avrftdi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/avrftdi.c b/src/avrftdi.c index e34353004..1a00bf125 100644 --- a/src/avrftdi.c +++ b/src/avrftdi.c @@ -1501,7 +1501,8 @@ static int avrftdi_jtag_read_byte(const PROGRAMMER *pgm, const AVRPART *p, avrftdi_jtag_dr_out(pgm, 0x3600, 15); *value = avrftdi_jtag_dr_inout(pgm, 0x3700, 15) & 0xff; - } else if (mem_is_sigrow(m)) { + } else if (mem_is_in_sigrow(m)) { + addr += avr_sigrow_offset(p, m, addr); avrftdi_jtag_ir_out(pgm, JTAG_IR_PROG_COMMANDS); avrftdi_jtag_dr_out(pgm, 0x2300 | JTAG_DR_PROG_SIGCAL_READ, 15); avrftdi_jtag_dr_out(pgm, 0x0300 | (addr/2 & 0xff), 15); From 6f92e188fd25e4baab7a4ce82fc7aadf25fd94a9 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 12 Jul 2024 19:06:23 +0100 Subject: [PATCH 21/32] Enable sigrow sub-memory reading for butterfly --- src/butterfly.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/butterfly.c b/src/butterfly.c index a645e5401..1337faec3 100644 --- a/src/butterfly.c +++ b/src/butterfly.c @@ -491,7 +491,9 @@ static int butterfly_read_byte_flash(const PROGRAMMER *pgm, const AVRPART *p, co unsigned long addr, unsigned char * value) { int ext_addr = m->op[AVR_OP_LOAD_EXT_ADDR] != NULL; - char mtype = mem_is_flash(m)? 'F': mem_is_sigrow(m)? 'P': mem_is_userrow(m)? 'U': '?'; + char mtype = mem_is_flash(m)? 'F': mem_is_in_sigrow(m)? 'P': mem_is_userrow(m)? 'U': '?'; + + addr += avr_sigrow_offset(p, m, addr); if(mtype == '?') { pmsg_error("cannot read memory %s\n", m->desc); @@ -533,7 +535,7 @@ static int butterfly_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AV { char cmd; - if (mem_is_flash(m) || mem_is_sigrow(m) || mem_is_userrow(m)) { + if (mem_is_flash(m) || mem_is_in_sigrow(m) || mem_is_userrow(m)) { return butterfly_read_byte_flash(pgm, p, m, addr, value); } From 6ca23bd3c7818ac4bf2fa2fffc51ed81157de9ca Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 12 Jul 2024 19:52:13 +0100 Subject: [PATCH 22/32] Utilise PM_Classic in code --- src/jtag3.c | 4 ++-- src/jtagmkII.c | 12 ++++++------ src/stk500.c | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/jtag3.c b/src/jtag3.c index c2976ae0b..854ccc704 100644 --- a/src/jtag3.c +++ b/src/jtag3.c @@ -1450,7 +1450,7 @@ static void jtag3_disable(const PROGRAMMER *pgm) { static void jtag3_enable(PROGRAMMER *pgm, const AVRPART *p) { // Page erase only useful for classic parts with usersig mem or AVR8X/XMEGAs - if(!(p->prog_modes & (PM_PDI | PM_UPDI))) + if(p->prog_modes & PM_Classic) if(!avr_locate_usersig(p)) pgm->page_erase = NULL; } @@ -1865,7 +1865,7 @@ static int jtag3_page_erase(const PROGRAMMER *pgm, const AVRPART *p, const AVRME pmsg_notice2("jtag3_page_erase(.., %s, 0x%x)\n", m->desc, addr); - if(!(p->prog_modes & (PM_PDI | PM_UPDI)) && !mem_is_userrow(m)) { + if((p->prog_modes & PM_Classic) && !mem_is_userrow(m)) { pmsg_error("page erase only available for AVR8X/XMEGAs or classic-part usersig mem\n"); return -1; } diff --git a/src/jtagmkII.c b/src/jtagmkII.c index 4cf13f46f..be97b147b 100644 --- a/src/jtagmkII.c +++ b/src/jtagmkII.c @@ -832,7 +832,7 @@ static int jtagmkII_chip_erase(const PROGRAMMER *pgm, const AVRPART *p) { return -1; } - if (!(p->prog_modes & (PM_PDI | PM_UPDI))) + if (p->prog_modes & PM_Classic) pgm->initialize(pgm, p); PDATA(pgm)->recently_written = 1; @@ -1292,7 +1292,7 @@ static int jtagmkII_initialize(const PROGRAMMER *pgm, const AVRPART *p) { return -1; } - if ((pgm->flag & PGM_FL_IS_JTAG) && !(p->prog_modes & (PM_PDI | PM_UPDI))) { + if ((pgm->flag & PGM_FL_IS_JTAG) && (p->prog_modes & PM_Classic)) { int ocden = 0; if(avr_get_config_value(pgm, p, "ocden", &ocden) == 0 && ocden) // ocden == 1 means disabled pmsg_warning("OCDEN fuse not programmed, single-byte EEPROM updates not possible\n"); @@ -1323,7 +1323,7 @@ static void jtagmkII_disable(const PROGRAMMER *pgm) { static void jtagmkII_enable(PROGRAMMER *pgm, const AVRPART *p) { // Page erase only useful for classic parts with usersig mem or AVR8X/XMEGAs - if(!(p->prog_modes & (PM_PDI | PM_UPDI))) + if(p->prog_modes & PM_Classic) if(!avr_locate_usersig(p)) pgm->page_erase = NULL; @@ -1796,7 +1796,7 @@ static int jtagmkII_page_erase(const PROGRAMMER *pgm, const AVRPART *p, const AV pmsg_notice2("jtagmkII_page_erase(.., %s, 0x%x)\n", m->desc, addr); - if (!(p->prog_modes & (PM_PDI | PM_UPDI)) && !mem_is_userrow(m)) { + if ((p->prog_modes & PM_Classic) && !mem_is_userrow(m)) { pmsg_error("page erase only available for AVR8X/XMEGAs or classic-part usersig mem\n"); return -1; } @@ -2139,7 +2139,7 @@ static int jtagmkII_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVR } } else if(mem_is_a_fuse(mem) || mem_is_fuses(mem)) { cmd[1] = MTYPE_FUSE_BITS; - if(!(p->prog_modes & (PM_PDI | PM_UPDI)) && mem_is_a_fuse(mem)) + if((p->prog_modes & PM_Classic) && mem_is_a_fuse(mem)) addr = mem_fuse_offset(mem); if (pgm->flag & PGM_FL_IS_DW) unsupp = 1; @@ -2311,7 +2311,7 @@ static int jtagmkII_write_byte(const PROGRAMMER *pgm, const AVRPART *p, const AV PDATA(pgm)->eeprom_pageaddr = (unsigned long)-1L; } else if (mem_is_a_fuse(mem) || mem_is_fuses(mem)) { cmd[1] = MTYPE_FUSE_BITS; - if(!(p->prog_modes & (PM_PDI | PM_UPDI)) && mem_is_a_fuse(mem)) + if((p->prog_modes & PM_Classic) && mem_is_a_fuse(mem)) addr = mem_fuse_offset(mem); if (pgm->flag & PGM_FL_IS_DW) unsupp = 1; diff --git a/src/stk500.c b/src/stk500.c index fa4dcb386..d3a4b0b6e 100644 --- a/src/stk500.c +++ b/src/stk500.c @@ -1006,9 +1006,9 @@ static int set_memchr_a_div(const PROGRAMMER *pgm, const AVRPART *p, const AVRME if(mem_is_eeprom(m)) { *memchrp = 'E'; - // Word addr for bootloaders or Arduino as ISP if part is a "classic" part, byte addr otherwise + // Word addr for bootloaders or Arduino as ISP if part is a classic part; byte addr otherwise *a_divp = ((pgm->prog_modes & PM_SPM) || str_caseeq(pgmid, "arduino_as_isp")) \ - && !(p->prog_modes & (PM_UPDI | PM_PDI))? 2: 1; + && (p->prog_modes & PM_Classic)? 2: 1; return 0; } From 71029c515a14128b64f7e7983bb3ade8164914b5 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sat, 13 Jul 2024 14:30:22 +0100 Subject: [PATCH 23/32] Fix write delays for some classic parts Compared the T WD_FUSE etc values in the data sheets for m169, m169a, m169p, m169pa, m3290a, m3290p, m3290pa, m329a, m329p, m329pa, m6490a, m6490p, m649a, m649p and m8535. --- src/avrdude.conf.in | 85 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 71 insertions(+), 14 deletions(-) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index f874d40b5..623462ed9 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -7098,8 +7098,8 @@ part # m169 memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 2000; - max_write_delay = 2000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; @@ -7107,8 +7107,8 @@ part # m169 memory "hfuse" size = 1; initval = 0x99; - min_write_delay = 2000; - max_write_delay = 2000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -7117,8 +7117,8 @@ part # m169 size = 1; initval = 0xff; bitmask = 0x0f; - min_write_delay = 2000; - max_write_delay = 2000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; ; @@ -7127,8 +7127,8 @@ part # m169 size = 1; initval = 0xff; bitmask = 0x3f; - min_write_delay = 2000; - max_write_delay = 2000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; ; @@ -7174,6 +7174,8 @@ part parent "m169" # m169a resetdelay = 15; memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; readback = 0x00 0x00; ; @@ -7221,6 +7223,8 @@ part parent "m169" # m169p resetdelay = 15; memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; readback = 0x00 0x00; ; @@ -7263,6 +7267,8 @@ part parent "m169" # m169pa resetdelay = 15; memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; readback = 0x00 0x00; ; @@ -7442,6 +7448,11 @@ part parent "m329" # m329a "ATmega329A-MN: QFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATmega329A-MU: VQFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 122; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ @@ -7468,6 +7479,11 @@ part parent "m329" # m329p "ATmega329PV-10MUR: VQFN64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 123; signature = 0x1e 0x95 0x0b; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ @@ -7486,6 +7502,11 @@ part parent "m329" # m329pa "ATmega329PA-MUR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; mcuid = 124; signature = 0x1e 0x95 0x0b; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ @@ -7520,6 +7541,11 @@ part parent "m329" # m3290a mcuid = 151; n_interrupts = 25; signature = 0x1e 0x95 0x04; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ @@ -7538,6 +7564,11 @@ part parent "m329" # m3290p mcuid = 152; n_interrupts = 25; signature = 0x1e 0x95 0x0c; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ @@ -7554,6 +7585,11 @@ part parent "m329" # m3290pa mcuid = 153; n_interrupts = 25; signature = 0x1e 0x95 0x0c; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ @@ -7723,6 +7759,11 @@ part parent "m649" # m649a "ATmega649A-MU: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", "ATmega649A-MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; mcuid = 136; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ @@ -7739,6 +7780,11 @@ part parent "m649" # m649p "ATmega649P-MUR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; mcuid = 137; signature = 0x1e 0x96 0x0b; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ @@ -7773,6 +7819,11 @@ part parent "m649" # m6490a mcuid = 158; n_interrupts = 25; signature = 0x1e 0x96 0x04; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ @@ -7789,6 +7840,11 @@ part parent "m649" # m6490p mcuid = 159; n_interrupts = 25; signature = 0x1e 0x96 0x0c; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ @@ -8470,8 +8526,8 @@ part # m8535 memory "lfuse" size = 1; initval = 0xe1; - min_write_delay = 2000; - max_write_delay = 2000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; @@ -8479,8 +8535,8 @@ part # m8535 memory "hfuse" size = 1; initval = 0xd9; - min_write_delay = 2000; - max_write_delay = 2000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -8489,8 +8545,8 @@ part # m8535 size = 1; initval = 0xff; bitmask = 0x3f; - min_write_delay = 2000; - max_write_delay = 2000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; ; @@ -14699,6 +14755,7 @@ part parent "t44" # t44a "ATtiny44A-SSUR: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; mcuid = XVII + IV; # 21; + ; #------------------------------------------------------------ From 8f7160799af658215b3ba976ba5c130652f21e1e Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sat, 13 Jul 2024 20:17:01 +0100 Subject: [PATCH 24/32] Correct comments --- src/avrpart.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/avrpart.c b/src/avrpart.c index 38f38a97d..f27ae6f07 100644 --- a/src/avrpart.c +++ b/src/avrpart.c @@ -1150,7 +1150,7 @@ void walk_avrparts(LISTID avrparts, walk_avrparts_cb cb, void *cookie) } /* - * Compare function to sort the list of programmers + * Compare function to sort a list of parts */ static int sort_avrparts_compare(const AVRPART *p1, const AVRPART *p2) { if(p1 == NULL || p1->desc == NULL || p2 == NULL || p2->desc == NULL) @@ -1160,7 +1160,7 @@ static int sort_avrparts_compare(const AVRPART *p1, const AVRPART *p2) { } /* - * Sort the list of programmers given as "programmers" + * Sort the list avrparts of parts */ void sort_avrparts(LISTID avrparts) { From 90a4a54fd3e32e7e5ade5eefa0bffadcf29fc41a Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sun, 14 Jul 2024 00:41:14 +0100 Subject: [PATCH 25/32] Map x-bits to 0 for SPI opcode comparison --- src/developer_opts.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/developer_opts.c b/src/developer_opts.c index 63bec49d0..c47b797a5 100644 --- a/src/developer_opts.c +++ b/src/developer_opts.c @@ -372,8 +372,15 @@ static int avrmem_deep_copy(AVRMEMdeep *d, const AVRMEM *m) { // Copy over the SPI operations themselves memset(d->ops, 0, sizeof d->ops); for(size_t i=0; iop[i]) + if(m->op[i]) { d->ops[i] = *m->op[i]; + for(int b=0; b<32; b++) { // Replace x with 0 as they are treated the same + if(d->ops[i].bit[b].type == AVR_CMDBIT_IGNORE) { + d->ops[i].bit[b].type = AVR_CMDBIT_VALUE; + d->ops[i].bit[b].value = 0; + } + } + } return 0; } From 7fbd963ea4efe2ca9cc4c6e67081f3537ce5e034 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sun, 14 Jul 2024 00:43:59 +0100 Subject: [PATCH 26/32] Rearrange classic parts and parenting in avrdude.conf Although, on the surface of it, every entry of a classic part has been changed, and some radically so by different parenting, there are only subtle changes in AVRDUDE's internal representation: - 15 parts that did not have an io memory entry now have one - Some ISP opcodes were replaced with equivalent ones (x maps to 0) This has been checked using the development options, particularly -p*/At, before and after the changes. The benefit of the new avrdude.conf is that every (non-TPI) classic part is now derived from a common .classic or .classic-nocal stub. This enables putting a common prodsig and sernum memory there. Generally, parenting off now only happens between related chips. All in all, more systematic. And it's some 10% smaller, too. --- src/avrdude.conf.in | 21224 +++++++++++++++++++----------------------- 1 file changed, 9338 insertions(+), 11886 deletions(-) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index 623462ed9..46531cc8e 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -3423,435 +3423,410 @@ serialadapter # pl2303 # #------------------------------------------------------------ -# ATtiny11 +# Common values for reduced core tinys (4/5/9/10/20/40) #------------------------------------------------------------ -# This is an HVSP-only device. - -part # t11 - desc = "ATtiny11"; - id = "t11"; - variants = - "ATtiny11: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny11-6PC: DIP8, Fmax=6 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", - "ATtiny11-6PI: DIP8, Fmax=6 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATtiny11-6PU: DIP8, Fmax=6 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATtiny11-6SC: SOIC8, Fmax=6 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", - "ATtiny11-6SI: SOIC8, Fmax=6 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATtiny11-6SU: SOIC8, Fmax=6 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATtiny11L-2PC: DIP8, Fmax=2 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny11L-2PI: DIP8, Fmax=2 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny11L-2SC: SOIC8, Fmax=2 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny11L-2SI: SOIC8, Fmax=2 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny11L-2SU: SOIC8, Fmax=2 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_HVSP; - mcuid = 8; - n_interrupts = 5; - stk500_devcode = 0x11; - chip_erase_delay = 20000; - signature = 0x1e 0x90 0x04; - serial = no; - timeout = 200; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - factory_fcpu = 1200000; - - memory "flash" - size = 1024; - delay = 3; - blocksize = 128; - readsize = 256; - ; +part # .reduced_core_tiny + desc = "Common values for reduced core tinys"; + id = ".reduced_core_tiny"; + prog_modes = PM_TPI; memory "fuse" size = 1; - initval = 0xf4; - bitmask = 0x1f; + page_size = 16; + initval = 0xff; + bitmask = 0x07; + offset = 0x3f40; + blocksize = 4; ; - memory "lock" + memory "lockbits" size = 1; + page_size = 16; initval = 0xff; - bitmask = 0x06; + bitmask = 0x03; + offset = 0x3f00; ; memory "signature" size = 3; + page_size = 16; + offset = 0x3fc0; ; memory "calibration" size = 1; - ; - - memory "io" - size = 64; + page_size = 16; + offset = 0x3f80; ; memory "sram" size = 32; - offset = 0x60; + offset = 0x40; ; ; #------------------------------------------------------------ -# ATtiny12 +# ATtiny4 #------------------------------------------------------------ -part # t12 - desc = "ATtiny12"; - id = "t12"; +part parent ".reduced_core_tiny" # t4 + desc = "ATtiny4"; + id = "t4"; variants = - "ATtiny12: N/A, Fmax=8 MHz, T=[N/A, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny12-8PU: PDIP8, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATtiny12-8SU: SOIC8, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATtiny12L-4PU: PDIP8, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny12L-4SU: SOIC8, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny12L-4SUR: SOIC8, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny12V-1SU: SOIC8, Fmax=1.2 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny12V-1SUR: SOIC8, Fmax=1.2 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_ISP | PM_HVSP; - mcuid = 9; - n_interrupts = 6; - stk500_devcode = 0x12; - avr910_devcode = 0x55; - chip_erase_delay = 20000; - signature = 0x1e 0x90 0x05; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - factory_fcpu = 1200000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 64; - min_write_delay = 9000; - max_write_delay = 20000; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 64; - readsize = 256; - read = "1010.0000--xxxx.xxxx--xxaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - ; + "ATtiny4-MAHR: UDFN8, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny4-TS8R: SOT23-6, Fmax=10 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny4-TSHR: SOT23-6, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 0; + n_interrupts = 10; + signature = 0x1e 0x8f 0x0a; + factory_fcpu = 1000000; memory "flash" - size = 1024; - min_write_delay = 4500; - max_write_delay = 20000; - readback = 0xff 0x00; - mode = 0x04; - delay = 10; + size = 512; + page_size = 16; + offset = 0x4000; blocksize = 128; - readsize = 256; - read_lo = "0010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - write_lo = "0100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; ; - memory "fuse" - size = 1; - initval = 0x52; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--xxxx.xxxx--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--101x.xxxx--xxxx.xxxx--iiii.iiii"; + memory "io" + size = 64; ; +; - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x06; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xoox"; - write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; - ; +#------------------------------------------------------------ +# ATtiny5 +#------------------------------------------------------------ - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--0000.00aa--oooo.oooo"; - ; +part parent "t4" # t5 + desc = "ATtiny5"; + id = "t5"; + variants = + "ATtiny5-MAHR: USON8, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny5-TS8R: SOT23-6, Fmax=10 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny5-TSHR: SOT23-6, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 1; + n_interrupts = 11; + signature = 0x1e 0x8f 0x09; +; - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; +#------------------------------------------------------------ +# ATtiny9 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" # t9 + desc = "ATtiny9"; + id = "t9"; + variants = + "ATtiny9-MAHR: DFN8, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny9-TS8R: SOT23-6, Fmax=10 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny9-TSHR: SOT23-6, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 2; + n_interrupts = 10; + signature = 0x1e 0x90 0x08; + factory_fcpu = 1000000; + + memory "flash" + size = 1024; + page_size = 16; + offset = 0x4000; + blocksize = 128; ; memory "io" size = 64; ; +; - memory "sram" - size = 32; - offset = 0x60; - ; +#------------------------------------------------------------ +# ATtiny10 +#------------------------------------------------------------ + +part parent "t9" # t10 + desc = "ATtiny10"; + id = "t10"; + variants = + "ATtiny10-MAHR: UDFN8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny10-TS8R: SOT23-6, Fmax=10 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny10-TSHR: SOT23-6, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 3; + n_interrupts = 11; + signature = 0x1e 0x90 0x03; ; #------------------------------------------------------------ -# ATtiny13 +# ATtiny20 #------------------------------------------------------------ -part # t13 - desc = "ATtiny13"; - id = "t13"; +part parent ".reduced_core_tiny" # t20 + desc = "ATtiny20"; + id = "t20"; variants = - "ATtiny13: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[N/A, N/A]", - "ATtiny13-20MMU: MLF10, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20MMUR: VDFN10, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20MUR: WQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20SQ: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20SQR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20SSQ: SOIC8N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20SSQR: SOIC8, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20SSU: SOIC8N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20SSUR: SOIC8N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13-20SUR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny13V-10MMU: MLF10, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13V-10MMUR: VDFN10, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13V-10MUR: WQFN20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13V-10PQ: PDIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13V-10PU: PDIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13V-10SSU: SOIC8N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13V-10SSUR: SOIC8N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13V-10SU: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13V-10SUR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; - mcuid = 10; - n_interrupts = 10; - stk500_devcode = 0x14; - chip_erase_delay = 4000; - signature = 0x1e 0x90 0x07; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, - 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - flash_instr = 0xb4, 0x0e, 0x1e; - eeprom_instr = - 0xbb, 0xfe, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x0e, 0xb4, 0x0e, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; - hventerstabdelay = 100; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - idr = 0x2e; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 0; - factory_fcpu = 1200000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 64; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - read = "1010.0000--000x.xxxx--xxaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--xxaa.aa00--xxxx.xxxx"; - ; + "ATtiny20-CCU: UFBGA15, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny20-CCUR: UFBGA15, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny20-MMH: VQFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny20-MMHR: VQFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny20-SSU: SOIC14, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny20-SSUR: SOIC14, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny20-UUR: WLCSP12, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny20-XU: TSSOP14, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny20-XUR: TSSOP14, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 4; + n_interrupts = 17; + signature = 0x1e 0x91 0x0f; + factory_fcpu = 1000000; memory "flash" - paged = yes; - size = 1024; - page_size = 32; - num_pages = 32; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 32; - readsize = 256; - read_lo = "0010.0000--0000.000a--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.000a--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxx.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxx.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.000a--aaaa.xxxx--xxxx.xxxx"; + size = 2048; + page_size = 16; + n_word_writes = 2; + offset = 0x4000; + blocksize = 128; ; - memory "lfuse" - size = 1; - initval = 0x6a; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + memory "fuse" + bitmask = 0x77; + n_word_writes = 2; ; - memory "hfuse" - size = 1; - initval = 0xff; - bitmask = 0x1f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + memory "io" + size = 64; ; - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + memory "sram" + size = 128; ; +; - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; +#------------------------------------------------------------ +# ATtiny40 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" # t40 + desc = "ATtiny40"; + id = "t40"; + variants = + "ATtiny40-MMH: VQFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny40-MMHR: VQFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny40-SU: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny40-SUR: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny40-XU: TSSOP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny40-XUR: TSSOP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 5; + n_interrupts = 18; + signature = 0x1e 0x92 0x0e; + factory_fcpu = 1000000; + + memory "flash" + size = 4096; + page_size = 64; + n_word_writes = 4; + offset = 0x4000; + blocksize = 128; ; - memory "calibration" - size = 2; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; + memory "fuse" + bitmask = 0x77; + n_word_writes = 4; ; memory "io" size = 64; - offset = 0x20; ; memory "sram" - size = 64; - offset = 0x60; + size = 256; ; ; #------------------------------------------------------------ -# ATtiny13A +# ATtiny102 #------------------------------------------------------------ -part parent "t13" # t13a - desc = "ATtiny13A"; - id = "t13a"; +part parent ".reduced_core_tiny" # t102 + desc = "ATtiny102"; + id = "t102"; variants = - "ATtiny13A-MMF: VDFN10, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-MMFR: VDFN10, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-MMU: MLF10, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-MMUR: MLF10, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-MU: MLF20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-MUR: WQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-PU: PDIP8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SF: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SFR: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SN: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SNR: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SS7: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SS7R: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SSH: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SSHR: SOIC8N, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SSU: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SSUR: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SU: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny13A-SUR: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 11; + "ATtiny102-M7R: UDFN8, Fmax=12 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny102-M8R: UDFN8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny102-SSFR: SOIC8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny102-SSNR: SOIC8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny102F-M7R: UDFN8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny102F-M8R: UDFN8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny102F-SSFR: SOIC8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny102F-SSNR: SOIC8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 6; + n_interrupts = 16; + signature = 0x1e 0x90 0x0c; + factory_fcpu = 1000000; + + memory "flash" + size = 1024; + page_size = 16; + offset = 0x4000; + blocksize = 128; + ; + + memory "fuse" + bitmask = 0x0f; + ; + + memory "prodsig" + size = 16; + page_size = 16; + offset = 0x3fc0; + ; + + memory "sigrow" + alias "prodsig"; + ; + + memory "sernum" + size = 10; + offset = 0x3fc6; # Sub-region of prodsig + ; + + memory "io" + size = 64; + ; ; #------------------------------------------------------------ -# ATtiny15 +# ATtiny104 #------------------------------------------------------------ -part # t15 - desc = "ATtiny15"; - id = "t15"; +part parent ".reduced_core_tiny" # t104 + desc = "ATtiny104"; + id = "t104"; variants = - "ATtiny15: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny15L-1PC: DIP8, Fmax=1.6 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny15L-1PI: DIP8, Fmax=1.6 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny15L-1PU: DIP8, Fmax=1.6 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny15L-1SC: SOIC8, Fmax=1.6 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny15L-1SI: SOIC8, Fmax=1.6 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny15L-1SU: SOIC8, Fmax=1.6 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_ISP | PM_HVSP; - mcuid = 12; - n_interrupts = 9; - stk500_devcode = 0x13; - avr910_devcode = 0x56; - chip_erase_delay = 8200; - signature = 0x1e 0x90 0x06; + "ATtiny104-SSFR: SOIC14, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny104-SSNR: SOIC14, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny104F-SSFR: SOIC14, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny104F-SSNR: SOIC14, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 7; + n_interrupts = 16; + signature = 0x1e 0x90 0x0b; + factory_fcpu = 1000000; + + memory "flash" + size = 1024; + page_size = 16; + offset = 0x4000; + blocksize = 128; + ; + + memory "fuse" + bitmask = 0x0f; + ; + + memory "prodsig" + size = 16; + page_size = 16; + offset = 0x3fc0; + ; + + memory "sigrow" + alias "prodsig"; + ; + + memory "sernum" + size = 10; + offset = 0x3fc6; # Sub-region of prodsig + ; + + memory "io" + size = 64; + ; +; + +#------------------------------------------------------------ +# Common values for classic parts without calibration mem +#------------------------------------------------------------ + +# Classic here means non-TPI classic part + +part # .classic-nocal + desc = "Common values for classic parts without calibration mem"; + id = ".classic-nocal"; + prog_modes = PM_SPM | PM_ISP; + + memory "lock" + size = 1; + initval = 0xff; + read = "0101.1000--0000.0000--0000.0000--oooo.oooo"; + write = "1010.1100--1110.0000--0000.0000--11ii.iiii"; + ; + + memory "signature" + size = 3; + read = "0011.0000--0000.0000--0000.00aa--oooo.oooo"; + ; + + memory "io" + size = 224; + offset = 0x20; + ; + + memory "sram" + size = 2048; + offset = 0x100; + ; +; + +#------------------------------------------------------------ +# Common values for classic parts +#------------------------------------------------------------ + +part parent ".classic-nocal" # .classic + desc = "Common values for classic parts"; + id = ".classic"; + factory_fcpu = 1000000; + chip_erase = "1010.1100--1000.0000--0000.0000--0000.0000"; + pgm_enable = "1010.1100--0101.0011--0000.0000--0000.0000"; + + memory "calibration" + size = 1; + read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; + ; +; + +#------------------------------------------------------------ +# ATtiny11 +#------------------------------------------------------------ + +# This is an HVSP-only device. + +part parent ".classic" # t11 + desc = "ATtiny11"; + id = "t11"; + variants = + "ATtiny11: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny11-6PC: DIP8, Fmax=6 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", + "ATtiny11-6PI: DIP8, Fmax=6 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATtiny11-6PU: DIP8, Fmax=6 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATtiny11-6SC: SOIC8, Fmax=6 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", + "ATtiny11-6SI: SOIC8, Fmax=6 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATtiny11-6SU: SOIC8, Fmax=6 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATtiny11L-2PC: DIP8, Fmax=2 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny11L-2PI: DIP8, Fmax=2 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny11L-2SC: SOIC8, Fmax=2 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny11L-2SI: SOIC8, Fmax=2 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny11L-2SU: SOIC8, Fmax=2 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_HVSP; + mcuid = 8; + n_interrupts = 5; + stk500_devcode = 0x11; + chip_erase_delay = 20000; + signature = 0x1e 0x90 0x04; + serial = no; timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; hvsp_controlstack = 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x00, 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, 0x78, 0x00, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; hventerstabdelay = 100; - latchcycles = 16; + latchcycles = 1; togglevtg = 1; poweroffdelay = 25; resetdelayms = 1; @@ -3861,71 +3836,40 @@ part # t15 programfusepolltimeout = 25; programlockpolltimeout = 25; synchcycles = 6; - hvspcmdexedelay = 5; - factory_fcpu = 1600000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 64; - min_write_delay = 8200; - max_write_delay = 8200; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 64; - readsize = 256; - read = "1010.0000--xxxx.xxxx--xxaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - ; + factory_fcpu = 1200000; + chip_erase = NULL; + pgm_enable = NULL; memory "flash" size = 1024; - min_write_delay = 4100; - max_write_delay = 4100; - readback = 0xff 0x00; - mode = 0x04; - delay = 10; + delay = 3; blocksize = 128; readsize = 256; - read_lo = "0010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - write_lo = "0100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; ; memory "fuse" size = 1; - initval = 0x5c; - bitmask = 0xf3; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--xxxx.xxxx--xxxx.xxxx--oooo.xxoo"; - write = "1010.1100--101x.xxxx--xxxx.xxxx--iiii.11ii"; + initval = 0xf4; + bitmask = 0x1f; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x06; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xoox"; - write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; + read = NULL; + write = NULL; ; memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--0000.00aa--oooo.oooo"; + read = NULL; ; memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; + read = NULL; ; memory "io" size = 64; + offset = 0x0; ; memory "sram" @@ -3935,178 +3879,143 @@ part # t15 ; #------------------------------------------------------------ -# AT89S51 +# ATtiny12 #------------------------------------------------------------ -# Nonstandard part -# - Tested with -c avrisp -# - USBASP programmers may require different firmware - -part # 89S51 - desc = "AT89S51"; - id = "89S51"; +part parent "t11" # t12 + desc = "ATtiny12"; + id = "t12"; variants = - "AT89S51: N/A, Fmax=33 MHz, T=[N/A, N/A], Vcc=[4 V, 5.5 V]", - "AT89S51-24AU: TQFP44, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "AT89S51-24JU: PLCC44, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "AT89S51-24PU: PDIP40, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]"; - prog_modes = PM_ISP | PM_HVPP; - mcuid = 372; - stk500_devcode = 0xe0; - chip_erase_delay = 250000; - signature = 0x1e 0x51 0x06; - timeout = 200; + "ATtiny12: N/A, Fmax=8 MHz, T=[N/A, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny12-8PU: PDIP8, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATtiny12-8SU: SOIC8, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATtiny12L-4PU: PDIP8, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny12L-4SU: SOIC8, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny12L-4SUR: SOIC8, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny12V-1SU: SOIC8, Fmax=1.2 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny12V-1SUR: SOIC8, Fmax=1.2 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_ISP | PM_HVSP; + mcuid = 9; + n_interrupts = 6; + stk500_devcode = 0x12; + avr910_devcode = 0x55; + signature = 0x1e 0x90 0x05; + serial = yes; stabdelay = 100; cmdexedelay = 25; synchloops = 32; - pollindex = 4; - pollvalue = 0x69; + pollindex = 3; + pollvalue = 0x53; predelay = 1; postdelay = 1; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 1; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + memory "eeprom" + size = 64; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0xff 0xff; + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + read = "1010.0000--xxxx.xxxx--xxaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + ; + memory "flash" - size = 4096; min_write_delay = 4500; - max_write_delay = 4500; - readback = 0xff 0xff; - mode = 0x02; + max_write_delay = 20000; + readback = 0xff 0x00; + mode = 0x04; delay = 10; - blocksize = 256; - read = "0010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; - write = "0100.0000--xxxa.aaaa--aaaa.aaaa--iiii.iiii"; - # Nonstandard page mode is available but not implemented + read_lo = "0010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + write_lo = "0100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + write_hi = "0100.1000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + ; + + memory "fuse" + initval = 0x52; + bitmask = -1; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--xxxx.xxxx--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--101x.xxxx--xxxx.xxxx--iiii.iiii"; ; memory "lock" - size = 1; - read = "0010.0100--xxxx.xxxx--xxxx.xxxx--xxxo.ooxx"; - # Nonstandard write: expect verification errors - # See datasheet Page 20, Note 1 https://ww1.microchip.com/downloads/en/DeviceDoc/doc2487.pdf - # Activate lock mode 0 through chip erase: avrdude -e - # Activate lock mode 1: avrdude -e -V -U lock:w:1:m - # Activate lock mode 2: avrdude -e -V -U lock:w:1:m -U lock:w:2:m - # Activate lock mode 3: avrdude -e -V -U lock:w:1:m -U lock:w:2:m -U lock:w:3:m - write = "1010.1100--1110.00ii--xxxx.xxxx--xxxx.xxxx"; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xoox"; + write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; ; memory "signature" - size = 3; - read = "0 0 1 0 1 0 0 0 x x x x x x a1 a0 x x x x x x x 0 o o o o o o o o"; + read = "0011.0000--xxxx.xxxx--0000.00aa--oooo.oooo"; ; -; - -#------------------------------------------------------------ -# AT89S52 -#------------------------------------------------------------ - -part parent "89S51" # 89S52 - desc = "AT89S52"; - id = "89S52"; - variants = - "AT89S52: N/A, Fmax=33 MHz, T=[N/A, N/A], Vcc=[4 V, 5.5 V]", - "AT89S52-24AU: TQFP44, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "AT89S52-24AUR: TQFP44, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "AT89S52-24JU: PLCC44, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "AT89S52-24PU: PDIP40, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]"; - mcuid = 373; - stk500_devcode = 0xe1; - signature = 0x1e 0x52 0x06; - memory "flash" - size = 8192; + memory "calibration" + read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; ; ; #------------------------------------------------------------ -# AT90S1200 +# ATtiny15 #------------------------------------------------------------ -part # 1200 - desc = "AT90S1200"; - id = "1200"; +part parent "t11" # t15 + desc = "ATtiny15"; + id = "t15"; variants = - "AT90S1200-12PC: DIP20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S1200-12PI: DIP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S1200-12SC: SOIC20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S1200-12SI: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S1200-12YC: SSOP20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S1200-12YI: SSOP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S1200-4PC: DIP20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S1200-4PI: DIP20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", - "AT90S1200-4SC: SOIC20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S1200-4SI: SOIC20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", - "AT90S1200-4YC: SSOP20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S1200-4YI: SSOP20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", - "AT90S1200A-12PC: DIP20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S1200A-12PI: DIP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S1200A-12SC: SOIC20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S1200A-12SI: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S1200A-12YC: SSOP20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S1200A-12YI: SSOP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S1200A-4PC: DIP20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S1200A-4PI: DIP20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", - "AT90S1200A-4SC: SOIC20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S1200A-4SI: SOIC20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", - "AT90S1200A-4YC: SSOP20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S1200A-4YI: SSOP20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 183; - n_interrupts = 4; - stk500_devcode = 0x33; - avr910_devcode = 0x13; - chip_erase_delay = 20000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x90 0x01; - is_at90s1200 = yes; - timeout = 200; + "ATtiny15: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny15L-1PC: DIP8, Fmax=1.6 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny15L-1PI: DIP8, Fmax=1.6 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny15L-1PU: DIP8, Fmax=1.6 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny15L-1SC: SOIC8, Fmax=1.6 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny15L-1SI: SOIC8, Fmax=1.6 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny15L-1SU: SOIC8, Fmax=1.6 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_ISP | PM_HVSP; + mcuid = 12; + n_interrupts = 9; + stk500_devcode = 0x13; + avr910_devcode = 0x56; + chip_erase_delay = 8200; + signature = 0x1e 0x90 0x06; + serial = yes; stabdelay = 100; cmdexedelay = 25; - synchloops = 1; - pollvalue = 0xff; + synchloops = 32; + pollindex = 3; + pollvalue = 0x53; predelay = 1; postdelay = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; + latchcycles = 16; + hvspcmdexedelay = 5; + factory_fcpu = 1600000; + chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 64; - min_write_delay = 4000; - max_write_delay = 9000; - readback = 0x00 0xff; + min_write_delay = 8200; + max_write_delay = 8200; + readback = 0xff 0xff; mode = 0x04; delay = 20; - blocksize = 32; + blocksize = 64; readsize = 256; read = "1010.0000--xxxx.xxxx--xxaa.aaaa--oooo.oooo"; write = "1100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; ; memory "flash" - size = 1024; - min_write_delay = 4000; - max_write_delay = 9000; - readback = 0xff 0xff; - mode = 0x02; - delay = 15; - blocksize = 128; - readsize = 256; + min_write_delay = 4100; + max_write_delay = 4100; + readback = 0xff 0x00; + mode = 0x04; + delay = 10; read_lo = "0010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; read_hi = "0010.1000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; write_lo = "0100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; @@ -4114,58 +4023,48 @@ part # 1200 ; memory "fuse" - size = 1; - initval = 0xdf; - bitmask = 0x21; + initval = 0x5c; + bitmask = 0xf3; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--xxxx.xxxx--xxxx.xxxx--oooo.xxoo"; + write = "1010.1100--101x.xxxx--xxxx.xxxx--iiii.11ii"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x06; min_write_delay = 9000; - max_write_delay = 20000; + max_write_delay = 9000; + read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xoox"; write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; ; memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + read = "0011.0000--xxxx.xxxx--0000.00aa--oooo.oooo"; ; - memory "sram" - size = 32; - offset = 0x60; + memory "calibration" + read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; ; ; #------------------------------------------------------------ -# AT90S4414 +# ATtiny22 #------------------------------------------------------------ -part # 4414 - desc = "AT90S4414"; - id = "4414"; +part parent ".classic-nocal" # t22 + desc = "ATtiny22"; + id = "t22"; variants = - "AT90S4414-4AC: TQFP44, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S4414-4AI: TQFP44, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", - "AT90S4414-4JC: LCC44, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S4414-4JI: LCC44, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", - "AT90S4414-4PC: DIP40, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S4414-4PI: DIP40, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", - "AT90S4414-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S4414-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S4414-8JC: LCC44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S4414-8JI: LCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S4414-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S4414-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 190; - n_interrupts = 13; - stk500_devcode = 0x50; - avr910_devcode = 0x28; - chip_erase_delay = 20000; - signature = 0x1e 0x92 0x01; + "ATtiny22L-1PC: DIP8, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "ATtiny22L-1PI: DIP8, Fmax=1 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", + "ATtiny22L-1SC: SOIC8, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "ATtiny22L-1SI: SOIC8, Fmax=1 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP; + mcuid = 13; + n_interrupts = 3; + stk500_devcode = 0x20; + chip_erase_delay = 18000; + signature = 0x1e 0x91 0x06; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -4174,97 +4073,118 @@ part # 4414 pollvalue = 0x53; predelay = 1; postdelay = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hvsp_controlstack = + 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; hventerstabdelay = 100; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 1; + latchcycles = 1; + poweroffdelay = 25; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + synchcycles = 6; factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; + chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 256; + size = 128; min_write_delay = 9000; max_write_delay = 20000; - readback = 0x80 0x7f; + readback = 0x00 0xff; mode = 0x04; delay = 12; blocksize = 64; readsize = 256; - read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--0000.0000--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.0000--xaaa.aaaa--iiii.iiii"; ; memory "flash" - size = 4096; + size = 2048; min_write_delay = 9000; max_write_delay = 20000; - readback = 0x7f 0x7f; + readback = 0xff 0xff; mode = 0x04; delay = 12; - blocksize = 64; - readsize = 256; - read_lo = "0010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - write_lo = "0100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + blocksize = 128; + readsize = 128; + read_lo = "0010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; + write_lo = "0100.0000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; + write_hi = "0100.1000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; ; memory "fuse" size = 1; - initval = 0xdf; bitmask = 0x21; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxox.xxxo"; + write = "1010.1100--1011.111i--xxxx.xxxx--xxxx.xxxx"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x06; min_write_delay = 9000; - max_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x x x x x x x x x o1 o2 x x x x x x"; write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "io" + size = 64; ; memory "sram" - size = 256; + size = 128; offset = 0x60; ; ; #------------------------------------------------------------ -# AT90S2313 +# ATtiny13 #------------------------------------------------------------ -part # 2313 - desc = "AT90S2313"; - id = "2313"; +part parent ".classic" # t13 + desc = "ATtiny13"; + id = "t13"; variants = - "AT90S2313-10PC: DIP20, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S2313-10PI: DIP20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S2313-10SC: SOIC20, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S2313-10SI: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S2313-4PC: DIP20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S2313-4PI: DIP20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", - "AT90S2313-4SC: SOIC20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "AT90S2313-4SI: SOIC20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 186; - n_interrupts = 11; - stk500_devcode = 0x40; - avr910_devcode = 0x20; - chip_erase_delay = 20000; - signature = 0x1e 0x91 0x01; + "ATtiny13: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[N/A, N/A]", + "ATtiny13-20MMU: MLF10, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20MMUR: VDFN10, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20MUR: WQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20SQ: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20SQR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20SSQ: SOIC8N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20SSQR: SOIC8, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20SSU: SOIC8N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20SSUR: SOIC8N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13-20SUR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny13V-10MMU: MLF10, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13V-10MMUR: VDFN10, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13V-10MUR: WQFN20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13V-10PQ: PDIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13V-10PU: PDIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13V-10SSU: SOIC8N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13V-10SSUR: SOIC8N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13V-10SU: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13V-10SUR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; + mcuid = 10; + n_interrupts = 10; + stk500_devcode = 0x14; + chip_erase_delay = 4000; + signature = 0x1e 0x90 0x07; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -4273,473 +4193,480 @@ part # 2313 pollvalue = 0x53; predelay = 1; postdelay = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + pollmethod = 1; + hvsp_controlstack = + 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, + 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + flash_instr = 0xb4, 0x0e, 0x1e; + eeprom_instr = + 0xbb, 0xfe, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x0e, 0xb4, 0x0e, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; hventerstabdelay = 100; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + synchcycles = 6; + idr = 0x2e; + spmcr = 0x57; + eecr = 0x3c; + ocdrev = 0; + factory_fcpu = 1200000; memory "eeprom" - size = 128; + size = 64; + page_size = 4; min_write_delay = 4000; - max_write_delay = 9000; - readback = 0x80 0x7f; - mode = 0x04; - delay = 12; - blocksize = 64; + max_write_delay = 4000; + mode = 0x41; + delay = 5; + blocksize = 4; readsize = 256; - read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + read = "1010.0000--000x.xxxx--xxaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxx--xxaa.aa00--xxxx.xxxx"; ; memory "flash" - size = 2048; - min_write_delay = 4000; - max_write_delay = 9000; - readback = 0x7f 0x7f; - mode = 0x04; - delay = 12; - blocksize = 128; + paged = yes; + size = 1024; + page_size = 32; + num_pages = 32; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 10; + blocksize = 32; readsize = 256; - read_lo = "0010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; - write_lo = "0100.0000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; + read_lo = "0010.0000--0000.000a--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.000a--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxx.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxx.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.000a--aaaa.xxxx--xxxx.xxxx"; ; - memory "fuse" + memory "lfuse" size = 1; - initval = 0xdf; - bitmask = 0x21; + initval = 0x6a; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; - memory "lock" + memory "hfuse" size = 1; initval = 0xff; - bitmask = 0x06; - min_write_delay = 9000; - max_write_delay = 9000; - write = "1010.1100--111x.xiix--xxxx.xxxx--xxxx.xxxx"; + bitmask = 0x1f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "lock" + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 2; + read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; + ; + + memory "io" + size = 64; ; memory "sram" - size = 128; + size = 64; offset = 0x60; ; ; #------------------------------------------------------------ -# AT90S2333 +# ATtiny13A #------------------------------------------------------------ -part # 2333 -##### WARNING: No XML file for device 'AT90S2333'! ##### - desc = "AT90S2333"; - id = "2333"; +part parent "t13" # t13a + desc = "ATtiny13A"; + id = "t13a"; variants = - "AT90S2333-8AC: TQFP32, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S2333-8AI: TQFP32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S2333-8PC: DIP28, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S2333-8PI: DIP28, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 188; - n_interrupts = 14; - stk500_devcode = 0x42; - avr910_devcode = 0x34; - chip_erase_delay = 20000; - signature = 0x1e 0x91 0x05; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + "ATtiny13A-MMF: VDFN10, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-MMFR: VDFN10, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-MMU: MLF10, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-MMUR: MLF10, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-MU: MLF20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-MUR: WQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-PU: PDIP8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SF: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SFR: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SN: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SNR: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SS7: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SS7R: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SSH: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SSHR: SOIC8N, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SSU: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SSUR: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SU: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny13A-SUR: SOIC8, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 11; +; - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 20000; - readback = 0x00 0xff; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - ; +#------------------------------------------------------------ +# ATtiny25 +#------------------------------------------------------------ - memory "flash" - size = 2048; - min_write_delay = 9000; - max_write_delay = 20000; - readback = 0xff 0xff; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - read_lo = "0010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; - write_lo = "0100.0000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; +part parent "t13" # t25 + desc = "ATtiny25"; + id = "t25"; + variants = + "ATtiny25: N/A, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[N/A, N/A]", + "ATtiny25-15ST: SOIC8, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20MF: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20MFR: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20MUR: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20SN: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20SNR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20SSH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20SSHR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20SSN: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20SSNR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20SSU: SOIC8N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20SSUR: SOIC8N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25-20SUR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25V-10MF: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10MFR: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10MUR: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10PU: PDIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SH: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SN: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SNR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SSH: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SSHR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SSN: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SSNR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SSU: SOIC8N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SSUR: SOIC8N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SU: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-10SUR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny25V-20MF: MLF20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25V-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25V-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25V-20SH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25V-20SN: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25V-20SSH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25V-20SSN: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25V-20SSU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny25V-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 16; + n_interrupts = 15; +# avr910_devcode = ?; +# Try the AT90S2313 devcode: + avr910_devcode = 0x20; + chip_erase_delay = 4500; + signature = 0x1e 0x91 0x08; + reset = io; + flash_instr = 0xb4, 0x02, 0x12; + eeprom_instr = + 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; + idr = 0x22; + ocdrev = 1; + factory_fcpu = 1000000; + + memory "eeprom" + size = 128; + max_write_delay = 4500; + read = "1010.0000--000x.xxxx--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; ; - memory "fuse" - size = 1; - bitmask = 0x3f; + memory "flash" + size = 2048; + num_pages = 64; + read_lo = "0010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.00aa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--0000.00aa--aaaa.xxxx--xxxx.xxxx"; + ; + + memory "lfuse" + initval = 0x62; min_write_delay = 9000; - max_write_delay = 20000; - pwroff_after_write = yes; - read = "0101.0000--xxxx.xxxx--xxxx.xxxx--xxoo.oooo"; - write = "1010.1100--101i.iiii--xxxx.xxxx--xxxx.xxxx"; + max_write_delay = 9000; ; - memory "lock" + memory "hfuse" + initval = 0xdf; + bitmask = -1; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" size = 1; - bitmask = 0x06; + initval = 0xff; + bitmask = 0x01; min_write_delay = 9000; - max_write_delay = 20000; - read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xoox"; - write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; + max_write_delay = 9000; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "lock" + min_write_delay = 9000; + max_write_delay = 9000; ; memory "sram" size = 128; - offset = 0x60; ; ; #------------------------------------------------------------ -# AT90S2343 (also AT90S2323 and ATtiny22) +# ATtiny45 #------------------------------------------------------------ -part # 2343 - desc = "AT90S2343"; - id = "2343"; +part parent "t13" # t45 + desc = "ATtiny45"; + id = "t45"; variants = - "AT90S2343-10PC: DIP8, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S2343-10PI: DIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S2343-10SC: SOIC8, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S2343-10SI: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVSP; - mcuid = 189; - n_interrupts = 3; - stk500_devcode = 0x43; - avr910_devcode = 0x4c; - chip_erase_delay = 18000; - signature = 0x1e 0x91 0x03; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - latchcycles = 1; - poweroffdelay = 25; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; + "ATtiny45: N/A, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[N/A, N/A]", + "ATtiny45-15SZ: SOIC8, Fmax=N/A, T=[-40 C, 85 C], Vcc=[N/A, N/A]", + "ATtiny45-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45-20MUR: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45-20SUR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45-20XU: TSSOP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45-20XUR: TSSOP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny45V-10MUR: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny45V-10PU: PDIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny45V-10SH: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny45V-10SU: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny45V-10SUR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny45V-10XU: TSSOP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny45V-10XUR: TSSOP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny45V-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45V-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45V-20SH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45V-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny45V-20XU: TSSOP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 22; + n_interrupts = 15; +# avr910_devcode = ?; +# Try the AT90S2313 devcode: + avr910_devcode = 0x20; + chip_erase_delay = 4500; + signature = 0x1e 0x92 0x06; + reset = io; + flash_instr = 0xb4, 0x02, 0x12; + eeprom_instr = + 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; + idr = 0x22; + ocdrev = 1; factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 20000; - readback = 0x00 0xff; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - read = "1010.0000--0000.0000--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.0000--xaaa.aaaa--iiii.iiii"; + size = 256; + max_write_delay = 4500; + read = "1010.0000--000x.xxxx--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; ; memory "flash" - size = 2048; + size = 4096; + page_size = 64; + num_pages = 64; + blocksize = 64; + read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.0aaa--aaax.xxxx--xxxx.xxxx"; + ; + + memory "lfuse" + initval = 0x62; min_write_delay = 9000; - max_write_delay = 20000; - readback = 0xff 0xff; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 128; - read_lo = "0010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; - write_lo = "0100.0000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; + max_write_delay = 9000; ; - memory "fuse" - size = 1; - initval = 0xde; - bitmask = 0x21; + memory "hfuse" + initval = 0xdf; + bitmask = -1; min_write_delay = 9000; - max_write_delay = 20000; - read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxox.xxxo"; - write = "1010.1100--1011.111i--xxxx.xxxx--xxxx.xxxx"; + max_write_delay = 9000; ; - memory "lock" + memory "efuse" size = 1; initval = 0xff; - bitmask = 0x06; + bitmask = 0x01; min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x x x x x x x x x o1 o2 x x x x x x"; - write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; + max_write_delay = 9000; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "lock" + min_write_delay = 9000; + max_write_delay = 9000; ; memory "sram" - size = 128; - offset = 0x60; - ; -; - -#------------------------------------------------------------ -# AT90S2323 -#------------------------------------------------------------ - -part parent "2343" # 2323 - desc = "AT90S2323"; - id = "2323"; - variants = - "AT90S2323-10PC: DIP8, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S2323-10PI: DIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S2323-10SC: SOIC8, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S2323-10SI: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; - mcuid = 187; - stk500_devcode = 0x41; - avr910_devcode = 0x48; - signature = 0x1e 0x91 0x02; -; - -#------------------------------------------------------------ -# ATtiny22 -#------------------------------------------------------------ - -part parent "2343" # t22 - desc = "ATtiny22"; - id = "t22"; - variants = - "ATtiny22L-1PC: DIP8, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "ATtiny22L-1PI: DIP8, Fmax=1 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", - "ATtiny22L-1SC: SOIC8, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", - "ATtiny22L-1SI: SOIC8, Fmax=1 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]"; - mcuid = 13; - stk500_devcode = 0x20; - avr910_devcode = 0x00; # Unknown - signature = 0x1e 0x91 0x06; - - memory "fuse" - initval = -1; - ; -; - -#------------------------------------------------------------ -# AT90S4433 -#------------------------------------------------------------ - -part parent "2333" # 4433 - desc = "AT90S4433"; - id = "4433"; - variants = - "AT90S4433-8AC: TQFP32, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S4433-8AI: TQFP32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S4433-8PC: DIP28, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S4433-8PI: DIP28, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; - mcuid = 191; - stk500_devcode = 0x51; - avr910_devcode = 0x30; - signature = 0x1e 0x92 0x03; - - memory "eeprom" size = 256; - read = "1010.0000--xxxx.xxxx--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--aaaa.aaaa--iiii.iiii"; - ; - - memory "flash" - size = 4096; - read_lo = "0010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; - write_lo = "0100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; - ; - - memory "fuse" - initval = 0xda; - ; - - memory "lock" - initval = 0xff; ; ; #------------------------------------------------------------ -# AT90S8515 +# ATtiny85 #------------------------------------------------------------ -part # 8515 - desc = "AT90S8515"; - id = "8515"; +part parent "t13" # t85 + desc = "ATtiny85"; + id = "t85"; variants = - "AT90S8515-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 193; - n_interrupts = 13; - stk500_devcode = 0x60; - avr910_devcode = 0x38; - chip_erase_delay = 20000; - signature = 0x1e 0x93 0x01; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 1; + "ATtiny85: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[N/A, N/A]", + "ATtiny85-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny85-20MUR: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny85-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny85-20SF: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny85-20SFR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny85-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny85-20SUR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny85V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny85V-10MUR: MLF20, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny85V-10PU: PDIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny85V-10SH: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny85V-10SU: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny85V-10SUR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny85V-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny85V-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny85V-20SH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny85V-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 26; + n_interrupts = 15; +# avr910_devcode = ?; +# Try the AT90S2313 devcode: + avr910_devcode = 0x20; + chip_erase_delay = 4500; + signature = 0x1e 0x93 0x0b; + reset = io; + flash_instr = 0xb4, 0x02, 0x12; + eeprom_instr = + 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; + idr = 0x22; + ocdrev = 1; factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 512; - min_write_delay = 4000; - max_write_delay = 9000; - readback = 0x80 0x7f; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + max_write_delay = 4500; + read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" size = 8192; - min_write_delay = 4000; + page_size = 64; + num_pages = 128; + blocksize = 64; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; + ; + + memory "lfuse" + initval = 0x62; + min_write_delay = 9000; max_write_delay = 9000; - readback = 0x7f 0x7f; - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - read_lo = "0010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - write_lo = "0100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; ; - memory "fuse" - size = 1; + memory "hfuse" initval = 0xdf; - bitmask = 0x21; + bitmask = -1; + min_write_delay = 9000; + max_write_delay = 9000; ; - memory "lock" + memory "efuse" size = 1; initval = 0xff; - bitmask = 0x06; + bitmask = 0x01; min_write_delay = 9000; max_write_delay = 9000; - write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "lock" + min_write_delay = 9000; + max_write_delay = 9000; ; memory "sram" size = 512; - offset = 0x60; ; ; #------------------------------------------------------------ -# AT90S8535 +# ATtiny2313 #------------------------------------------------------------ -part # 8535 - desc = "AT90S8535"; - id = "8535"; +part parent ".classic" # t2313 + desc = "ATtiny2313"; + id = "t2313"; variants = - "AT90S8535-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S8535-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S8535-8JC: LCC44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S8535-8JI: LCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S8535-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S8535-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 195; - n_interrupts = 17; - stk500_devcode = 0x61; - avr910_devcode = 0x68; - chip_erase_delay = 20000; - signature = 0x1e 0x93 0x03; + "ATtiny2313: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny2313-20MUR: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny2313-20PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny2313-20SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny2313-20SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny2313V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313V-10MUR: WQFN20, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313V-10PU: PDIP20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313V-10SU: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313V-10SUR: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 42; + n_interrupts = 19; + stk500_devcode = 0x23; +# Use the ATtiny26 devcode: + avr910_devcode = 0x5e; + chip_erase_delay = 9000; + pagel = 0xd4; + bs2 = 0xd6; + signature = 0x1e 0x91 0x0a; + reset = io; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -4748,121 +4675,185 @@ part # 8535 pollvalue = 0x53; predelay = 1; postdelay = 1; + pollmethod = 1; pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, + 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, + 0x26, 0x36, 0x66, 0x76, 0x2a, 0x3a, 0x6a, 0x7a, + 0x2e, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb2, 0x0f, 0x1f; + eeprom_instr = + 0xbb, 0xfe, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xba, 0x0f, 0xb2, 0x0f, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; hventerstabdelay = 100; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; hvleavestabdelay = 15; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x1f; + spmcr = 0x57; + eecr = 0x3c; + ocdrev = 0; memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 20000; - readback = 0x00 0xff; - mode = 0x04; - delay = 12; - blocksize = 128; + size = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + mode = 0x41; + delay = 6; + blocksize = 4; readsize = 256; - read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--000x.xxxx--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; ; memory "flash" - size = 8192; - min_write_delay = 9000; - max_write_delay = 20000; - readback = 0xff 0xff; - mode = 0x04; - delay = 12; - blocksize = 128; + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 10; + blocksize = 32; readsize = 256; - read_lo = "0010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - write_lo = "0100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + read_lo = "0010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.00aa--aaaa.aaaa--oooo.oooo"; +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_lo = "0100.0000--000x.xxxx--xxxx.aaaa--iiii.iiii"; +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_hi = "0100.1000--000x.xxxx--xxxx.aaaa--iiii.iiii"; +# The information in the data sheet of April/2004 is wrong, this works: + writepage = "0100.1100--0000.00aa--aaaa.xxxx--xxxx.xxxx"; ; - memory "fuse" + memory "lfuse" + size = 1; + initval = 0x64; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + ; + + memory "hfuse" size = 1; initval = 0xdf; - bitmask = 0x21; min_write_delay = 9000; max_write_delay = 9000; - read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxox.xxxo"; - write = "1010.1100--1011.111i--xxxx.xxxx--xxxx.xxxx"; + read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "lock" + memory "efuse" size = 1; initval = 0xff; - bitmask = 0x06; + bitmask = 0x01; min_write_delay = 9000; max_write_delay = 9000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x x x x x x x x x o1 o2 x x x x x x"; - write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "lock" + bitmask = 0x03; + min_write_delay = 9000; + max_write_delay = 9000; + ; + +# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. +# The information in the data sheet of April/2004 is wrong, this works: + + memory "calibration" + size = 2; + read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; + ; + + memory "io" + size = 64; ; memory "sram" - size = 512; + size = 128; offset = 0x60; ; ; #------------------------------------------------------------ -# AT90S4434 +# ATtiny2313A #------------------------------------------------------------ -# No XML file for device AT90S4434, so parenting off AT90S8535 -# with which it shares the datasheet. +part parent "t2313" # t2313a + desc = "ATtiny2313A"; + id = "t2313a"; + variants = + "ATtiny2313A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313A-MMH: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313A-MMHR: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313A-MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313A-MUR: WQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313A-PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313A-SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny2313A-SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 43; + n_interrupts = 21; + idr = 0x27; -part parent "8535" # 4434 - desc = "AT90S4434"; - id = "4434"; + memory "lfuse" + initval = 0x62; + ; +; + +#------------------------------------------------------------ +# ATtiny4313 +#------------------------------------------------------------ + +part parent "t2313" # t4313 + desc = "ATtiny4313"; + id = "t4313"; variants = - "AT90S4434-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S4434-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S4434-8JC: LCC44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S4434-8JI: LCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", - "AT90S4434-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", - "AT90S4434-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; - mcuid = 192; - stk500_devcode = 0x52; - avr910_devcode = 0x6c; - signature = 0x1e 0x92 0x02; + "ATtiny4313: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny4313-MMH: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny4313-MMHR: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny4313-MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny4313-MUR: MLF20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny4313-PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny4313-SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny4313-SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 44; + n_interrupts = 21; + signature = 0x1e 0x92 0x0d; + idr = 0x27; memory "eeprom" size = 256; - read = "1010.0000--xxxx.xxxx--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--000x.xxxx--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; ; memory "flash" size = 4096; - read_lo = "0010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; - write_lo = "0100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; - ; - - memory "fuse" - max_write_delay = 20000; + page_size = 64; + read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.0aaa--aaax.xxxx--xxxx.xxxx"; ; - memory "lock" - max_write_delay = 20000; + memory "lfuse" + initval = 0x62; ; memory "sram" @@ -4871,26 +4862,35 @@ part parent "8535" # 4434 ; #------------------------------------------------------------ -# ATmega103 +# ATtiny24 #------------------------------------------------------------ -part # m103 - desc = "ATmega103"; - id = "m103"; +part parent ".classic" # t24 + desc = "ATtiny24"; + id = "t24"; variants = - "ATmega103-6AC: TQFP64, Fmax=6 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", - "ATmega103-6AI: TQFP64, Fmax=6 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATmega103L-4AC: TQFP64, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 3.6 V]", - "ATmega103L-4AI: TQFP64, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 3.6 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 84; - n_interrupts = 24; - stk500_devcode = 0xb1; - avr910_devcode = 0x41; - chip_erase_delay = 112000; - pagel = 0xa0; - bs2 = 0xd7; - signature = 0x1e 0x97 0x01; + "ATtiny24: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24-20MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny24-20MUR: WQFN20, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny24-20PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny24-20SSU: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny24-20SSUR: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny24V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24V-10MUR: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24V-10PU: PDIP14, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24V-10SSU: SOIC14N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24V-10SSUR: SOIC14N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; + mcuid = 14; + n_interrupts = 17; +# no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +# avr910_devcode = ?; +# Try the AT90S2313 devcode: + avr910_devcode = 0x20; + chip_erase_delay = 4500; + signature = 0x1e 0x91 0x0b; + reset = io; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -4899,464 +4899,308 @@ part # m103 pollvalue = 0x53; predelay = 1; postdelay = 1; - pp_controlstack = - 0x0e, 0x1e, 0x8e, 0x9e, 0x2e, 0x3e, 0xae, 0xbe, - 0x4e, 0x5e, 0xce, 0xde, 0x6e, 0x7e, 0xee, 0xde, - 0x66, 0x76, 0xe6, 0xf6, 0x6a, 0x7a, 0xea, 0x7a, - 0x7f, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + pollmethod = 1; + hvsp_controlstack = + 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, + 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0f; + flash_instr = 0xb4, 0x07, 0x17; + eeprom_instr = + 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; hventerstabdelay = 100; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 10; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 4096; - min_write_delay = 4000; - max_write_delay = 9000; - readback = 0x80 0x7f; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; - ; - - memory "flash" - paged = yes; - size = 0x20000; - page_size = 256; - num_pages = 512; - min_write_delay = 22000; - max_write_delay = 56000; - readback = 0xff 0xff; - mode = 0x11; - delay = 70; - blocksize = 256; - readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; - ; - - memory "fuse" - size = 1; - initval = 0xdf; - bitmask = 0x2b; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--xxxx.xxxx--xxxx.xxxx--xxox.o1oo"; - write = "1010.1100--1011.i1ii--xxxx.xxxx--xxxx.xxxx"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x06; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xoox"; - write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "sram" - size = 4000; - offset = 0x60; - ; -; - -#------------------------------------------------------------ -# ATmega64 -#------------------------------------------------------------ - -part # m64 - desc = "ATmega64"; - id = "m64"; - variants = - "ATmega64: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega64-16AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", - "ATmega64-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.2 V, 5.5 V]", - "ATmega64-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.2 V, 5.5 V]", - "ATmega64-16MN: QFN64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", - "ATmega64-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega64-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega64L-8AN: TQFP64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64L-8AQ: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64L-8AQR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64L-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64L-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64L-8MN: QFN64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64L-8MQ: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64L-8MQR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega64L-8MU: QFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64L-8MUR: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; - mcuid = 72; - n_interrupts = 35; - n_boot_sections = 4; - boot_section_size = 1024; - stk500_devcode = 0xa0; - avr910_devcode = 0x45; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x96 0x02; - reset = io; - allowfullpagebitstream = yes; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - latchcycles = 6; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x22; - spmcr = 0x68; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 50; + resetdelayus = 3; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + synchcycles = 6; + hvspcmdexedelay = 50; + idr = 0x27; + spmcr = 0x57; eecr = 0x3c; - ocdrev = 2; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + ocdrev = 1; memory "eeprom" - size = 2048; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 64; + size = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + mode = 0x41; + delay = 10; + blocksize = 4; readsize = 256; - read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--000x.xxxx--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x10000; - page_size = 256; - num_pages = 256; + size = 2048; + page_size = 32; + num_pages = 64; min_write_delay = 4500; max_write_delay = 4500; - readback = 0xff 0x00; - mode = 0x21; + mode = 0x41; delay = 10; - blocksize = 128; + blocksize = 32; readsize = 256; - read_lo = "0010.0000--xaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--xaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.00aa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxx.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxx.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.00aa--aaaa.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0xe1; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0x62; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0x99; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0xdf; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; memory "efuse" size = 1; - initval = 0xfd; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0xff; + bitmask = 0x01; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxii"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 4; - read = "0011.1000--xxxx.xxxx--0000.00aa--oooo.oooo"; + bitmask = 0x03; + min_write_delay = 9000; + max_write_delay = 9000; + write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; ; memory "io" - size = 224; - offset = 0x20; + size = 64; ; memory "sram" - size = 4096; - offset = 0x100; + size = 128; + offset = 0x60; ; ; #------------------------------------------------------------ -# ATmega64A -#------------------------------------------------------------ - -part parent "m64" # m64a - desc = "ATmega64A"; - id = "m64a"; - variants = - "ATmega64A-AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64A-ANR: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64A-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64A-MN: QFN64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64A-MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64A-MUR: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 73; -; - -#------------------------------------------------------------ -# ATmega128 +# ATtiny24A #------------------------------------------------------------ -part # m128 - desc = "ATmega128"; - id = "m128"; +part parent "t24" # t24a + desc = "ATtiny24A"; + id = "t24a"; variants = - "ATmega128-16AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", - "ATmega128-16ANR: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", - "ATmega128-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega128-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega128-16MN: MLF64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", - "ATmega128-16MNR: MLF64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega128-16MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega128-16MUR: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega128L-8AN: TQFP64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[3 V, 5.5 V]", - "ATmega128L-8ANR: TQFP64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[3 V, 5.5 V]", - "ATmega128L-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega128L-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega128L-8MN: MLF64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[3 V, 5.5 V]", - "ATmega128L-8MNR: MLF64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega128L-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega128L-8MUR: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; - mcuid = 85; - n_interrupts = 35; - n_boot_sections = 4; - boot_section_size = 1024; - stk500_devcode = 0xb2; - avr910_devcode = 0x43; - chip_erase_delay = 10000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x97 0x02; - reset = io; - allowfullpagebitstream = yes; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - latchcycles = 6; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x22; - rampz = 0x3b; - spmcr = 0x68; - eecr = 0x3c; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + "ATtiny24A: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-CCU: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-CCUR: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-MF: QFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-MFR: QFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-MM8: VQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-MM8R: VQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-MMH: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-MMHR: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-MUR: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-SSF: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-SSFR: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-SSU: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny24A-SSUR: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 15; +; + +#------------------------------------------------------------ +# ATtiny44 +#------------------------------------------------------------ + +part parent "t24" # t44 + desc = "ATtiny44"; + id = "t44"; + variants = + "ATtiny44: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44-20MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny44-20MUR: WQFN20, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny44-20PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny44-20SSU: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny44-20SSUR: SOIC14N, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny44V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44V-10MUR: WQFN20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44V-10PU: PDIP14, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44V-10SSU: SOIC14N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44V-10SSUR: SOIC14N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 20; + signature = 0x1e 0x92 0x07; memory "eeprom" - size = 4096; - page_size = 8; - min_write_delay = 10000; - max_write_delay = 10000; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 64; - readsize = 256; - read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + size = 256; + read = "1010.0000--000x.xxxx--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; ; memory "flash" - paged = yes; - size = 0x20000; - page_size = 256; - num_pages = 512; - min_write_delay = 5000; - max_write_delay = 5000; - readback = 0xff 0x00; - mode = 0x21; - delay = 10; - blocksize = 128; - readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + size = 4096; + page_size = 64; + blocksize = 64; + read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.0aaa--aaax.xxxx--xxxx.xxxx"; ; - memory "lfuse" - size = 1; - initval = 0xe1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + memory "sram" + size = 256; ; +; - memory "hfuse" - size = 1; - initval = 0x99; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; +#------------------------------------------------------------ +# ATtiny44A +#------------------------------------------------------------ - memory "efuse" - size = 1; - initval = 0xfd; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxii"; - ; +part parent "t44" # t44a + desc = "ATtiny44A"; + id = "t44a"; + variants = + "ATtiny44A: N/A, Fmax=20 MHz, T=[-40 C, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-CCU: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-CCUR: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-MF: QFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-MFR: QFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-MMH: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-MMHR: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-MUR: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-SSF: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-SSFR: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-SSU: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny44A-SSUR: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = XVII + IV; # 21; - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; +; - memory "calibration" - size = 4; - read = "0011.1000--xxxx.xxxx--0000.00aa--oooo.oooo"; +#------------------------------------------------------------ +# ATtiny84 +#------------------------------------------------------------ + +part parent "t24" # t84 + desc = "ATtiny84"; + id = "t84"; + variants = + "ATtiny84: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84-15MZ: MLF20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny84-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny84-20MUR: WQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny84-20PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny84-20SSU: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny84-20SSUR: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny84V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84V-10MUR: WQFN20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84V-10PU: PDIP14, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84V-10SSU: SOIC14, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84V-10SSUR: SOIC14, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 24; + signature = 0x1e 0x93 0x0c; + + memory "eeprom" + size = 512; + read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; - memory "io" - size = 224; - offset = 0x20; + memory "flash" + size = 8192; + page_size = 64; + num_pages = 128; + blocksize = 64; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; ; memory "sram" - size = 4096; - offset = 0x100; + size = 512; ; ; #------------------------------------------------------------ -# ATmega128A +# ATtiny84A #------------------------------------------------------------ -part parent "m128" # m128a - desc = "ATmega128A"; - id = "m128a"; +part parent "t84" # t84a + desc = "ATtiny84A"; + id = "t84a"; variants = - "ATmega128A: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega128A-AN: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega128A-ANR: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega128A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega128A-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega128A-MN: VQFN64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega128A-MNR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega128A-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega128A-MUR: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 86; + "ATtiny84A-CCU: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-CCUR: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-MF: WQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-MFR: WQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-MMH: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-MMHR: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-MUR: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-SSF: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-SSFR: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-SSU: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny84A-SSUR: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 25; ; #------------------------------------------------------------ -# AT90CAN128 +# ATtiny441 #------------------------------------------------------------ -part # c128 - desc = "AT90CAN128"; - id = "c128"; +part parent ".classic" # t441 + desc = "ATtiny441"; + id = "t441"; variants = - "AT90CAN128: N/A, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, N/A]", - "AT90CAN128-15AZ: TQFP64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN128-16AI: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN128-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN128-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN128-16MI: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN128-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN128-16MUR: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; - mcuid = 176; - n_interrupts = 37; - n_boot_sections = 4; - boot_section_size = 1024; - stk500_devcode = 0xb3; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; -# avr910_devcode = 0x43; - signature = 0x1e 0x97 0x81; + "ATtiny441-MMH: VQFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny441-MMHR: VQFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny441-MU: QFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny441-MUR: QFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny441-SSU: SOIC14, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny441-SSUR: SOIC14, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; + mcuid = 32; + n_interrupts = 30; + n_page_erase = 4; + stk500_devcode = 0x14; + avr910_devcode = 0x20; + chip_erase_delay = 4500; + signature = 0x1e 0x92 0x15; reset = io; timeout = 200; stabdelay = 100; @@ -5367,63 +5211,69 @@ part # c128 predelay = 1; postdelay = 1; pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hvsp_controlstack = + 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, + 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0f; + flash_instr = 0xb4, 0x07, 0x17; + eeprom_instr = + 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; hventerstabdelay = 100; - latchcycles = 6; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - rampz = 0x3b; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + synchcycles = 6; + idr = 0x27; spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3c; + ocdrev = 1; memory "eeprom" - size = 4096; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; mode = 0x41; - delay = 20; - blocksize = 8; + delay = 10; + blocksize = 4; readsize = 256; - read = "1010.0000--000x.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.aaaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; + read = "1010.0000--000x.xxxx--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x20000; - page_size = 256; - num_pages = 512; + size = 4096; + page_size = 16; + num_pages = 256; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 256; + blocksize = 16; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxx.xaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxx.xaaa--iiii.iiii"; + writepage = "0100.1100--0000.0aaa--aaaa.axxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; + bitmask = 0xdf; min_write_delay = 9000; max_write_delay = 9000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; @@ -5432,7 +5282,7 @@ part # c128 memory "hfuse" size = 1; - initval = 0x99; + initval = 0xdf; min_write_delay = 9000; max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; @@ -5442,71 +5292,90 @@ part # c128 memory "efuse" size = 1; initval = 0xff; - bitmask = 0x0f; + bitmask = 0xff; min_write_delay = 9000; max_write_delay = 9000; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; + write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; + bitmask = 0x03; min_write_delay = 9000; max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "sram" + size = 256; ; +; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; +#------------------------------------------------------------ +# ATtiny841 +#------------------------------------------------------------ + +part parent "t441" # t841 + desc = "ATtiny841"; + id = "t841"; + variants = + "ATtiny841-MMH: VQFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny841-MMHR: VQFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny841-MU: QFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny841-MUR: QFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny841-SSU: SOIC14, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny841-SSUR: SOIC14, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]"; + mcuid = 37; + signature = 0x1e 0x93 0x15; + + memory "eeprom" + size = 512; + read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; - memory "io" - size = 224; - offset = 0x20; + memory "flash" + size = 8192; + num_pages = 512; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--0000.aaaa--aaaa.axxx--xxxx.xxxx"; ; memory "sram" - size = 4096; - offset = 0x100; + size = 512; ; ; #------------------------------------------------------------ -# AT90CAN64 +# ATtiny26 #------------------------------------------------------------ -part # c64 - desc = "AT90CAN64"; - id = "c64"; +part parent ".classic" # t26 + desc = "ATtiny26"; + id = "t26"; variants = - "AT90CAN64: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90CAN64-16AI: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN64-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN64-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN64-16MI: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN64-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN64-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 172; - n_interrupts = 37; - n_boot_sections = 4; - boot_section_size = 1024; - stk500_devcode = 0xb3; + "ATtiny26: N/A, Fmax=16 MHz, T=[N/A, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny26-16MU: MLF32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATtiny26-16MUR: VQFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATtiny26-16PU: PDIP20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATtiny26-16SU: SOIC20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATtiny26-16SUR: SOIC20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATtiny26L-8MU: MLF32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny26L-8MUR: VQFN32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny26L-8PU: PDIP20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny26L-8SU: SOIC20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny26L-8SUR: SOIC20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_ISP | PM_HVPP; + mcuid = 17; + n_interrupts = 12; + stk500_devcode = 0x21; + avr910_devcode = 0x5e; chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; -# avr910_devcode = 0x43; - signature = 0x1e 0x96 0x81; - reset = io; + pagel = 0xb3; + bs2 = 0xb2; + signature = 0x1e 0x91 0x09; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -5515,63 +5384,57 @@ part # c64 pollvalue = 0x53; predelay = 1; postdelay = 1; - pollmethod = 1; pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, + 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, + 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, + 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; - latchcycles = 6; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; hvleavestabdelay = 15; resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + chiperasepolltimeout = 20; + programfusepolltimeout = 10; + programlockpolltimeout = 10; memory "eeprom" - size = 2048; - page_size = 8; + size = 128; min_write_delay = 9000; max_write_delay = 9000; - mode = 0x41; + readback = 0xff 0xff; + mode = 0x04; delay = 20; - blocksize = 8; + blocksize = 64; readsize = 256; - read = "1010.0000--000x.xaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xaaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--00xx.xaaa--aaaa.a000--xxxx.xxxx"; + read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; ; memory "flash" paged = yes; - size = 0x10000; - page_size = 256; - num_pages = 256; + size = 2048; + page_size = 32; + num_pages = 64; min_write_delay = 4500; max_write_delay = 4500; - mode = 0x41; + readback = 0xff 0x00; + mode = 0x21; delay = 10; - blocksize = 256; + blocksize = 16; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xxxx.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xxxx.aaaa--iiii.iiii"; + writepage = "0100.1100--xxxx.xxaa--aaaa.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x62; + initval = 0xe1; min_write_delay = 9000; max_write_delay = 9000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; @@ -5580,81 +5443,61 @@ part # c64 memory "hfuse" size = 1; - initval = 0x99; + initval = 0xf7; + bitmask = 0x1f; min_write_delay = 9000; max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; + write = "1010.1100--1010.1000--xxxx.xxxx--xxxi.iiii"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; + bitmask = 0x03; min_write_delay = 9000; max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xxoo"; + write = "1010.1100--1111.11ii--xxxx.xxxx--xxxx.xxxx"; ; memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + size = 4; + read = "0011.1000--xxxx.xxxx--0000.00aa--oooo.oooo"; ; memory "io" - size = 224; - offset = 0x20; + size = 64; ; memory "sram" - size = 4096; - offset = 0x100; + size = 128; + offset = 0x60; ; ; #------------------------------------------------------------ -# AT90CAN32 +# ATtiny261 #------------------------------------------------------------ -part # c32 - desc = "AT90CAN32"; - id = "c32"; +part parent ".classic" # t261 + desc = "ATtiny261"; + id = "t261"; variants = - "AT90CAN32: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90CAN32-16AI: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN32-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN32-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN32-16MI: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN32-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90CAN32-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 171; - n_interrupts = 37; - n_boot_sections = 4; - boot_section_size = 1024; - stk500_devcode = 0xb3; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; -# avr910_devcode = 0x43; - signature = 0x1e 0x95 0x81; - reset = io; + "ATtiny261: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[N/A, N/A]", + "ATtiny261-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny261-20PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny261-20SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny261V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261V-10PU: PDIP20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261V-10SU: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 30; + n_interrupts = 19; + chip_erase_delay = 4000; + pagel = 0xb3; + bs2 = 0xb2; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0c; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -5663,74 +5506,79 @@ part # c32 pollvalue = 0x53; predelay = 1; postdelay = 1; - pollmethod = 1; pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, + 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, + 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, + 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb4, 0x00, 0x10; + eeprom_instr = + 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x00, 0xb4, 0x00, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; hventerstabdelay = 100; - latchcycles = 6; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; - idr = 0x31; + idr = 0x20; spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3c; + ocdrev = 1; memory "eeprom" - size = 1024; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; mode = 0x41; - delay = 20; - blocksize = 8; + delay = 10; + blocksize = 4; readsize = 256; - read = "1010.0000--000x.xxaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--00xx.xxaa--aaaa.a000--xxxx.xxxx"; + read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x8000; - page_size = 256; - num_pages = 128; + size = 2048; + page_size = 32; + num_pages = 64; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 256; + blocksize = 32; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xxxx.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xxxx.aaaa--iiii.iiii"; + writepage = "0100.1100--xxxx.xxaa--aaaa.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0x99; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0xdf; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -5738,80 +5586,215 @@ part # c32 memory "efuse" size = 1; initval = 0xff; - bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; + bitmask = 0x01; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xxoo"; + write = "1010.1100--1111.11ii--xxxx.xxxx--xxxx.xxxx"; ; memory "io" - size = 224; - offset = 0x20; + size = 64; ; memory "sram" - size = 2048; - offset = 0x100; + size = 128; + offset = 0x60; ; ; #------------------------------------------------------------ -# ATmega16 +# ATtiny261A #------------------------------------------------------------ -part # m16 - desc = "ATmega16"; - id = "m16"; +part parent "t261" # t261a + desc = "ATtiny261A"; + id = "t261a"; variants = - "ATmega16: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega16-16AQR: TQFP44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega16-16AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega16-16AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega16-16MQ: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega16-16MU: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega16-16MUR: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega16-16PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega16L-8AQ: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16L-8AQR: TQFP44, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega16L-8AU: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16L-8AUR: TQFP44, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega16L-8MU: MLF44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16L-8MUR: VQFN44, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega16L-8PU: PDIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; - mcuid = 49; - n_interrupts = 21; - n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x82; - avr910_devcode = 0x74; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x94 0x03; + "ATtiny261A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny261A-MF: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261A-MFR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261A-MN: MLF32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261A-MNR: VQFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261A-PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261A-SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261A-SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261A-XU: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny261A-XUR: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 31; +; + +#------------------------------------------------------------ +# ATtiny461 +#------------------------------------------------------------ + +part parent "t261" # t461 + desc = "ATtiny461"; + id = "t461"; + variants = + "ATtiny461: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[N/A, N/A]", + "ATtiny461-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny461-20MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny461-20PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny461-20SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny461-20SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny461V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny461V-10MUR: VQFN32, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny461V-10PU: PDIP20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny461V-10SU: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny461V-10SUR: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 33; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x92 0x08; + + memory "eeprom" + size = 256; + num_pages = 64; + read = "1010.0000--xxxx.xxxx--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; + ; + + memory "flash" + size = 4096; + page_size = 64; + blocksize = 64; + read_lo = "0010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--xxxx.xaaa--aaax.xxxx--xxxx.xxxx"; + ; + + memory "sram" + size = 256; + ; +; + +#------------------------------------------------------------ +# ATtiny461A +#------------------------------------------------------------ + +part parent "t461" # t461a + desc = "ATtiny461A"; + id = "t461a"; + variants = + "ATtiny461A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny461A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny461A-PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny461A-SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny461A-SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny461A-XU: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny461A-XUR: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 34; +; + +#------------------------------------------------------------ +# ATtiny861 +#------------------------------------------------------------ + +part parent "t261" # t861 + desc = "ATtiny861"; + id = "t861"; + variants = + "ATtiny861: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[N/A, N/A]", + "ATtiny861-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny861-20MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny861-20PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny861-20SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny861-20SUR: SOIC20, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny861V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny861V-10MUR: VQFN32, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny861V-10PU: PDIP20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny861V-10SU: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny861V-10SUR: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 38; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x93 0x0d; + + memory "eeprom" + size = 512; + num_pages = 128; + read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + ; + + memory "flash" + size = 8192; + page_size = 64; + num_pages = 128; + blocksize = 64; + read_lo = "0010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--xxxx.aaaa--aaax.xxxx--xxxx.xxxx"; + ; + + memory "sram" + size = 512; + ; +; + +#------------------------------------------------------------ +# ATtiny861A +#------------------------------------------------------------ + +part parent "t861" # t861a + desc = "ATtiny861A"; + id = "t861a"; + variants = + "ATtiny861A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny861A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny861A-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny861A-PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny861A-SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny861A-SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny861A-XU: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny861A-XUR: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 39; +; + +#------------------------------------------------------------ +# ATtiny48 +#------------------------------------------------------------ + +part parent ".classic" # t48 + desc = "ATtiny48"; + id = "t48"; + variants = + "ATtiny48-AU: TQFP32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny48-AUR: TQFP32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny48-CCU: UFBGA32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny48-MMH: VQFN28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny48-MMHR: VQFN28, Fmax=12 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny48-MMU: MLF28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny48-MMUR: VQFN28, Fmax=12 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny48-MU: MLF32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny48-MUR: VQFN32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny48-PU: PDIP28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 23; + n_interrupts = 20; + stk500_devcode = 0x73; + chip_erase_delay = 15000; + pagel = 0xd7; + bs2 = 0xc2; +# avr910_devcode = 0x??; + signature = 0x1e 0x92 0x09; reset = io; - allowfullpagebitstream = yes; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -5820,13 +5803,22 @@ part # m16 pollvalue = 0x53; predelay = 1; postdelay = 1; + pollmethod = 1; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 6; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; @@ -5834,50 +5826,45 @@ part # m16 programlockpolltimeout = 5; idr = 0x31; spmcr = 0x57; - eecr = 0x3c; - ocdrev = 2; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3f; + ocdrev = 1; memory "eeprom" - size = 512; + size = 64; page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; - readback = 0xff 0xff; - mode = 0x04; + min_write_delay = 3600; + max_write_delay = 3600; + mode = 0x41; delay = 20; - blocksize = 128; + blocksize = 4; readsize = 256; - read = "1010.0000--00xx.xxaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--000x.xxxx--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x4000; - page_size = 128; - num_pages = 128; + size = 4096; + page_size = 64; + num_pages = 64; min_write_delay = 4500; max_write_delay = 4500; - readback = 0xff 0x00; - mode = 0x21; + mode = 0x41; delay = 10; - blocksize = 128; + blocksize = 64; readsize = 256; - read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--00aa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0xe1; + initval = 0x6e; min_write_delay = 4500; max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; @@ -5886,99 +5873,175 @@ part # m16 memory "hfuse" size = 1; - initval = 0x99; + initval = 0xdf; min_write_delay = 4500; max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "lock" + memory "efuse" size = 1; initval = 0xff; - bitmask = 0x3f; + bitmask = 0x01; min_write_delay = 4500; max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--1111.111i"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "lock" + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; ; - memory "calibration" - size = 4; - read = "0011.1000--000x.xxxx--0000.00aa--oooo.oooo"; + memory "sram" + size = 256; ; +; - memory "io" - size = 64; - offset = 0x20; - ; +#------------------------------------------------------------ +# ATtiny88 +#------------------------------------------------------------ + +part parent "t48" # t88 + desc = "ATtiny88"; + id = "t88"; + variants = + "ATtiny88-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny88-AUR: TQFP32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny88-CCU: UFBGA32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny88-MMH: VQFN28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny88-MMHR: VQFN28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny88-MMU: QFN28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny88-MMUR: QFN28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny88-MU: QFN32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny88-MUR: VQFN32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny88-PU: PDIP28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 28; + chip_erase_delay = 9000; +# avr910_devcode = 0x??; + signature = 0x1e 0x93 0x11; + + memory "flash" + size = 8192; + num_pages = 128; + ; + + memory "efuse" + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; + ; memory "sram" - size = 1024; - offset = 0x60; + size = 512; ; ; #------------------------------------------------------------ -# ATmega16A +# ATtiny28 #------------------------------------------------------------ -part parent "m16" # m16a - desc = "ATmega16A"; - id = "m16a"; +# This is an HVPP-only device. + +part parent ".classic" # t28 + desc = "ATtiny28"; + id = "t28"; variants = - "ATmega16A: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega16A-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16A-AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16A-MU: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16A-MUR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega16A-PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 50; + "ATtiny28: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny28L-4AU: TQFP32, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny28L-4MU: MLF32, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny28L-4MUR: VQFN32, Fmax=4 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny28L-4PU: PDIP28, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny28V-1AU: TQFP32, Fmax=1.2 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny28V-1AUR: TQFP32, Fmax=1 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny28V-1MU: MLF32, Fmax=1.2 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny28V-1MUR: VQFN32, Fmax=1 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny28V-1PU: PDIP28, Fmax=1.2 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_HVPP; + mcuid = 18; + n_interrupts = 6; + stk500_devcode = 0x22; + avr910_devcode = 0x5c; + signature = 0x1e 0x91 0x07; + serial = no; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + factory_fcpu = 1200000; + chip_erase = NULL; + pgm_enable = NULL; + + memory "flash" + size = 2048; + page_size = 2; + delay = 5; + readsize = 256; + ; + + memory "fuse" + size = 1; + initval = 0x12; + bitmask = 0x1f; + ; + + memory "lock" + initval = 0x06; + bitmask = 0x06; + read = NULL; + write = NULL; + ; + + memory "signature" + read = NULL; + ; + + memory "calibration" + read = NULL; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 32; + offset = 0x60; + ; ; #------------------------------------------------------------ -# ATmega324P +# ATtiny43U #------------------------------------------------------------ -part # m324p - desc = "ATmega324P"; - id = "m324p"; +part parent ".classic" # t43u + desc = "ATtiny43U"; + id = "t43u"; variants = - "ATmega324P: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega324P-20AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega324P-20AQ: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega324P-20AQR: TQFP44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega324P-20AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega324P-20AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega324P-20MN: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega324P-20MQR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega324P-20MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega324P-20MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega324P-20PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega324P-20PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega324PV-10AN: TQFP44, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PV-10AU: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PV-10AUR: TQFP44, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega324PV-10MN: VQFN44, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PV-10MU: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PV-10PN: PDIP40, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PV-10PU: PDIP40, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 111; - n_interrupts = 31; - n_boot_sections = 4; - boot_section_size = 512; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - chip_erase_delay = 55000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x95 0x08; + "ATtiny43U: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[0.7 V, 5.5 V]", + "ATtiny43U-MU: QFN20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny43U-MUR: WQFN20, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATtiny43U-SU: SOIC20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny43U-SUR: SOIC20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 19; + n_interrupts = 16; + stk500_devcode = 0x14; +# avr910_devcode = ?; +# Try the AT90S2313 devcode: + avr910_devcode = 0x20; + chip_erase_delay = 1000; + pagel = 0xa3; + bs2 = 0xa2; + signature = 0x1e 0x92 0x0c; reset = io; timeout = 200; stabdelay = 100; @@ -5988,77 +6051,79 @@ part # m324p pollvalue = 0x53; predelay = 1; postdelay = 1; - pollmethod = 1; pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, + 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, + 0x06, 0x16, 0x46, 0x56, 0x0a, 0x1a, 0x4a, 0x5a, + 0x1e, 0x7c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb4, 0x07, 0x17; + eeprom_instr = + 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; hventerstabdelay = 100; latchcycles = 5; togglevtg = 1; - poweroffdelay = 15; + poweroffdelay = 20; resetdelayms = 1; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; - idr = 0x31; + idr = 0x27; spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3c; + ocdrev = 1; memory "eeprom" - size = 1024; + size = 64; page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; + num_pages = 16; + min_write_delay = 4000; + max_write_delay = 4500; mode = 0x41; delay = 10; blocksize = 4; readsize = 256; - read = "1010.0000--00xx.xaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xaaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--000x.xxxx--00aa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--00aa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xaaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxxx--00aa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x8000; - page_size = 128; - num_pages = 256; + size = 4096; + page_size = 64; + num_pages = 64; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 128; + blocksize = 64; readsize = 256; - read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--0aaa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.0aaa--aaax.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0x99; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0xdf; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -6066,256 +6131,53 @@ part # m324p memory "efuse" size = 1; initval = 0xff; - bitmask = 0x07; - min_write_delay = 9000; - max_write_delay = 9000; + bitmask = 0x01; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.1iii"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; ; memory "io" - size = 224; - offset = 0x20; + size = 64; ; memory "sram" - size = 2048; - offset = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega164P -#------------------------------------------------------------ - -part parent "m324p" # m164p - desc = "ATmega164P"; - id = "m164p"; - variants = - "ATmega164P: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega164P-20AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164P-20AQ: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164P-20AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164P-20AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164P-20MN: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164P-20MQ: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164P-20MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164P-20MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164P-20PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164P-20PQ: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164P-20PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega164PV-10AN: TQFP44, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PV-10AQ: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PV-10AU: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PV-10AUR: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PV-10MU: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PV-10MUR: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PV-10PN: PDIP40, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PV-10PU: PDIP40, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 93; - boot_section_size = 256; - signature = 0x1e 0x94 0x0a; - - memory "eeprom" - size = 512; - delay = 20; - ; - - memory "flash" - size = 0x4000; - num_pages = 128; - ; - - memory "sram" - size = 1024; - ; -; - -#------------------------------------------------------------ -# ATmega164PA -#------------------------------------------------------------ - -part parent "m164p" # m164pa - desc = "ATmega164PA"; - id = "m164pa"; - variants = - "ATmega164PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-ANR: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-CU: VFBGA49, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-CUR: VFBGA49, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-MCH: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-MCHR: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-MN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-MNR: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164PA-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 94; -; - -#------------------------------------------------------------ -# ATmega164A -#------------------------------------------------------------ - -part parent "m164p" # m164a - desc = "ATmega164A"; - id = "m164a"; - variants = - "ATmega164A: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega164A-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164A-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164A-CU: VFBGA49, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164A-CUR: VFBGA49, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega164A-MCH: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164A-MCHR: QFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega164A-MU: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164A-MUR: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega164A-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 92; - signature = 0x1e 0x94 0x0f; -; - -#------------------------------------------------------------ -# ATmega324PB -#------------------------------------------------------------ - -part parent "m324p" # m324pb - desc = "ATmega324PB"; - id = "m324pb"; - variants = - "ATmega324PB-AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PB-ANR: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PB-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PB-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PB-MN: QFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PB-MNR: QFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PB-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PB-MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 113; - n_interrupts = 51; - signature = 0x1e 0x95 0x17; - - memory "efuse" - initval = 0x07; - bitmask = 0x0f; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.iiii"; - ; - - memory "prodsig" - size = 24; - read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; - ; - - memory "sigrow" - alias "prodsig"; - ; - - memory "sernum" - size = 10; - offset = 0xe; # Sub-region of prodsig - read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; + size = 256; + offset = 0x60; ; ; #------------------------------------------------------------ -# ATmega324PA -#------------------------------------------------------------ - -part parent "m324p" # m324pa - desc = "ATmega324PA"; - id = "m324pa"; - variants = - "ATmega324PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-CU: VFBGA49, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-MCH: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-MCHR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-MN: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-MNR: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324PA-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 112; - signature = 0x1e 0x95 0x11; -; - -#------------------------------------------------------------ -# ATmega324A -#------------------------------------------------------------ - -part parent "m324p" # m324a - desc = "ATmega324A"; - id = "m324a"; - variants = - "ATmega324A: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega324A-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324A-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324A-CU: VFBGA49, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324A-MCH: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324A-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega324A-MUR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega324A-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 110; - signature = 0x1e 0x95 0x15; -; - -#------------------------------------------------------------ -# ATmega644 +# ATtiny828 #------------------------------------------------------------ -part # m644 - desc = "ATmega644"; - id = "m644"; +part parent ".classic" # t828 + desc = "ATtiny828"; + id = "t828"; variants = - "ATmega644: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega644-20AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644-20AUR: TQFP44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega644-20MU: MLF44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644-20MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644-20PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644V-10AU: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644V-10AUR: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644V-10MU: MLF44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644V-10MUR: VQFN44, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega644V-10PU: PDIP40, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 127; - n_interrupts = 28; + "ATtiny828: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.62 V, 5.5 V]", + "ATtiny828-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny828-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny828-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny828-MUR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 35; + n_interrupts = 26; n_boot_sections = 4; - boot_section_size = 1024; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - chip_erase_delay = 55000; + boot_section_size = 256; + stk500_devcode = 0x86; + chip_erase_delay = 15000; pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x96 0x09; + bs2 = 0xc2; +# avr910_devcode = 0x??; + signature = 0x1e 0x93 0x14; reset = io; timeout = 200; stabdelay = 100; @@ -6330,9 +6192,14 @@ part # m644 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 6; + latchcycles = 5; togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; @@ -6344,58 +6211,56 @@ part # m644 idr = 0x31; spmcr = 0x57; eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + ocdrev = 1; memory "eeprom" - size = 2048; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; + size = 256; + page_size = 4; + min_write_delay = 3600; + max_write_delay = 3600; mode = 0x41; - delay = 10; - blocksize = 8; + delay = 20; + blocksize = 4; readsize = 256; - read = "1010.0000--00xx.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.aaaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; - ; - + read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + ; + memory "flash" paged = yes; - size = 0x10000; - page_size = 256; - num_pages = 256; + size = 8192; + page_size = 64; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 256; + blocksize = 64; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--00xx.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--00xx.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0x6e; + bitmask = 0xf3; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0x99; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0xdf; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -6403,149 +6268,63 @@ part # m644 memory "efuse" size = 1; initval = 0xff; - bitmask = 0x07; - min_write_delay = 9000; - max_write_delay = 9000; + bitmask = 0xf7; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.1iii"; + write = "1010.1100--1010.0100--xxxx.xxxx--iiii.1iii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; + min_write_delay = 4500; + max_write_delay = 4500; ; memory "sram" - size = 4096; - offset = 0x100; + size = 512; ; ; #------------------------------------------------------------ -# ATmega644A -#------------------------------------------------------------ - -part parent "m644" # m644a - desc = "ATmega644A"; - id = "m644a"; - variants = - "ATmega644A: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega644A-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644A-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644A-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644A-MUR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega644A-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 128; - n_interrupts = 31; -; - -#------------------------------------------------------------ -# ATmega644P -#------------------------------------------------------------ - -part parent "m644" # m644p - desc = "ATmega644P"; - id = "m644p"; - variants = - "ATmega644P: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega644P-20AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20AQ: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20AQR: TQFP44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20MN: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20MQ: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20MQR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20MUR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20PQ: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644P-20PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega644PV-10AN: TQFP44, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10AQ: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10AQR: TQFP44, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10AU: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10AUR: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10MN: VQFN44, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10MQ: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10MQR: VQFN44, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10MU: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10MUR: VQFN44, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10PN: PDIP40, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10PQ: PDIP40, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PV-10PU: PDIP40, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 129; - n_interrupts = 31; - signature = 0x1e 0x96 0x0a; -; - -#------------------------------------------------------------ -# ATmega644PA +# ATtiny828R #------------------------------------------------------------ -part parent "m644" # m644pa - desc = "ATmega644PA"; - id = "m644pa"; +part parent "t828" # t828r + desc = "ATtiny828R"; + id = "t828r"; variants = - "ATmega644PA-AN: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PA-ANR: TQFP44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega644PA-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PA-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PA-MN: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PA-MNR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega644PA-MU: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PA-MUR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega644PA-PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega644PA-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 130; - n_interrupts = 31; - signature = 0x1e 0x96 0x0a; + "ATtiny828R-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", + "ATtiny828R-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]"; + mcuid = 36; ; #------------------------------------------------------------ -# ATmega1284 +# ATtiny87 #------------------------------------------------------------ -part # m1284 - desc = "ATmega1284"; - id = "m1284"; +part parent ".classic" # t87 + desc = "ATtiny87"; + id = "t87"; variants = - "ATmega1284-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1284-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1284-MU: MLF44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1284-MUR: MLF44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega1284-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 140; - n_interrupts = 35; - n_boot_sections = 4; - boot_section_size = 1024; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - chip_erase_delay = 55000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x97 0x06; + "ATtiny87: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny87-MU: VQFN32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny87-MUR: VQFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny87-SU: SOIC20, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny87-SUR: SOIC20, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny87-XU: TSSOP20, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny87-XUR: TSSOP20, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 27; + n_interrupts = 20; +# no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +# Try the AT90S2313 devcode: + avr910_devcode = 0x20; + chip_erase_delay = 15000; + pagel = 0xb3; + bs2 = 0xb2; + signature = 0x1e 0x93 0x87; reset = io; timeout = 200; stabdelay = 100; @@ -6555,14 +6334,18 @@ part # m1284 pollvalue = 0x53; predelay = 1; postdelay = 1; - pollmethod = 1; pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, + 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, + 0x06, 0x16, 0x46, 0x56, 0x0a, 0x1a, 0x4a, 0x5a, + 0x1e, 0x7c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 6; + latchcycles = 5; togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; @@ -6572,45 +6355,41 @@ part # m1284 programfusepolltimeout = 5; programlockpolltimeout = 5; idr = 0x31; - rampz = 0x3b; spmcr = 0x57; eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + ocdrev = 1; memory "eeprom" - size = 4096; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; + size = 512; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 8; - readsize = 128; - read = "1010.0000--00xx.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.aaaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; + blocksize = 4; + readsize = 256; + read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x20000; - page_size = 256; - num_pages = 512; + size = 8192; + page_size = 128; + num_pages = 64; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 128; - readsize = 128; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--00xx.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--00xx.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + blocksize = 64; + readsize = 256; + read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; ; memory "lfuse" @@ -6624,7 +6403,7 @@ part # m1284 memory "hfuse" size = 1; - initval = 0x99; + initval = 0xdf; min_write_delay = 9000; max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; @@ -6634,120 +6413,79 @@ part # m1284 memory "efuse" size = 1; initval = 0xff; - bitmask = 0x07; + bitmask = 0x01; min_write_delay = 9000; max_write_delay = 9000; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.1iii"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; + bitmask = 0x03; min_write_delay = 9000; max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; + write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; ; memory "sram" - size = 0x4000; - offset = 0x100; + size = 512; ; ; #------------------------------------------------------------ -# ATmega1284P +# ATtiny167 #------------------------------------------------------------ -part parent "m1284" # m1284p - desc = "ATmega1284P"; - id = "m1284p"; +part parent "t87" # t167 + desc = "ATtiny167"; + id = "t167"; variants = - "ATmega1284P-AN: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1284P-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1284P-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1284P-MN: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1284P-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1284P-MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1284P-PN: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1284P-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 141; - signature = 0x1e 0x97 0x05; + "ATtiny167: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny167-A15XD: TSSOP20, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", + "ATtiny167-MMU: WQFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny167-MMUR: WQFN20, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATtiny167-MU: VQFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny167-MUR: VQFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny167-SU: SOIC20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny167-SUR: SOIC20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny167-XU: TSSOP20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny167-XUR: TSSOP20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 29; + signature = 0x1e 0x94 0x87; + + memory "flash" + size = 0x4000; + num_pages = 128; + writepage = "0100.1100--000a.aaaa--aaxx.xxxx--xxxx.xxxx"; + ; ; #------------------------------------------------------------ -# ATmega162 +# ATtiny1634 #------------------------------------------------------------ -part # m162 - desc = "ATmega162"; - id = "m162"; +part parent ".classic" # t1634 + desc = "ATtiny1634"; + id = "t1634"; variants = - "ATmega162: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega162-16AC: TQFP44, Fmax=16 MHz, T=[0 C, 70 C], Vcc=[4.5 V, 5.5 V]", - "ATmega162-16AI: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162-16AJ: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162-16AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162-16AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162-16MC: VFQFN44, Fmax=16 MHz, T=[0 C, 70 C], Vcc=[4.5 V, 5.5 V]", - "ATmega162-16MI: VFQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162-16MJ: VFQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162-16MU: VFQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162-16MUR: VFQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162-16PC: DIP40, Fmax=16 MHz, T=[0 C, 70 C], Vcc=[4.5 V, 5.5 V]", - "ATmega162-16PI: DIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162-16PJ: DIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162-16PU: DIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162L-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162L-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162L-8MC: VFQFN44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162L-8MI: VFQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162L-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162L-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega162V-1AC: TQFP44, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[1.8 V, 3.6 V]", - "ATmega162V-1MC: VFQFN44, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[1.8 V, 3.6 V]", - "ATmega162V-1PC: DIP40, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[1.8 V, 3.6 V]", - "ATmega162V-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega162V-8AJ: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega162V-8AU: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega162V-8AUR: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega162V-8MI: VFQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega162V-8MJ: VFQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega162V-8MU: VFQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega162V-8MUR: VFQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega162V-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega162V-8PJ: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega162V-8PU: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; - mcuid = 90; + "ATtiny1634: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATtiny1634-MN: WQFN20, Fmax=12 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny1634-MNR: WQFN20, Fmax=12 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny1634-MU: QFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny1634-MUR: QFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny1634-SU: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny1634-SUR: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 40; n_interrupts = 28; - n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x83; - avr910_devcode = 0x63; + n_page_erase = 4; + stk500_devcode = 0x86; chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x94 0x04; + pagel = 0xb3; + bs2 = 0xb1; +# avr910_devcode = 0x??; + signature = 0x1e 0x94 0x12; reset = io; - allowfullpagebitstream = yes; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -6756,73 +6494,80 @@ part # m162 pollvalue = 0x53; predelay = 1; postdelay = 1; + pollmethod = 1; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 6; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; - idr = 0x04; + idr = 0x2e; spmcr = 0x57; eecr = 0x3c; - ocdrev = 2; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + ocdrev = 1; memory "eeprom" - size = 512; + size = 256; page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 3600; + max_write_delay = 3600; mode = 0x41; delay = 20; blocksize = 4; readsize = 256; - read = "1010.0000--00xx.xxaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; size = 0x4000; - page_size = 128; - num_pages = 128; + page_size = 32; + num_pages = 512; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 128; + blocksize = 32; readsize = 256; read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--00aa.aaaa--aaxx.xxxx--xxxx.xxxx"; + loadpage_lo = "0100.0000--000x.xxxx--xxxx.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxx.aaaa--iiii.iiii"; + writepage = "0100.1100--00aa.aaaa--aaaa.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 16000; - max_write_delay = 16000; + bitmask = 0xdf; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0x99; - min_write_delay = 16000; - max_write_delay = 16000; + initval = 0xdf; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -6830,71 +6575,67 @@ part # m162 memory "efuse" size = 1; initval = 0xff; - bitmask = 0x1e; - min_write_delay = 16000; - max_write_delay = 16000; + bitmask = 0x1f; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--111i.iii1"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxi.iiii"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 16000; - max_write_delay = 16000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--00xx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--00xx.xxxx--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; ; memory "sram" size = 1024; - offset = 0x100; ; ; #------------------------------------------------------------ -# ATmega163 +# ATtiny1634R #------------------------------------------------------------ -part # m163 - desc = "ATmega163"; - id = "m163"; +part parent "t1634" # t1634r + desc = "ATtiny1634R"; + id = "t1634r"; variants = - "ATmega163-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", - "ATmega163-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATmega163-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", - "ATmega163-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATmega163L-4AC: TQFP44, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATmega163L-4AI: TQFP44, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega163L-4PC: DIP40, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATmega163L-4PI: DIP40, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 91; - n_interrupts = 18; + "ATtiny1634R-MU: QFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny1634R-MUR: WQFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny1634R-SU: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATtiny1634R-SUR: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 41; +; + +#------------------------------------------------------------ +# AT90CAN32 +#------------------------------------------------------------ + +part parent ".classic" # c32 + desc = "AT90CAN32"; + id = "c32"; + variants = + "AT90CAN32: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90CAN32-16AI: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN32-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN32-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN32-16MI: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN32-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN32-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 171; + n_interrupts = 37; n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x81; - avr910_devcode = 0x64; - chip_erase_delay = 32000; - pagel = 0xd7; + boot_section_size = 1024; + stk500_devcode = 0xb3; + chip_erase_delay = 9000; + pagel = 0xd7; bs2 = 0xa0; - signature = 0x1e 0x94 0x02; +# avr910_devcode = 0x43; + signature = 0x1e 0x95 0x81; + reset = io; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -6903,132 +6644,191 @@ part # m163 pollvalue = 0x53; predelay = 1; postdelay = 1; + pollmethod = 1; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; hventerstabdelay = 100; + latchcycles = 6; hvleavestabdelay = 15; - chiperasepolltimeout = 30; - programfusepolltimeout = 2; - programlockpolltimeout = 2; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + spmcr = 0x57; + eecr = 0x3f; + ocdrev = 3; memory "eeprom" - size = 512; - min_write_delay = 4000; - max_write_delay = 4000; - readback = 0xff 0xff; + size = 1024; + page_size = 8; + min_write_delay = 9000; + max_write_delay = 9000; mode = 0x41; delay = 20; - blocksize = 4; + blocksize = 8; readsize = 256; - read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--000x.xxaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxaa--aaaa.a000--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x4000; - page_size = 128; + size = 0x8000; + page_size = 256; num_pages = 128; - min_write_delay = 16000; - max_write_delay = 16000; - readback = 0xff 0xff; - mode = 0x11; - delay = 20; - blocksize = 128; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 10; + blocksize = 256; readsize = 256; - read_lo = "0010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--xxxa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0xdf; - bitmask = 0xef; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0101.0000--0000.0000--xxxx.xxxx--ooxx.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--ii11.iiii"; + initval = 0x62; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0xff; - bitmask = 0x07; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0101.1000--0000.1000--xxxx.xxxx--xxxx.1ooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--1111.1iii"; + initval = 0x99; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "lock" + memory "efuse" size = 1; initval = 0xff; + bitmask = 0x0f; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; + ; + + memory "lock" bitmask = 0x3f; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0101.1000--0000.0000--xxxx.0xxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + min_write_delay = 9000; + max_write_delay = 9000; ; +; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; +#------------------------------------------------------------ +# AT90CAN64 +#------------------------------------------------------------ + +part parent "c32" # c64 + desc = "AT90CAN64"; + id = "c64"; + variants = + "AT90CAN64: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90CAN64-16AI: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN64-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN64-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN64-16MI: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN64-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN64-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]"; + mcuid = 172; +# avr910_devcode = 0x43; + signature = 0x1e 0x96 0x81; + + memory "eeprom" + size = 2048; + read = "1010.0000--000x.xaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xaaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xaaa--aaaa.a000--xxxx.xxxx"; ; - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; + memory "flash" + size = 0x10000; + num_pages = 256; ; memory "sram" - size = 1024; - offset = 0x60; + size = 4096; ; ; #------------------------------------------------------------ -# ATmega169 +# AT90CAN128 #------------------------------------------------------------ -part # m169 - desc = "ATmega169"; - id = "m169"; +part parent "c32" # c128 + desc = "AT90CAN128"; + id = "c128"; variants = - "ATmega169: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega169-16AI: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169-16MI: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169-16MU: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169L-4AC: TQFP64, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169L-4MC: VFQFN64, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169L-8AI: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169L-8MI: VFQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169V-1AC: TQFP64, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169V-1MC: VFQFN64, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169V-8AI: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169V-8MI: VFQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169V-8MU: VFQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + "AT90CAN128: N/A, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, N/A]", + "AT90CAN128-15AZ: TQFP64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN128-16AI: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN128-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN128-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN128-16MI: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN128-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90CAN128-16MUR: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; - mcuid = 104; - n_interrupts = 23; + mcuid = 176; +# avr910_devcode = 0x43; + signature = 0x1e 0x97 0x81; + rampz = 0x3b; + + memory "eeprom" + size = 4096; + read = "1010.0000--000x.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.aaaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; + ; + + memory "flash" + size = 0x20000; + num_pages = 512; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# AT90PWM81 +#------------------------------------------------------------ + +part parent ".classic" # pwm81 + desc = "AT90PWM81"; + id = "pwm81"; + variants = + "AT90PWM81: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM81-16MF: QFN32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM81-16MN: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM81-16SF: SOIC20, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM81-16SN: SOIC20, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM81EP-16MN: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 173; + n_interrupts = 20; n_boot_sections = 4; boot_section_size = 256; - stk500_devcode = 0x85; - avr910_devcode = 0x78; chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x94 0x05; + pagel = 0xe2; + bs2 = 0xd6; + signature = 0x1e 0x93 0x88; + reset = io; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -7039,60 +6839,61 @@ part # m169 postdelay = 1; pollmethod = 1; pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, + 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, + 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, + 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; latchcycles = 5; togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; hvleavestabdelay = 15; + resetdelay = 15; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; idr = 0x31; spmcr = 0x57; - eecr = 0x3f; - ocdrev = 2; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3c; + ocdrev = 1; memory "eeprom" size = 512; page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; - readback = 0xff 0xff; + min_write_delay = 3600; + max_write_delay = 3600; mode = 0x41; - delay = 20; + delay = 5; blocksize = 4; readsize = 256; - read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--0000.000a--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.000a--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--0000.000a--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x4000; - page_size = 128; + size = 8192; + page_size = 64; num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; - readback = 0xff 0xff; mode = 0x41; - delay = 6; - blocksize = 128; + delay = 10; + blocksize = 64; readsize = 256; - read_lo = "0010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--xxxa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--000a.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--000a.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aaa0.0000--xxxx.xxxx"; ; memory "lfuse" @@ -7106,7 +6907,7 @@ part # m169 memory "hfuse" size = 1; - initval = 0x99; + initval = 0xd9; min_write_delay = 4500; max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; @@ -7115,203 +6916,77 @@ part # m169 memory "efuse" size = 1; - initval = 0xff; - bitmask = 0x0f; + initval = 0xfd; min_write_delay = 4500; max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; + write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; min_write_delay = 4500; max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; ; memory "sram" - size = 1024; - offset = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega169A -#------------------------------------------------------------ - -part parent "m169" # m169a - desc = "ATmega169A"; - id = "m169a"; - variants = - "ATmega169A-AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169A-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169A-MCH: DRQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169A-MN: QFN64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169A-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169A-MUR: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 105; - signature = 0x1e 0x94 0x11; - reset = io; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelay = 15; - - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; - readback = 0x00 0x00; - ; - - memory "flash" - readback = 0x00 0x00; - delay = 10; - ; - - memory "io" - size = 224; - offset = 0x20; - ; -; - -#------------------------------------------------------------ -# ATmega169P -#------------------------------------------------------------ - -part parent "m169" # m169p - desc = "ATmega169P"; - id = "m169p"; - variants = - "ATmega169P: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega169P-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169P-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169P-16MCH: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169P-16MCHR: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega169P-16MCU: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169P-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega169P-16MUR: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega169PV-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PV-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PV-8MCH: QFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PV-8MCHR: QFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega169PV-8MCU: VQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PV-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PV-8MUR: QFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 106; - reset = io; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelay = 15; - - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; - readback = 0x00 0x00; - ; - - memory "flash" - readback = 0x00 0x00; - delay = 10; - ; - - memory "io" - size = 224; - offset = 0x20; + size = 256; ; ; #------------------------------------------------------------ -# ATmega169PA +# AT90PWM161 #------------------------------------------------------------ -part parent "m169" # m169pa - desc = "ATmega169PA"; - id = "m169pa"; +part parent "pwm81" # pwm161 + desc = "AT90PWM161"; + id = "pwm161"; variants = - "ATmega169PA-AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PA-ANR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PA-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PA-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PA-MCH: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PA-MCHR: QFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega169PA-MN: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PA-MNR: QFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega169PA-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega169PA-MUR: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 107; - reset = io; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelay = 15; - - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; - readback = 0x00 0x00; - ; + "AT90PWM161: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM161-16MN: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM161-16MNR: QFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM161-16SN: SOIC20, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM161-16SNR: SOIC20, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]"; + mcuid = 177; + signature = 0x1e 0x94 0x8b; memory "flash" - readback = 0x00 0x00; - delay = 10; + size = 0x4000; + page_size = 128; + read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; + writepage = "0100.1100--000a.aaaa--aa00.0000--xxxx.xxxx"; ; - memory "io" - size = 224; - offset = 0x20; + memory "sram" + size = 1024; ; ; #------------------------------------------------------------ -# ATmega329 +# AT90PWM1 #------------------------------------------------------------ -part # m329 - desc = "ATmega329"; - id = "m329"; +part parent ".classic" # pwm1 + desc = "AT90PWM1"; + id = "pwm1"; variants = - "ATmega329: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega329-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega329-16AUR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega329-16MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega329-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega329V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329V-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329V-8MUR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 121; - n_interrupts = 23; + "AT90PWM1: SOIC24, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM1-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM1-16MUR: QFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM1-16SU: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 166; + n_interrupts = 32; n_boot_sections = 4; - boot_section_size = 512; -# stk500_devcode = 0x85; # no STK500 support, only STK500v2 -# avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; + boot_section_size = 256; chip_erase_delay = 9000; pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x95 0x03; + bs2 = 0xe2; + signature = 0x1e 0x93 0x83; reset = io; timeout = 200; stabdelay = 100; @@ -7327,8 +7002,16 @@ part # m329 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 6; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; @@ -7337,45 +7020,42 @@ part # m329 idr = 0x31; spmcr = 0x57; eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + ocdrev = 1; memory "eeprom" - size = 1024; + size = 512; page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 3600; + max_write_delay = 3600; mode = 0x41; - delay = 10; + delay = 5; blocksize = 4; readsize = 256; - read = "1010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--0000.000a--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.000a--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--0000.000a--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x8000; - page_size = 128; - num_pages = 256; + size = 8192; + page_size = 64; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 128; + blocksize = 64; readsize = 256; - read_lo = "0010.0000--xaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--xaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--000a.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--000a.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aaa0.0000--xxxx.xxxx"; + ; + + memory "lfuse" size = 1; initval = 0x62; min_write_delay = 4500; @@ -7386,7 +7066,7 @@ part # m329 memory "hfuse" size = 1; - initval = 0x99; + initval = 0xdf; min_write_delay = 4500; max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; @@ -7395,232 +7075,48 @@ part # m329 memory "efuse" size = 1; - initval = 0xff; - bitmask = 0x07; + initval = 0xf9; + bitmask = 0xb7; min_write_delay = 4500; max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + read = "0101.0000--0000.1000--xxxx.xxxx--o1oo.1ooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--i1ii.1iii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; min_write_delay = 4500; max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; ; memory "sram" - size = 2048; - offset = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega329A -#------------------------------------------------------------ - -part parent "m329" # m329a - desc = "ATmega329A"; - id = "m329a"; - variants = - "ATmega329A-AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329A-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329A-AUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega329A-MN: QFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329A-MU: VQFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 122; - - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; - ; -; - -#------------------------------------------------------------ -# ATmega329P -#------------------------------------------------------------ - -part parent "m329" # m329p - desc = "ATmega329P"; - id = "m329p"; - variants = - "ATmega329P: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega329P-20AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329P-20ANR: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega329P-20AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega329P-20AUR: TQFP64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega329P-20MN: VQFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega329P-20MNR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega329P-20MU: MLF64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega329P-20MUR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega329PV-10AU: TQFP64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329PV-10AUR: TQFP64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329PV-10MN: VQFN64, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329PV-10MU: MLF64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329PV-10MUR: VQFN64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 123; - signature = 0x1e 0x95 0x0b; - - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; - ; -; - -#------------------------------------------------------------ -# ATmega329PA -#------------------------------------------------------------ - -part parent "m329" # m329pa - desc = "ATmega329PA"; - id = "m329pa"; - variants = - "ATmega329PA-AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329PA-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329PA-AUR: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329PA-MN: QFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329PA-MU: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega329PA-MUR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; - mcuid = 124; - signature = 0x1e 0x95 0x0b; - - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; - ; -; - -#------------------------------------------------------------ -# ATmega3290 -#------------------------------------------------------------ - -part parent "m329" # m3290 - desc = "ATmega3290"; - id = "m3290"; - variants = - "ATmega3290: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega3290-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega3290-16AUR: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega3290V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega3290V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 150; - n_interrupts = 25; - signature = 0x1e 0x95 0x04; -; - -#------------------------------------------------------------ -# ATmega3290A -#------------------------------------------------------------ - -part parent "m329" # m3290a - desc = "ATmega3290A"; - id = "m3290a"; - variants = - "ATmega3290A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega3290A-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega3290A-AUR: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 151; - n_interrupts = 25; - signature = 0x1e 0x95 0x04; - - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; - ; -; - -#------------------------------------------------------------ -# ATmega3290P -#------------------------------------------------------------ - -part parent "m329" # m3290p - desc = "ATmega3290P"; - id = "m3290p"; - variants = - "ATmega3290P: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega3290P-20AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega3290P-20AUR: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega3290PV-10AU: TQFP100, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega3290PV-10AUR: TQFP100, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 152; - n_interrupts = 25; - signature = 0x1e 0x95 0x0c; - - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; - ; -; - -#------------------------------------------------------------ -# ATmega3290PA -#------------------------------------------------------------ - -part parent "m329" # m3290pa - desc = "ATmega3290PA"; - id = "m3290pa"; - variants = - "ATmega3290PA: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega3290PA-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega3290PA-AUR: TQFP100, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; - mcuid = 153; - n_interrupts = 25; - signature = 0x1e 0x95 0x0c; - - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; + size = 512; ; ; #------------------------------------------------------------ -# ATmega649 +# AT90PWM2 #------------------------------------------------------------ -part # m649 - desc = "ATmega649"; - id = "m649"; +part parent ".classic" # pwm2 + desc = "AT90PWM2"; + id = "pwm2"; variants = - "ATmega649: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega649-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega649-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega649-16MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega649-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega649V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega649V-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega649V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega649V-8MUR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 135; - n_interrupts = 23; + "AT90PWM2: SOIC24, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM2-16SQ: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM2-16SQR: SOIC24, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 167; + n_interrupts = 32; n_boot_sections = 4; - boot_section_size = 1024; -# stk500_devcode = 0x85; # no STK500 support, only STK500v2 -# avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; + boot_section_size = 256; + stk500_devcode = 0x65; chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x96 0x03; + pagel = 0xd8; + bs2 = 0xe2; +# avr910_devcode = ?; + signature = 0x1e 0x93 0x81; reset = io; timeout = 200; stabdelay = 100; @@ -7636,251 +7132,214 @@ part # m649 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; latchcycles = 5; togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; hvleavestabdelay = 15; - resetdelay = 15; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; - idr = 0x31; spmcr = 0x57; eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 2048; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; + size = 512; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback = 0xff 0xff; mode = 0x41; - delay = 10; + delay = 6; blocksize = 4; readsize = 256; - read = "1010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--00xx.xaaa--aaaa.a000--xxxx.xxxx"; - ; + read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + ; memory "flash" paged = yes; - size = 0x10000; - page_size = 256; - num_pages = 256; + size = 8192; + page_size = 64; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; + readback = 0xff 0xff; mode = 0x41; - delay = 10; - blocksize = 128; + delay = 6; + blocksize = 64; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 4500; - max_write_delay = 4500; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0x99; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0xdf; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; memory "efuse" size = 1; - initval = 0xff; - bitmask = 0x07; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0xf9; + bitmask = 0xf7; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; + min_write_delay = 9000; + max_write_delay = 9000; ; memory "sram" - size = 4096; - offset = 0x100; + size = 512; ; ; #------------------------------------------------------------ -# ATmega649A +# AT90PWM2B #------------------------------------------------------------ +# Same as AT90PWM2 but different signature. -part parent "m649" # m649a - desc = "ATmega649A"; - id = "m649a"; +part parent "pwm2" # pwm2b + desc = "AT90PWM2B"; + id = "pwm2b"; variants = - "ATmega649A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega649A-AUR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega649A-MU: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega649A-MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 136; + "AT90PWM2B: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM2B-16SU: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM2B-16SUR: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 168; + signature = 0x1e 0x93 0x83; + resetdelay = 15; + idr = 0x31; + ocdrev = 1; memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; + readback = 0x00 0x00; + delay = 5; + ; + + memory "flash" + readback = 0x00 0x00; + delay = 10; ; ; #------------------------------------------------------------ -# ATmega649P +# AT90PWM3 #------------------------------------------------------------ -part parent "m649" # m649p - desc = "ATmega649P"; - id = "m649p"; +# Completely identical to AT90PWM2 (including the signature!) + +part parent "pwm1" # pwm3 + desc = "AT90PWM3"; + id = "pwm3"; variants = - "ATmega649P-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega649P-AUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega649P-MU: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega649P-MUR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; - mcuid = 137; - signature = 0x1e 0x96 0x0b; + "AT90PWM3: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM3-16MQ: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM3-16MQT: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 169; + stk500_devcode = 0x65; + pagel = 0xd8; + signature = 0x1e 0x93 0x81; memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; + min_write_delay = 4000; + max_write_delay = 4500; ; -; - -#------------------------------------------------------------ -# ATmega6490 -#------------------------------------------------------------ -part parent "m649" # m6490 - desc = "ATmega6490"; - id = "m6490"; - variants = - "ATmega6490: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega6490-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega6490-16AUR: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega6490V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega6490V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 157; - n_interrupts = 25; - signature = 0x1e 0x96 0x04; -; + memory "lfuse" + min_write_delay = 9000; + max_write_delay = 9000; + ; -#------------------------------------------------------------ -# ATmega6490A -#------------------------------------------------------------ + memory "hfuse" + min_write_delay = 9000; + max_write_delay = 9000; + ; -part parent "m649" # m6490a - desc = "ATmega6490A"; - id = "m6490a"; - variants = - "ATmega6490A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega6490A-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega6490A-AUR: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 158; - n_interrupts = 25; - signature = 0x1e 0x96 0x04; + memory "efuse" + bitmask = 0xf7; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; + ; - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; + memory "lock" + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; ; ; #------------------------------------------------------------ -# ATmega6490P +# AT90PWM3B #------------------------------------------------------------ -part parent "m649" # m6490p - desc = "ATmega6490P"; - id = "m6490p"; - variants = - "ATmega6490P: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega6490P-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega6490P-AUR: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 159; - n_interrupts = 25; - signature = 0x1e 0x96 0x0c; +# Completely identical to AT90PWM2B (including the signature!) - memory "eeprom" - min_write_delay = 3600; - max_write_delay = 3600; - ; +part parent "pwm3" # pwm3b + desc = "AT90PWM3B"; + id = "pwm3b"; + variants = + "AT90PWM3B: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM3B-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM3B-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 170; + signature = 0x1e 0x93 0x83; ; #------------------------------------------------------------ -# ATmega32 +# AT90PWM216 #------------------------------------------------------------ +# Completely identical to AT90PWM316 (including the signature!) -part # m32 - desc = "ATmega32"; - id = "m32"; +part parent ".classic" # pwm216 + desc = "AT90PWM216"; + id = "pwm216"; variants = - "ATmega32: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega32-16AQ: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega32-16AQR: TQFP44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega32-16AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega32-16AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega32-16MU: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega32-16MUR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega32-16PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega32L-8AU: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32L-8AUR: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32L-8MU: MLF44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32L-8MUR: VQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32L-8PU: PDIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; - mcuid = 58; - n_interrupts = 21; + "AT90PWM216: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM216-16SU: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM216-16SUR: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 179; + n_interrupts = 32; n_boot_sections = 4; boot_section_size = 512; - stk500_devcode = 0x91; - avr910_devcode = 0x72; + stk500_devcode = 0x65; chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x95 0x02; + pagel = 0xd8; + bs2 = 0xe2; + signature = 0x1e 0x94 0x83; reset = io; - allowfullpagebitstream = yes; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -7889,13 +7348,22 @@ part # m32 pollvalue = 0x53; predelay = 1; postdelay = 1; + pollmethod = 1; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 6; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; @@ -7903,37 +7371,32 @@ part # m32 programlockpolltimeout = 5; idr = 0x31; spmcr = 0x57; - eecr = 0x3c; - ocdrev = 2; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3f; + ocdrev = 1; memory "eeprom" - size = 1024; + size = 512; page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 64; + min_write_delay = 4000; + max_write_delay = 4500; + mode = 0x41; + delay = 5; + blocksize = 4; readsize = 256; - read = "1010.0000--00xx.xxaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x8000; + size = 0x4000; page_size = 128; - num_pages = 256; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; - readback = 0xff 0x00; - mode = 0x21; + mode = 0x41; delay = 10; blocksize = 64; readsize = 256; @@ -7946,80 +7409,85 @@ part # m32 memory "lfuse" size = 1; - initval = 0xe1; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0x62; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0x99; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0xdf; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "lock" + memory "efuse" size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + initval = 0xf9; + bitmask = 0xf7; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "lock" + bitmask = 0x3f; + min_write_delay = 9000; + max_write_delay = 9000; ; - memory "calibration" - size = 4; - read = "0011.1000--00xx.xxxx--0000.00aa--oooo.oooo"; + memory "sram" + size = 1024; ; +; - memory "io" - size = 64; - offset = 0x20; - ; +#------------------------------------------------------------ +# AT90PWM316 +#------------------------------------------------------------ - memory "sram" - size = 2048; - offset = 0x60; - ; +# Similar to AT90PWM3B, but with 16 kiB flash, 512 B EEPROM, and 1024 B SRAM. + +part parent "pwm216" # pwm316 + desc = "AT90PWM316"; + id = "pwm316"; + variants = + "AT90PWM316: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90PWM316-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "AT90PWM316-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 180; ; #------------------------------------------------------------ -# ATmega161 +# AT90USB646 #------------------------------------------------------------ -part # m161 - desc = "ATmega161"; - id = "m161"; +part parent ".classic" # usb646 + desc = "AT90USB646"; + id = "usb646"; variants = - "ATmega161-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", - "ATmega161-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATmega161-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", - "ATmega161-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", - "ATmega161L-4AC: TQFP44, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATmega161L-4AI: TQFP44, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega161L-4PC: DIP40, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", - "ATmega161L-4PI: DIP40, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 89; - n_interrupts = 21; - n_boot_sections = 1; + "AT90USB646: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90USB646-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB646-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB646-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB646-MUR: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 181; + n_interrupts = 38; + n_boot_sections = 4; boot_section_size = 1024; - stk500_devcode = 0x80; - avr910_devcode = 0x60; - chip_erase_delay = 28000; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; pagel = 0xd7; bs2 = 0xa0; - signature = 0x1e 0x94 0x01; + signature = 0x1e 0x96 0x82; + usbpid = 0x2ff9; + reset = io; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -8028,140 +7496,222 @@ part # m161 pollvalue = 0x53; predelay = 1; postdelay = 1; + pollmethod = 1; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; hvleavestabdelay = 15; - chiperasepolltimeout = 30; - programfusepolltimeout = 2; - programlockpolltimeout = 2; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + spmcr = 0x57; + eecr = 0x3f; + ocdrev = 3; memory "eeprom" - size = 512; - min_write_delay = 3400; - max_write_delay = 3400; - readback = 0xff 0xff; - mode = 0x04; - delay = 5; - blocksize = 128; + size = 2048; + page_size = 8; + min_write_delay = 9000; + max_write_delay = 9000; + mode = 0x41; + delay = 10; + blocksize = 8; readsize = 256; - read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--00xx.xaaa--aaaa.a000--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x4000; - page_size = 128; - num_pages = 128; - min_write_delay = 14000; - max_write_delay = 14000; - readback = 0xff 0xff; - mode = 0x21; - delay = 16; - blocksize = 128; + size = 0x10000; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 6; + blocksize = 256; readsize = 256; - read_lo = "0010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--xxxa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--0aaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; - memory "fuse" + memory "lfuse" size = 1; - initval = 0xda; - bitmask = 0x77; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0101.0000--xxxx.xxxx--xxxx.xxxx--xoxo.oooo"; - write = "1010.1100--101x.xxxx--xxxx.xxxx--1i1i.1iii"; + initval = 0x5e; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; - memory "lock" + memory "hfuse" size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + initval = 0x9b; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "efuse" + size = 1; + initval = 0xf3; + bitmask = 0x0f; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; + ; + + memory "lock" + bitmask = 0x3f; + min_write_delay = 9000; + max_write_delay = 9000; ; memory "sram" - size = 1024; - offset = 0x60; + size = 4096; ; ; #------------------------------------------------------------ -# ATmega32A +# AT90USB647 #------------------------------------------------------------ +# identical to AT90USB646 -part parent "m32" # m32a - desc = "ATmega32A"; - id = "m32a"; +part parent "usb646" # usb647 + desc = "AT90USB647"; + id = "usb647"; variants = - "ATmega32A-AN: TQFP44, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32A-ANR: TQFP44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega32A-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32A-AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32A-MN: VQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32A-MNR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega32A-MU: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32A-MUR: VQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32A-PN: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32A-PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 59; -; - -#------------------------------------------------------------ -# ATmega8 + "AT90USB647: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90USB647-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB647-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB647-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB647-MUR: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 182; +; + +#------------------------------------------------------------ +# AT90USB1286 #------------------------------------------------------------ -part # m8 - desc = "ATmega8"; - id = "m8"; +part parent "usb646" # usb1286 + desc = "AT90USB1286"; + id = "usb1286"; variants = - "ATmega8: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega8-16AN: TQFP32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8-16AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8-16AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8-16MN: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8-16MU: MLF32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8-16MUR: MLF32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8-16PN: PDIP28, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8-16PU: PDIP28, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8L-8AN: TQFP32, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8L-8AU: TQFP32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8L-8AUR: TQFP32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8L-8MN: QFN32, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8L-8MU: MLF32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8L-8MUR: VQFN32, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega8L-8PN: PDIP28, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8L-8PU: PDIP28, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 45; - n_interrupts = 19; + "AT90USB1286: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90USB1286-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB1286-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB1286-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB1286-MUR: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 184; + signature = 0x1e 0x97 0x82; + usbpid = 0x2ffb; + rampz = 0x3b; + + memory "eeprom" + size = 4096; + read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; + ; + + memory "flash" + size = 0x20000; + num_pages = 512; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + ; + + memory "hfuse" + initval = 0x99; + ; + + memory "sram" + size = 8192; + ; +; + +#------------------------------------------------------------ +# AT90USB1287 +#------------------------------------------------------------ +# identical to AT90USB1286 + +part parent "usb646" # usb1287 + desc = "AT90USB1287"; + id = "usb1287"; + variants = + "AT90USB1287: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90USB1287-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB1287-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB1287-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB1287-MUR: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 185; + signature = 0x1e 0x97 0x82; + usbpid = 0x2ffb; + rampz = 0x3b; + + memory "eeprom" + size = 4096; + read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; + ; + + memory "flash" + size = 0x20000; + num_pages = 512; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + ; + + memory "hfuse" + initval = 0x99; + ; + + memory "sram" + size = 8192; + ; +; + +#------------------------------------------------------------ +# AT90USB82 +#------------------------------------------------------------ + +part parent ".classic" # usb82 + desc = "AT90USB82"; + id = "usb82"; + variants = + "AT90USB82: QFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90USB82-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB82-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 174; + n_interrupts = 29; n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x70; - avr910_devcode = 0x76; + boot_section_size = 512; chip_erase_delay = 9000; pagel = 0xd7; - bs2 = 0xc2; - signature = 0x1e 0x93 0x07; + bs2 = 0xc6; + signature = 0x1e 0x93 0x82; + usbpid = 0x2ff7; reset = io; timeout = 200; stabdelay = 100; @@ -8171,63 +7721,71 @@ part # m8 pollvalue = 0x53; predelay = 1; postdelay = 1; + pollmethod = 1; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; latchcycles = 5; togglevtg = 1; poweroffdelay = 15; - resetdelayms = 2; + resetdelayms = 1; hvleavestabdelay = 15; resetdelay = 15; - chiperasepolltimeout = 20; - programfusepolltimeout = 10; - programlockpolltimeout = 10; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + spmcr = 0x57; + eecr = 0x3f; + ocdrev = 1; memory "eeprom" size = 512; page_size = 4; + num_pages = 128; min_write_delay = 9000; max_write_delay = 9000; - readback = 0xff 0xff; - mode = 0x04; + mode = 0x41; delay = 20; - blocksize = 128; + blocksize = 4; readsize = 256; - read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.aaaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--0000.aaaa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; size = 8192; - page_size = 64; - num_pages = 128; + page_size = 128; + num_pages = 64; min_write_delay = 4500; max_write_delay = 4500; - readback = 0xff 0x00; - mode = 0x21; - delay = 10; - blocksize = 64; + mode = 0x41; + delay = 6; + blocksize = 128; readsize = 256; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0xe1; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0x5e; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; @@ -8235,105 +7793,103 @@ part # m8 memory "hfuse" size = 1; initval = 0xd9; - min_write_delay = 4500; - max_write_delay = 4500; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "lock" + memory "efuse" size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + initval = 0xf4; + bitmask = 0x0f; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; ; - memory "signature" - size = 3; - read = "0011.0000--00xx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "lock" + bitmask = 0x3f; + min_write_delay = 9000; + max_write_delay = 9000; ; - memory "calibration" - size = 4; - read = "0011.1000--00xx.xxxx--0000.00aa--oooo.oooo"; + memory "sram" + size = 512; ; +; - memory "io" - size = 64; - offset = 0x20; - ; +#------------------------------------------------------------ +# AT90USB162 +#------------------------------------------------------------ - memory "sram" - size = 1024; - offset = 0x60; +part parent "usb82" # usb162 + desc = "AT90USB162"; + id = "usb162"; + variants = + "AT90USB162: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "AT90USB162-16AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB162-16AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB162-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "AT90USB162-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 178; + signature = 0x1e 0x94 0x82; + usbpid = 0x2ffa; + + memory "flash" + size = 0x4000; + num_pages = 128; ; ; #------------------------------------------------------------ -# ATmega8A +# AT90S1200 #------------------------------------------------------------ -part parent "m8" # m8a - desc = "ATmega8A"; - id = "m8a"; +part parent ".classic-nocal" # 1200 + desc = "AT90S1200"; + id = "1200"; variants = - "ATmega8A: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega8A-AN: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8A-ANR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8A-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8A-AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8A-MN: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8A-MNR: VQFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8A-MU: VQFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8A-MUR: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8A-PN: PDIP28, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8A-PU: PDIP28, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 46; -; - -#------------------------------------------------------------ -# ATmega8515 -#------------------------------------------------------------ - -part # m8515 - desc = "ATmega8515"; - id = "m8515"; - variants = - "ATmega8515: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega8515-16AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8515-16AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8515-16JU: PLCC44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8515-16JUR: PLCC44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8515-16MU: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8515-16MUR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega8515-16PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8515L-8AU: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8515L-8AUR: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8515L-8JU: PLCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8515L-8JUR: PLCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8515L-8MU: MLF44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8515L-8MUR: VQFN44, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega8515L-8PU: PDIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + "AT90S1200-12PC: DIP20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S1200-12PI: DIP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S1200-12SC: SOIC20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S1200-12SI: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S1200-12YC: SSOP20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S1200-12YI: SSOP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S1200-4PC: DIP20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S1200-4PI: DIP20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", + "AT90S1200-4SC: SOIC20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S1200-4SI: SOIC20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", + "AT90S1200-4YC: SSOP20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S1200-4YI: SSOP20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", + "AT90S1200A-12PC: DIP20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S1200A-12PI: DIP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S1200A-12SC: SOIC20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S1200A-12SI: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S1200A-12YC: SSOP20, Fmax=12 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S1200A-12YI: SSOP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S1200A-4PC: DIP20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S1200A-4PI: DIP20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", + "AT90S1200A-4SC: SOIC20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S1200A-4SI: SOIC20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", + "AT90S1200A-4YC: SSOP20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S1200A-4YI: SSOP20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 160; - n_interrupts = 17; - n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x63; - avr910_devcode = 0x3a; - chip_erase_delay = 9000; + mcuid = 183; + n_interrupts = 4; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + chip_erase_delay = 20000; pagel = 0xd7; bs2 = 0xa0; - signature = 0x1e 0x93 0x06; + signature = 0x1e 0x90 0x01; + is_at90s1200 = yes; timeout = 200; stabdelay = 100; cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; + synchloops = 1; + pollvalue = 0xff; predelay = 1; postdelay = 1; pp_controlstack = @@ -8342,131 +7898,89 @@ part # m8515 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; - latchcycles = 6; hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; + chiperasepulsewidth = 15; + programfusepulsewidth = 2; + programlockpolltimeout = 1; factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; + chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 512; - min_write_delay = 9000; + size = 64; + min_write_delay = 4000; max_write_delay = 9000; - readback = 0xff 0xff; + readback = 0x00 0xff; mode = 0x04; delay = 20; - blocksize = 128; + blocksize = 32; readsize = 256; - read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--xxxx.xxxx--xxaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; ; memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback = 0xff 0x00; - mode = 0x21; - delay = 10; - blocksize = 64; + size = 1024; + min_write_delay = 4000; + max_write_delay = 9000; + readback = 0xff 0xff; + mode = 0x02; + delay = 15; + blocksize = 128; readsize = 256; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0xe1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + read_lo = "0010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + write_lo = "0100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + write_hi = "0100.1000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; ; - memory "hfuse" + memory "fuse" size = 1; - initval = 0xd9; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + initval = 0xdf; + bitmask = 0x21; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 4; - read = "0011.1000--00xx.xxxx--0000.00aa--oooo.oooo"; + bitmask = 0x06; + min_write_delay = 9000; + max_write_delay = 20000; + read = NULL; + write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; ; memory "io" size = 64; - offset = 0x20; ; memory "sram" - size = 512; + size = 32; offset = 0x60; ; ; #------------------------------------------------------------ -# ATmega8535 +# AT90S2313 #------------------------------------------------------------ -part # m8535 - desc = "ATmega8535"; - id = "m8535"; +part parent ".classic-nocal" # 2313 + desc = "AT90S2313"; + id = "2313"; variants = - "ATmega8535: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega8535-16AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8535-16AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8535-16JU: PLCC44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8535-16JUR: PLCC44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8535-16MU: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8535-16MUR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega8535-16PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega8535L-8AU: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8535L-8AUR: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8535L-8JU: PLCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8535L-8JUR: PLCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8535L-8MU: MLF44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8535L-8MUR: MLF44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8535L-8PU: PDIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + "AT90S2313-10PC: DIP20, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S2313-10PI: DIP20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S2313-10SC: SOIC20, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S2313-10SI: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S2313-4PC: DIP20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S2313-4PI: DIP20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", + "AT90S2313-4SC: SOIC20, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S2313-4SI: SOIC20, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP; - mcuid = 161; - n_interrupts = 21; - n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x64; - avr910_devcode = 0x69; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x93 0x08; + mcuid = 186; + n_interrupts = 11; + stk500_devcode = 0x40; + avr910_devcode = 0x20; + chip_erase_delay = 20000; + signature = 0x1e 0x91 0x01; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -8481,125 +7995,85 @@ part # m8535 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; - latchcycles = 6; hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; + chiperasepulsewidth = 15; + programfusepulsewidth = 2; + programlockpolltimeout = 1; factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; + chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 512; - min_write_delay = 9000; + size = 128; + min_write_delay = 4000; max_write_delay = 9000; - readback = 0xff 0xff; + readback = 0x80 0x7f; mode = 0x04; - delay = 20; - blocksize = 128; + delay = 12; + blocksize = 64; readsize = 256; - read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; ; memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback = 0xff 0x00; - mode = 0x21; - delay = 10; - blocksize = 64; + size = 2048; + min_write_delay = 4000; + max_write_delay = 9000; + readback = 0x7f 0x7f; + mode = 0x04; + delay = 12; + blocksize = 128; readsize = 256; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0xe1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + read_lo = "0010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; + write_lo = "0100.0000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; + write_hi = "0100.1000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; ; - memory "hfuse" + memory "fuse" size = 1; - initval = 0xd9; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + initval = 0xdf; + bitmask = 0x21; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 4; - read = "0011.1000--00xx.xxxx--0000.00aa--oooo.oooo"; + bitmask = 0x06; + min_write_delay = 9000; + max_write_delay = 9000; + read = NULL; + write = "1010.1100--111x.xiix--xxxx.xxxx--xxxx.xxxx"; ; memory "io" size = 64; - offset = 0x20; ; memory "sram" - size = 512; + size = 128; offset = 0x60; ; ; #------------------------------------------------------------ -# ATtiny26 +# AT90S2323 #------------------------------------------------------------ -part # t26 - desc = "ATtiny26"; - id = "t26"; +part parent ".classic-nocal" # 2323 + desc = "AT90S2323"; + id = "2323"; variants = - "ATtiny26: N/A, Fmax=16 MHz, T=[N/A, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny26-16MU: MLF32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATtiny26-16MUR: VQFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATtiny26-16PU: PDIP20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATtiny26-16SU: SOIC20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATtiny26-16SUR: SOIC20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATtiny26L-8MU: MLF32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny26L-8MUR: VQFN32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny26L-8PU: PDIP20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny26L-8SU: SOIC20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny26L-8SUR: SOIC20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_ISP | PM_HVPP; - mcuid = 17; - n_interrupts = 12; - stk500_devcode = 0x21; - avr910_devcode = 0x5e; - chip_erase_delay = 9000; - pagel = 0xb3; - bs2 = 0xb2; - signature = 0x1e 0x91 0x09; + "AT90S2323-10PC: DIP8, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S2323-10PI: DIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S2323-10SC: SOIC8, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S2323-10SI: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP; + mcuid = 187; + n_interrupts = 3; + stk500_devcode = 0x41; + avr910_devcode = 0x48; + chip_erase_delay = 18000; + signature = 0x1e 0x91 0x02; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -8608,21 +8082,21 @@ part # t26 pollvalue = 0x53; predelay = 1; postdelay = 1; - pp_controlstack = - 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, - 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, - 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, - 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hvsp_controlstack = + 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 20; - programfusepolltimeout = 10; - programlockpolltimeout = 10; + latchcycles = 1; + poweroffdelay = 25; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + synchcycles = 6; factory_fcpu = 1000000; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; @@ -8630,77 +8104,51 @@ part # t26 memory "eeprom" size = 128; min_write_delay = 9000; - max_write_delay = 9000; - readback = 0xff 0xff; + max_write_delay = 20000; + readback = 0x00 0xff; mode = 0x04; - delay = 20; + delay = 12; blocksize = 64; readsize = 256; - read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + read = "1010.0000--0000.0000--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.0000--xaaa.aaaa--iiii.iiii"; ; memory "flash" - paged = yes; size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback = 0xff 0x00; - mode = 0x21; - delay = 10; - blocksize = 16; - readsize = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0xff 0xff; + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 128; read_lo = "0010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; read_hi = "0010.1000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxxx.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxxx.aaaa--iiii.iiii"; - writepage = "0100.1100--xxxx.xxaa--aaaa.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0xe1; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + write_lo = "0100.0000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; + write_hi = "0100.1000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; ; - memory "hfuse" + memory "fuse" size = 1; - initval = 0xf7; - bitmask = 0x1f; + initval = 0xde; + bitmask = 0x21; min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--xxxi.iiii"; + max_write_delay = 20000; + read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxox.xxxo"; + write = "1010.1100--1011.111i--xxxx.xxxx--xxxx.xxxx"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; + bitmask = 0x06; min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xxoo"; - write = "1010.1100--1111.11ii--xxxx.xxxx--xxxx.xxxx"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--0000.00aa--oooo.oooo"; - ; - - memory "calibration" - size = 4; - read = "0011.1000--xxxx.xxxx--0000.00aa--oooo.oooo"; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x x x x x x x x x o1 o2 x x x x x x"; + write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; ; memory "io" size = 64; - offset = 0x20; ; memory "sram" @@ -8710,29 +8158,42 @@ part # t26 ; #------------------------------------------------------------ -# ATtiny261 +# AT90S2343 (also AT90S2323 and ATtiny22) #------------------------------------------------------------ -part # t261 - desc = "ATtiny261"; - id = "t261"; +part parent "2323" # 2343 + desc = "AT90S2343"; + id = "2343"; variants = - "ATtiny261: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[N/A, N/A]", - "ATtiny261-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny261-20PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny261-20SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny261V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261V-10PU: PDIP20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261V-10SU: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 30; - n_interrupts = 19; - chip_erase_delay = 4000; - pagel = 0xb3; - bs2 = 0xb2; -# stk500_devcode = 0x21; -# avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x0c; + "AT90S2343-10PC: DIP8, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S2343-10PI: DIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S2343-10SC: SOIC8, Fmax=10 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S2343-10SI: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; + mcuid = 189; + stk500_devcode = 0x43; + avr910_devcode = 0x4c; + signature = 0x1e 0x91 0x03; +; + +#------------------------------------------------------------ +# AT90S2333 +#------------------------------------------------------------ + +part parent ".classic-nocal" # 2333 + desc = "AT90S2333"; + id = "2333"; + variants = + "AT90S2333-8AC: TQFP32, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S2333-8AI: TQFP32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S2333-8PC: DIP28, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S2333-8PI: DIP28, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP; + mcuid = 188; + n_interrupts = 14; + stk500_devcode = 0x42; + avr910_devcode = 0x34; + chip_erase_delay = 20000; + signature = 0x1e 0x91 0x05; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -8742,118 +8203,68 @@ part # t261 predelay = 1; postdelay = 1; pp_controlstack = - 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, - 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, - 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, - 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb4, 0x00, 0x10; - eeprom_instr = - 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x00, 0xb4, 0x00, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x20; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; + chiperasepulsewidth = 15; + programfusepulsewidth = 2; + programlockpolltimeout = 1; factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; + chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 128; - page_size = 4; - num_pages = 32; - min_write_delay = 4000; - max_write_delay = 4000; - mode = 0x41; - delay = 10; - blocksize = 4; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0x00 0xff; + mode = 0x04; + delay = 12; + blocksize = 128; readsize = 256; read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; write = "1100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; ; memory "flash" - paged = yes; size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 32; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0xff 0xff; + mode = 0x04; + delay = 12; + blocksize = 128; readsize = 256; read_lo = "0010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; read_hi = "0010.1000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxxx.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxxx.aaaa--iiii.iiii"; - writepage = "0100.1100--xxxx.xxaa--aaaa.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + write_lo = "0100.0000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; + write_hi = "0100.1000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; ; - memory "efuse" + memory "fuse" size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; + bitmask = 0x3f; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0101.0000--xxxx.xxxx--xxxx.xxxx--xxoo.oooo"; + write = "1010.1100--101i.iiii--xxxx.xxxx--xxxx.xxxx"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xxoo"; - write = "1010.1100--1111.11ii--xxxx.xxxx--xxxx.xxxx"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--0000.00aa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; + initval = -1; + bitmask = 0x06; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xoox"; + write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; ; memory "io" size = 64; - offset = 0x20; ; memory "sram" @@ -8863,55 +8274,72 @@ part # t261 ; #------------------------------------------------------------ -# ATtiny261A +# AT90S4433 #------------------------------------------------------------ -part parent "t261" # t261a - desc = "ATtiny261A"; - id = "t261a"; +part parent "2333" # 4433 + desc = "AT90S4433"; + id = "4433"; variants = - "ATtiny261A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny261A-MF: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261A-MFR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261A-MN: MLF32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261A-MNR: VQFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261A-PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261A-SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261A-SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261A-XU: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny261A-XUR: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 31; + "AT90S4433-8AC: TQFP32, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S4433-8AI: TQFP32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S4433-8PC: DIP28, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S4433-8PI: DIP28, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; + mcuid = 191; + stk500_devcode = 0x51; + avr910_devcode = 0x30; + signature = 0x1e 0x92 0x03; + + memory "eeprom" + size = 256; + read = "1010.0000--xxxx.xxxx--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--aaaa.aaaa--iiii.iiii"; + ; + + memory "flash" + size = 4096; + read_lo = "0010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; + write_lo = "0100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; + write_hi = "0100.1000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; + ; + + memory "fuse" + initval = 0xda; + ; + + memory "lock" + initval = 0xff; + ; ; #------------------------------------------------------------ -# ATtiny461 +# AT90S4414 #------------------------------------------------------------ -part # t461 - desc = "ATtiny461"; - id = "t461"; +part parent ".classic-nocal" # 4414 + desc = "AT90S4414"; + id = "4414"; variants = - "ATtiny461: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[N/A, N/A]", - "ATtiny461-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny461-20MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny461-20PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny461-20SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny461-20SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny461V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny461V-10MUR: VQFN32, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny461V-10PU: PDIP20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny461V-10SU: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny461V-10SUR: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 33; - n_interrupts = 19; - chip_erase_delay = 4000; - pagel = 0xb3; - bs2 = 0xb2; -# stk500_devcode = 0x21; -# avr910_devcode = 0x5e; - signature = 0x1e 0x92 0x08; + "AT90S4414-4AC: TQFP44, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S4414-4AI: TQFP44, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", + "AT90S4414-4JC: LCC44, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S4414-4JI: LCC44, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", + "AT90S4414-4PC: DIP40, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 6 V]", + "AT90S4414-4PI: DIP40, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 6 V]", + "AT90S4414-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S4414-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S4414-8JC: LCC44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S4414-8JI: LCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S4414-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S4414-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP; + mcuid = 190; + n_interrupts = 13; + stk500_devcode = 0x50; + avr910_devcode = 0x28; + chip_erase_delay = 20000; + signature = 0x1e 0x92 0x01; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -8921,118 +8349,63 @@ part # t461 predelay = 1; postdelay = 1; pp_controlstack = - 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, - 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, - 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, - 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb4, 0x00, 0x10; - eeprom_instr = - 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x00, 0xb4, 0x00, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x20; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; + chiperasepulsewidth = 15; + programfusepulsewidth = 2; + programlockpolltimeout = 1; factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; + chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 256; - page_size = 4; - num_pages = 64; - min_write_delay = 4000; - max_write_delay = 4000; - mode = 0x41; - delay = 10; - blocksize = 4; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0x80 0x7f; + mode = 0x04; + delay = 12; + blocksize = 64; readsize = 256; - read = "1010.0000--xxxx.xxxx--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; + read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; ; memory "flash" - paged = yes; size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0x7f 0x7f; + mode = 0x04; + delay = 12; blocksize = 64; readsize = 256; - read_lo = "0010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--xxxx.xaaa--aaax.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + read_lo = "0010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + write_lo = "0100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + write_hi = "0100.1000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; ; - memory "hfuse" + memory "fuse" size = 1; initval = 0xdf; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; + bitmask = 0x21; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xxoo"; - write = "1010.1100--1111.11ii--xxxx.xxxx--xxxx.xxxx"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--0000.00aa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; + bitmask = 0x06; + min_write_delay = 9000; + max_write_delay = 9000; + read = NULL; + write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; ; memory "io" size = 64; - offset = 0x20; ; memory "sram" @@ -9042,51 +8415,65 @@ part # t461 ; #------------------------------------------------------------ -# ATtiny461A +# AT90S8515 #------------------------------------------------------------ -part parent "t461" # t461a - desc = "ATtiny461A"; - id = "t461a"; +part parent "4414" # 8515 + desc = "AT90S8515"; + id = "8515"; variants = - "ATtiny461A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny461A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny461A-PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny461A-SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny461A-SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny461A-XU: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny461A-XUR: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 34; + "AT90S8515-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]"; + mcuid = 193; + stk500_devcode = 0x60; + avr910_devcode = 0x38; + signature = 0x1e 0x93 0x01; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + resetdelay = 15; + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 9000; + blocksize = 128; + ; + + memory "flash" + size = 8192; + min_write_delay = 4000; + max_write_delay = 9000; + blocksize = 128; + ; + + memory "sram" + size = 512; + ; ; #------------------------------------------------------------ -# ATtiny861 +# AT90S4434 #------------------------------------------------------------ -part # t861 - desc = "ATtiny861"; - id = "t861"; +part parent ".classic-nocal" # 4434 + desc = "AT90S4434"; + id = "4434"; variants = - "ATtiny861: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[N/A, N/A]", - "ATtiny861-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny861-20MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny861-20PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny861-20SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny861-20SUR: SOIC20, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny861V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny861V-10MUR: VQFN32, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny861V-10PU: PDIP20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny861V-10SU: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny861V-10SUR: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 38; - n_interrupts = 19; - chip_erase_delay = 4000; - pagel = 0xb3; - bs2 = 0xb2; -# stk500_devcode = 0x21; -# avr910_devcode = 0x5e; - signature = 0x1e 0x93 0x0d; + "AT90S4434-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S4434-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S4434-8JC: LCC44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S4434-8JI: LCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S4434-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S4434-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP; + mcuid = 192; + n_interrupts = 17; + stk500_devcode = 0x52; + avr910_devcode = 0x6c; + chip_erase_delay = 20000; + signature = 0x1e 0x92 0x02; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -9096,257 +8483,251 @@ part # t861 predelay = 1; postdelay = 1; pp_controlstack = - 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, - 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, - 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, - 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb4, 0x00, 0x10; - eeprom_instr = - 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x00, 0xb4, 0x00, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x20; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; + chiperasepulsewidth = 15; + programfusepulsewidth = 2; + programlockpolltimeout = 1; factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; + chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 512; - page_size = 4; - num_pages = 128; - min_write_delay = 4000; - max_write_delay = 4000; - mode = 0x41; - delay = 10; - blocksize = 4; + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0x00 0xff; + mode = 0x04; + delay = 12; + blocksize = 128; readsize = 256; - read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + read = "1010.0000--xxxx.xxxx--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--aaaa.aaaa--iiii.iiii"; ; memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 64; + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0xff 0xff; + mode = 0x04; + delay = 12; + blocksize = 128; readsize = 256; - read_lo = "0010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--xxxx.aaaa--aaax.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + read_lo = "0010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; + write_lo = "0100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; + write_hi = "0100.1000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; ; - memory "hfuse" + memory "fuse" size = 1; initval = 0xdf; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; + bitmask = 0x21; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxox.xxxo"; + write = "1010.1100--1011.111i--xxxx.xxxx--xxxx.xxxx"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xxoo"; - write = "1010.1100--1111.11ii--xxxx.xxxx--xxxx.xxxx"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--0000.00aa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; + bitmask = 0x06; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x x x x x x x x x o1 o2 x x x x x x"; + write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; ; memory "io" size = 64; - offset = 0x20; ; memory "sram" - size = 512; + size = 256; offset = 0x60; ; ; #------------------------------------------------------------ -# ATtiny861A +# AT90S8535 #------------------------------------------------------------ -part parent "t861" # t861a - desc = "ATtiny861A"; - id = "t861a"; +part parent "4434" # 8535 + desc = "AT90S8535"; + id = "8535"; variants = - "ATtiny861A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny861A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny861A-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny861A-PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny861A-SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny861A-SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny861A-XU: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny861A-XUR: TSSOP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 39; + "AT90S8535-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S8535-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S8535-8JC: LCC44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S8535-8JI: LCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]", + "AT90S8535-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 6 V]", + "AT90S8535-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 6 V]"; + mcuid = 195; + stk500_devcode = 0x61; + avr910_devcode = 0x68; + signature = 0x1e 0x93 0x03; + + memory "eeprom" + size = 512; + read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + ; + + memory "flash" + size = 8192; + read_lo = "0010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + write_lo = "0100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + write_hi = "0100.1000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + ; + + memory "fuse" + max_write_delay = 9000; + ; + + memory "lock" + max_write_delay = 9000; + ; + + memory "sram" + size = 512; + ; ; #------------------------------------------------------------ -# ATtiny28 +# ATmega103 #------------------------------------------------------------ -# This is an HVPP-only device. - -part # t28 - desc = "ATtiny28"; - id = "t28"; +part parent ".classic-nocal" # m103 + desc = "ATmega103"; + id = "m103"; variants = - "ATtiny28: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny28L-4AU: TQFP32, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny28L-4MU: MLF32, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny28L-4MUR: VQFN32, Fmax=4 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny28L-4PU: PDIP28, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny28V-1AU: TQFP32, Fmax=1.2 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny28V-1AUR: TQFP32, Fmax=1 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny28V-1MU: MLF32, Fmax=1.2 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny28V-1MUR: VQFN32, Fmax=1 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny28V-1PU: PDIP28, Fmax=1.2 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_HVPP; - mcuid = 18; - n_interrupts = 6; - stk500_devcode = 0x22; - avr910_devcode = 0x5c; - signature = 0x1e 0x91 0x07; - serial = no; + "ATmega103-6AC: TQFP64, Fmax=6 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", + "ATmega103-6AI: TQFP64, Fmax=6 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATmega103L-4AC: TQFP64, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 3.6 V]", + "ATmega103L-4AI: TQFP64, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 3.6 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP; + mcuid = 84; + n_interrupts = 24; + stk500_devcode = 0xb1; + avr910_devcode = 0x41; + chip_erase_delay = 112000; + pagel = 0xa0; + bs2 = 0xd7; + signature = 0x1e 0x97 0x01; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + 0x0e, 0x1e, 0x8e, 0x9e, 0x2e, 0x3e, 0xae, 0xbe, + 0x4e, 0x5e, 0xce, 0xde, 0x6e, 0x7e, 0xee, 0xde, + 0x66, 0x76, 0xe6, 0xf6, 0x6a, 0x7a, 0xea, 0x7a, + 0x7f, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - factory_fcpu = 1200000; + chiperasepulsewidth = 15; + programfusepulsewidth = 2; + programlockpolltimeout = 10; + factory_fcpu = 1000000; + chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; + pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + + memory "eeprom" + size = 4096; + min_write_delay = 4000; + max_write_delay = 9000; + readback = 0x80 0x7f; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + ; memory "flash" - size = 2048; - page_size = 2; - delay = 5; + paged = yes; + size = 0x20000; + page_size = 256; + num_pages = 512; + min_write_delay = 22000; + max_write_delay = 56000; + readback = 0xff 0xff; + mode = 0x11; + delay = 70; + blocksize = 256; readsize = 256; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; memory "fuse" size = 1; - initval = 0x12; - bitmask = 0x1f; + initval = 0xdf; + bitmask = 0x2b; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--xxxx.xxxx--xxxx.xxxx--xxox.o1oo"; + write = "1010.1100--1011.i1ii--xxxx.xxxx--xxxx.xxxx"; ; memory "lock" - size = 1; - initval = 0x06; bitmask = 0x06; - ; - - memory "signature" - size = 3; - ; - - memory "calibration" - size = 1; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.1000--xxxx.xxxx--xxxx.xxxx--xxxx.xoox"; + write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; ; memory "io" size = 64; - offset = 0x20; ; memory "sram" - size = 32; + size = 4000; offset = 0x60; ; ; #------------------------------------------------------------ -# ATmega48 +# ATmega161 #------------------------------------------------------------ -part # m48 - desc = "ATmega48"; - id = "m48"; +part parent ".classic-nocal" # m161 + desc = "ATmega161"; + id = "m161"; variants = - "ATmega48: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega48-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48-20MMH: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48-20MMU: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48-20MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48V-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48V-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48V-10MMH: VQFN28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48V-10MMU: QFN28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48V-10MMUR: VQFN28, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega48V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48V-10MUR: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48V-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 67; - n_interrupts = 26; - stk500_devcode = 0x59; - chip_erase_delay = 45000; + "ATmega161-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", + "ATmega161-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATmega161-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", + "ATmega161-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATmega161L-4AC: TQFP44, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATmega161L-4AI: TQFP44, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega161L-4PC: DIP40, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATmega161L-4PI: DIP40, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP; + mcuid = 89; + n_interrupts = 21; + n_boot_sections = 1; + boot_section_size = 1024; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + chip_erase_delay = 28000; pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x92 0x05; - reset = io; + bs2 = 0xa0; + signature = 0x1e 0x94 0x01; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -9355,82 +8736,206 @@ part # m48 pollvalue = 0x53; predelay = 1; postdelay = 1; - pollmethod = 1; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; + chiperasepolltimeout = 30; + programfusepolltimeout = 2; + programlockpolltimeout = 2; factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; + chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 256; + size = 512; + min_write_delay = 3400; + max_write_delay = 3400; + readback = 0xff 0xff; + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + ; + + memory "flash" + paged = yes; + size = 0x4000; + page_size = 128; + num_pages = 128; + min_write_delay = 14000; + max_write_delay = 14000; + readback = 0xff 0xff; + mode = 0x21; + delay = 16; + blocksize = 128; + readsize = 256; + read_lo = "0010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--xxxa.aaaa--aaxx.xxxx--xxxx.xxxx"; + ; + + memory "fuse" + size = 1; + initval = 0xda; + bitmask = 0x77; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0101.0000--xxxx.xxxx--xxxx.xxxx--xoxo.oooo"; + write = "1010.1100--101x.xxxx--xxxx.xxxx--1i1i.1iii"; + ; + + memory "lock" + bitmask = 0x3f; + min_write_delay = 2000; + max_write_delay = 2000; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 1024; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# ATmega162 +#------------------------------------------------------------ + +part parent ".classic" # m162 + desc = "ATmega162"; + id = "m162"; + variants = + "ATmega162: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega162-16AC: TQFP44, Fmax=16 MHz, T=[0 C, 70 C], Vcc=[4.5 V, 5.5 V]", + "ATmega162-16AI: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162-16AJ: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162-16AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162-16AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162-16MC: VFQFN44, Fmax=16 MHz, T=[0 C, 70 C], Vcc=[4.5 V, 5.5 V]", + "ATmega162-16MI: VFQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162-16MJ: VFQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162-16MU: VFQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162-16MUR: VFQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162-16PC: DIP40, Fmax=16 MHz, T=[0 C, 70 C], Vcc=[4.5 V, 5.5 V]", + "ATmega162-16PI: DIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162-16PJ: DIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162-16PU: DIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162L-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162L-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162L-8MC: VFQFN44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162L-8MI: VFQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162L-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162L-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega162V-1AC: TQFP44, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[1.8 V, 3.6 V]", + "ATmega162V-1MC: VFQFN44, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[1.8 V, 3.6 V]", + "ATmega162V-1PC: DIP40, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[1.8 V, 3.6 V]", + "ATmega162V-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega162V-8AJ: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega162V-8AU: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega162V-8AUR: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega162V-8MI: VFQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega162V-8MJ: VFQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega162V-8MU: VFQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega162V-8MUR: VFQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega162V-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega162V-8PJ: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega162V-8PU: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; + mcuid = 90; + n_interrupts = 28; + n_boot_sections = 4; + boot_section_size = 256; + stk500_devcode = 0x83; + avr910_devcode = 0x63; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + signature = 0x1e 0x94 0x04; + reset = io; + allowfullpagebitstream = yes; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + latchcycles = 6; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x04; + spmcr = 0x57; + eecr = 0x3c; + ocdrev = 2; + + memory "eeprom" + size = 512; page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; + min_write_delay = 9000; + max_write_delay = 9000; mode = 0x41; delay = 20; blocksize = 4; readsize = 256; - read = "1010.0000--000x.xxxx--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--00xx.xxaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxaa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; + size = 0x4000; + page_size = 128; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 64; + blocksize = 128; readsize = 256; - read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.0aaa--aaax.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--00aa.aaaa--aaxx.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 4500; - max_write_delay = 4500; + min_write_delay = 16000; + max_write_delay = 16000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0xdf; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0x99; + min_write_delay = 16000; + max_write_delay = 16000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -9438,170 +8943,172 @@ part # m48 memory "efuse" size = 1; initval = 0xff; - bitmask = 0x01; - min_write_delay = 4500; - max_write_delay = 4500; + bitmask = 0x1e; + min_write_delay = 16000; + max_write_delay = 16000; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; + write = "1010.1100--1010.0100--xxxx.xxxx--111i.iii1"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--0000.0000--0000.00aa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; + bitmask = 0x3f; + min_write_delay = 16000; + max_write_delay = 16000; ; memory "sram" - size = 512; - offset = 0x100; + size = 1024; ; ; #------------------------------------------------------------ -# ATmega48A -#------------------------------------------------------------ - -part parent "m48" # m48a - desc = "ATmega48A"; - id = "m48a"; - variants = - "ATmega48A-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48A-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48A-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48A-MMH: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48A-MMHR: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48A-MUR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega48A-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 68; -; - -#------------------------------------------------------------ -# ATmega48P +# ATmega163 #------------------------------------------------------------ -part parent "m48" # m48p - desc = "ATmega48P"; - id = "m48p"; +part parent ".classic" # m163 + desc = "ATmega163"; + id = "m163"; variants = - "ATmega48P-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48P-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48P-20MMU: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48P-20MMUR: VQFN28, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega48P-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48P-20MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48P-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega48PV-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PV-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PV-10MMU: MLF28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PV-10MMUR: VQFN28, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega48PV-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PV-10MUR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega48PV-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 69; - signature = 0x1e 0x92 0x0a; -; + "ATmega163-8AC: TQFP44, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", + "ATmega163-8AI: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATmega163-8PC: DIP40, Fmax=8 MHz, T=[0 C, 70 C], Vcc=[4 V, 5.5 V]", + "ATmega163-8PI: DIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "ATmega163L-4AC: TQFP44, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATmega163L-4AI: TQFP44, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega163L-4PC: DIP40, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATmega163L-4PI: DIP40, Fmax=4 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP; + mcuid = 91; + n_interrupts = 18; + n_boot_sections = 4; + boot_section_size = 256; + stk500_devcode = 0x81; + avr910_devcode = 0x64; + chip_erase_delay = 32000; + pagel = 0xd7; + bs2 = 0xa0; + signature = 0x1e 0x94 0x02; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + hvleavestabdelay = 15; + chiperasepolltimeout = 30; + programfusepolltimeout = 2; + programlockpolltimeout = 2; -#------------------------------------------------------------ -# ATmega48PA -#------------------------------------------------------------ + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 4000; + readback = 0xff 0xff; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + ; -part parent "m48" # m48pa - desc = "ATmega48PA"; - id = "m48pa"; - variants = - "ATmega48PA: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-AUR: QFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-MMH: QFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-MMHR: QFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-MMN: QFN28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-MMNR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-MN: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-MNR: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-PN: SPDIP28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PA-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 70; - signature = 0x1e 0x92 0x0a; -; + memory "flash" + paged = yes; + size = 0x4000; + page_size = 128; + num_pages = 128; + min_write_delay = 16000; + max_write_delay = 16000; + readback = 0xff 0xff; + mode = 0x11; + delay = 20; + blocksize = 128; + readsize = 256; + read_lo = "0010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--xxxa.aaaa--aaxx.xxxx--xxxx.xxxx"; + ; -#------------------------------------------------------------ -# ATmega48PB -#------------------------------------------------------------ + memory "lfuse" + size = 1; + initval = 0xdf; + bitmask = 0xef; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0101.0000--0000.0000--xxxx.xxxx--ooxx.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--ii11.iiii"; + ; -part parent "m48" # m48pb - desc = "ATmega48PB"; - id = "m48pb"; - variants = - "ATmega48PB-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PB-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PB-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PB-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PB-MN: VQFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PB-MNR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega48PB-MU: VFQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega48PB-MUR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; - mcuid = 71; - n_interrupts = 27; - chip_erase_delay = 10500; - signature = 0x1e 0x92 0x10; + memory "hfuse" + size = 1; + initval = 0xff; + bitmask = 0x07; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0101.1000--0000.1000--xxxx.xxxx--xxxx.1ooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--1111.1iii"; + ; + + memory "lock" + bitmask = 0x3f; + min_write_delay = 2000; + max_write_delay = 2000; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 1024; + offset = 0x60; + ; ; #------------------------------------------------------------ -# ATmega88 +# ATmega8515 #------------------------------------------------------------ -part # m88 - desc = "ATmega88"; - id = "m88"; +part parent ".classic" # m8515 + desc = "ATmega8515"; + id = "m8515"; variants = - "ATmega88: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega88-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega88-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega88-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega88-20MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega88-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega88V-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88V-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88V-10MUR: VQFN32, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega88V-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 79; - n_interrupts = 26; + "ATmega8515: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega8515-16AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8515-16AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8515-16JU: PLCC44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8515-16JUR: PLCC44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8515-16MU: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8515-16MUR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega8515-16PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8515L-8AU: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8515L-8AUR: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8515L-8JU: PLCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8515L-8JUR: PLCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8515L-8MU: MLF44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8515L-8MUR: VQFN44, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega8515L-8PU: PDIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP; + mcuid = 160; + n_interrupts = 17; n_boot_sections = 4; boot_section_size = 256; - stk500_devcode = 0x73; + stk500_devcode = 0x63; + avr910_devcode = 0x3a; chip_erase_delay = 9000; pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x93 0x0a; - reset = io; + bs2 = 0xa0; + signature = 0x1e 0x93 0x06; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -9610,48 +9117,30 @@ part # m88 pollvalue = 0x53; predelay = 1; postdelay = 1; - pollmethod = 1; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; + latchcycles = 6; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 512; - page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; - mode = 0x41; + min_write_delay = 9000; + max_write_delay = 9000; + readback = 0xff 0xff; + mode = 0x04; delay = 20; - blocksize = 4; + blocksize = 128; readsize = 256; - read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; ; memory "flash" @@ -9661,20 +9150,21 @@ part # m88 num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; - mode = 0x41; + readback = 0xff 0x00; + mode = 0x21; delay = 10; blocksize = 64; readsize = 256; read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_lo = "0100.0000--0000.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.xxxx--xxxa.aaaa--iiii.iiii"; writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x62; + initval = 0xe1; min_write_delay = 4500; max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; @@ -9683,184 +9173,68 @@ part # m88 memory "hfuse" size = 1; - initval = 0xdf; + initval = 0xd9; min_write_delay = 4500; max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "efuse" - size = 1; - initval = 0xf9; - bitmask = 0x07; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; - ; - memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; min_write_delay = 4500; max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; ; - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + memory "calibration" + size = 4; + read = "0011.1000--00xx.xxxx--0000.00aa--oooo.oooo"; ; memory "io" - size = 224; - offset = 0x20; + size = 64; ; memory "sram" - size = 1024; - offset = 0x100; + size = 512; + offset = 0x60; ; ; #------------------------------------------------------------ -# ATmega88A -#------------------------------------------------------------ - -part parent "m88" # m88a - desc = "ATmega88A"; - id = "m88a"; - variants = - "ATmega88A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega88A-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88A-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88A-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88A-MMH: QFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88A-MMHR: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88A-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88A-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 80; -; - -#------------------------------------------------------------ -# ATmega88P -#------------------------------------------------------------ - -part parent "m88" # m88p - desc = "ATmega88P"; - id = "m88p"; - variants = - "ATmega88P-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega88P-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega88P-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega88P-20MUR: VQFN32, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega88P-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega88PV-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PV-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PV-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PV-10MUR: VQFN32, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega88PV-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 81; - signature = 0x1e 0x93 0x0f; -; - -#------------------------------------------------------------ -# ATmega88PA -#------------------------------------------------------------ - -part parent "m88" # m88pa - desc = "ATmega88PA"; - id = "m88pa"; - variants = - "ATmega88PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-15MZ: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-MMH: QFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-MMHR: VQFN28, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-MMN: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-MMNR: VQFN28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-MMUR: PDIP28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-MN: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-MNR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-PN: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PA-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 82; - signature = 0x1e 0x93 0x0f; -; - -#------------------------------------------------------------ -# ATmega88PB -#------------------------------------------------------------ - -part parent "m88" # m88pb - desc = "ATmega88PB"; - id = "m88pb"; - variants = - "ATmega88PB-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PB-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PB-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PB-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PB-MN: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PB-MNR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega88PB-MU: VFQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega88PB-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 83; - n_interrupts = 27; - chip_erase_delay = 10500; - signature = 0x1e 0x93 0x16; -; - -#------------------------------------------------------------ -# ATmega168 +# ATmega8535 #------------------------------------------------------------ -part # m168 - desc = "ATmega168"; - id = "m168"; +part parent ".classic" # m8535 + desc = "ATmega8535"; + id = "m8535"; variants = - "ATmega168: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega168-15AD: TQFP32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168-20MQ: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168-20MQR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168-20MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168V-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168V-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168V-10MQ: QFN32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168V-10MQR: QFN32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168V-10MUR: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168V-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 99; - n_interrupts = 26; + "ATmega8535: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega8535-16AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8535-16AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8535-16JU: PLCC44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8535-16JUR: PLCC44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8535-16MU: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8535-16MUR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega8535-16PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8535L-8AU: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8535L-8AUR: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8535L-8JU: PLCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8535L-8JUR: PLCC44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8535L-8MU: MLF44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8535L-8MUR: MLF44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8535L-8PU: PDIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP; + mcuid = 161; + n_interrupts = 21; n_boot_sections = 4; boot_section_size = 256; - stk500_devcode = 0x86; + stk500_devcode = 0x64; + avr910_devcode = 0x69; chip_erase_delay = 9000; pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x94 0x06; - reset = io; + bs2 = 0xa0; + signature = 0x1e 0x93 0x08; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -9869,71 +9243,54 @@ part # m168 pollvalue = 0x53; predelay = 1; postdelay = 1; - pollmethod = 1; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; + latchcycles = 6; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 512; - page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; - mode = 0x41; + min_write_delay = 9000; + max_write_delay = 9000; + readback = 0xff 0xff; + mode = 0x04; delay = 20; - blocksize = 4; + blocksize = 128; readsize = 256; - read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; ; memory "flash" paged = yes; - size = 0x4000; - page_size = 128; + size = 8192; + page_size = 64; num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; - mode = 0x41; + readback = 0xff 0x00; + mode = 0x21; delay = 10; - blocksize = 128; + blocksize = 64; readsize = 256; - read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--000a.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x62; + initval = 0xe1; min_write_delay = 4500; max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; @@ -9942,172 +9299,70 @@ part # m168 memory "hfuse" size = 1; - initval = 0xdf; + initval = 0xd9; min_write_delay = 4500; max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "efuse" - size = 1; - initval = 0xf9; - bitmask = 0x07; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; - ; - memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; min_write_delay = 4500; max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; ; memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + size = 4; + read = "0011.1000--00xx.xxxx--0000.00aa--oooo.oooo"; ; memory "io" - size = 224; - offset = 0x20; + size = 64; ; memory "sram" - size = 1024; - offset = 0x100; + size = 512; + offset = 0x60; ; ; #------------------------------------------------------------ -# ATmega168A +# ATmega8 #------------------------------------------------------------ -part parent "m168" # m168a - desc = "ATmega168A"; - id = "m168a"; +part parent ".classic" # m8 + desc = "ATmega8"; + id = "m8"; variants = - "ATmega168A: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega168A-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168A-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168A-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168A-MMH: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168A-MMHR: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168A-MUR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168A-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 100; -; - -#------------------------------------------------------------ -# ATmega168P -#------------------------------------------------------------ - -part parent "m168" # m168p - desc = "ATmega168P"; - id = "m168p"; - variants = - "ATmega168P-20AN: TQFP32, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega168P-20ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168P-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168P-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168P-20MQ: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168P-20MQR: QFN32, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega168P-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168P-20MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168P-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega168PV-10AN: TQFP32, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega168PV-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PV-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PV-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PV-10MUR: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PV-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 101; - signature = 0x1e 0x94 0x0b; -; - -#------------------------------------------------------------ -# ATmega168PA -#------------------------------------------------------------ - -part parent "m168" # m168pa - desc = "ATmega168PA"; - id = "m168pa"; - variants = - "ATmega168PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-MMH: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-MMHR: QFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-MN: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-MNR: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-MU: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-MUR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-PN: PDIP28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PA-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 102; - signature = 0x1e 0x94 0x0b; -; - -#------------------------------------------------------------ -# ATmega168PB -#------------------------------------------------------------ - -part parent "m168" # m168pb - desc = "ATmega168PB"; - id = "m168pb"; - variants = - "ATmega168PB-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PB-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PB-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PB-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PB-MN: VQFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PB-MU: VFQFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega168PB-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 103; - n_interrupts = 27; - chip_erase_delay = 10500; - signature = 0x1e 0x94 0x15; -; - -#------------------------------------------------------------ -# ATtiny828 -#------------------------------------------------------------ - -part # t828 - desc = "ATtiny828"; - id = "t828"; - variants = - "ATtiny828: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.62 V, 5.5 V]", - "ATtiny828-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny828-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny828-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny828-MUR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 35; - n_interrupts = 26; + "ATmega8: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega8-16AN: TQFP32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8-16AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8-16AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8-16MN: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8-16MU: MLF32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8-16MUR: MLF32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8-16PN: PDIP28, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8-16PU: PDIP28, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega8L-8AN: TQFP32, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8L-8AU: TQFP32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8L-8AUR: TQFP32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8L-8MN: QFN32, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8L-8MU: MLF32, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8L-8MUR: VQFN32, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega8L-8PN: PDIP28, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8L-8PU: PDIP28, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP; + mcuid = 45; + n_interrupts = 19; n_boot_sections = 4; boot_section_size = 256; - stk500_devcode = 0x86; - chip_erase_delay = 15000; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + chip_erase_delay = 9000; pagel = 0xd7; bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x93 0x14; + signature = 0x1e 0x93 0x07; reset = io; timeout = 200; stabdelay = 100; @@ -10117,48 +9372,34 @@ part # t828 pollvalue = 0x53; predelay = 1; postdelay = 1; - pollmethod = 1; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; latchcycles = 5; togglevtg = 1; poweroffdelay = 15; - resetdelayms = 1; + resetdelayms = 2; hvleavestabdelay = 15; resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + chiperasepolltimeout = 20; + programfusepolltimeout = 10; + programlockpolltimeout = 10; memory "eeprom" - size = 256; + size = 512; page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; - mode = 0x41; + min_write_delay = 9000; + max_write_delay = 9000; + readback = 0xff 0xff; + mode = 0x04; delay = 20; - blocksize = 4; + blocksize = 128; readsize = 256; - read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; ; memory "flash" @@ -10168,21 +9409,21 @@ part # t828 num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; - mode = 0x41; + readback = 0xff 0x00; + mode = 0x21; delay = 10; blocksize = 64; readsize = 256; read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_lo = "0100.0000--0000.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.xxxx--xxxa.aaaa--iiii.iiii"; writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x6e; - bitmask = 0xf3; + initval = 0xe1; min_write_delay = 4500; max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; @@ -10191,566 +9432,482 @@ part # t828 memory "hfuse" size = 1; - initval = 0xdf; + initval = 0xd9; min_write_delay = 4500; max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0xf7; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.1iii"; - ; - memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; min_write_delay = 4500; max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; ; memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + size = 4; + read = "0011.1000--00xx.xxxx--0000.00aa--oooo.oooo"; ; memory "io" - size = 224; - offset = 0x20; + size = 64; ; memory "sram" - size = 512; - offset = 0x100; + size = 1024; + offset = 0x60; ; ; #------------------------------------------------------------ -# ATtiny828R +# ATmega8A #------------------------------------------------------------ -part parent "t828" # t828r - desc = "ATtiny828R"; - id = "t828r"; +part parent "m8" # m8a + desc = "ATmega8A"; + id = "m8a"; variants = - "ATtiny828R-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny828R-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]"; - mcuid = 36; + "ATmega8A: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega8A-AN: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8A-ANR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8A-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8A-AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8A-MN: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8A-MNR: VQFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8A-MU: VQFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8A-MUR: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8A-PN: PDIP28, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8A-PU: PDIP28, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 46; ; #------------------------------------------------------------ -# ATtiny87 +# ATmega16 #------------------------------------------------------------ -part # t87 - desc = "ATtiny87"; - id = "t87"; +part parent "m8" # m16 + desc = "ATmega16"; + id = "m16"; variants = - "ATtiny87: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny87-MU: VQFN32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny87-MUR: VQFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny87-SU: SOIC20, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny87-SUR: SOIC20, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny87-XU: TSSOP20, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny87-XUR: TSSOP20, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 27; - n_interrupts = 20; -# no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -# Try the AT90S2313 devcode: - avr910_devcode = 0x20; - chip_erase_delay = 15000; - pagel = 0xb3; - bs2 = 0xb2; - signature = 0x1e 0x93 0x87; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, - 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, - 0x06, 0x16, 0x46, 0x56, 0x0a, 0x1a, 0x4a, 0x5a, - 0x1e, 0x7c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; + "ATmega16: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega16-16AQR: TQFP44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega16-16AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega16-16AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega16-16MQ: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega16-16MU: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega16-16MUR: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega16-16PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega16L-8AQ: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16L-8AQR: TQFP44, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega16L-8AU: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16L-8AUR: TQFP44, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega16L-8MU: MLF44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16L-8MUR: VQFN44, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega16L-8PU: PDIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; + mcuid = 49; + n_interrupts = 21; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + bs2 = 0xa0; + signature = 0x1e 0x94 0x03; + allowfullpagebitstream = yes; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; idr = 0x31; spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3c; + ocdrev = 2; memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--00xx.xxaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxaa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" - paged = yes; - size = 8192; + size = 0x4000; page_size = 128; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 64; - readsize = 256; - read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + blocksize = 128; + read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--00aa.aaaa--aaxx.xxxx--xxxx.xxxx"; ; memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--0000.0000--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; - ; - - # ATtiny87 has signature bytes 0x1E 0x93 0x87 - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + initval = 0x99; ; +; - memory "io" - size = 224; - offset = 0x20; - ; +#------------------------------------------------------------ +# ATmega16A +#------------------------------------------------------------ - memory "sram" - size = 512; - offset = 0x100; - ; +part parent "m16" # m16a + desc = "ATmega16A"; + id = "m16a"; + variants = + "ATmega16A: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega16A-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16A-AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16A-MU: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16A-MUR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega16A-PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 50; ; #------------------------------------------------------------ -# ATtiny167 +# ATmega32 #------------------------------------------------------------ -part # t167 - desc = "ATtiny167"; - id = "t167"; +part parent "m8" # m32 + desc = "ATmega32"; + id = "m32"; variants = - "ATtiny167: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny167-A15XD: TSSOP20, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny167-MMU: WQFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny167-MMUR: WQFN20, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATtiny167-MU: VQFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny167-MUR: VQFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny167-SU: SOIC20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny167-SUR: SOIC20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny167-XU: TSSOP20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny167-XUR: TSSOP20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 29; - n_interrupts = 20; -# no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -# avr910_devcode = 0x??; -# Try the AT90S2313 devcode: - avr910_devcode = 0x20; - chip_erase_delay = 15000; - pagel = 0xb3; - bs2 = 0xb2; - signature = 0x1e 0x94 0x87; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, - 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, - 0x06, 0x16, 0x46, 0x56, 0x0a, 0x1a, 0x4a, 0x5a, - 0x1e, 0x7c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; + "ATmega32: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega32-16AQ: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega32-16AQR: TQFP44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega32-16AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega32-16AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega32-16MU: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega32-16MUR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega32-16PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega32L-8AU: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32L-8AUR: TQFP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32L-8MU: MLF44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32L-8MUR: VQFN44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32L-8PU: PDIP40, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; + mcuid = 58; + n_interrupts = 21; + boot_section_size = 512; + stk500_devcode = 0x91; + avr910_devcode = 0x72; + bs2 = 0xa0; + signature = 0x1e 0x95 0x02; + allowfullpagebitstream = yes; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; idr = 0x31; spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3c; + ocdrev = 2; memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; + size = 1024; + blocksize = 64; + read = "1010.0000--00xx.xxaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxaa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" - paged = yes; - size = 0x4000; + size = 0x8000; page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 64; - readsize = 256; - read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--000a.aaaa--aaxx.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + num_pages = 256; + read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--00aa.aaaa--aaxx.xxxx--xxxx.xxxx"; ; memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--0000.0000--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + initval = 0x99; ; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + memory "sram" + size = 2048; ; +; - memory "io" - size = 224; - offset = 0x20; - ; +#------------------------------------------------------------ +# ATmega32A +#------------------------------------------------------------ - memory "sram" - size = 512; - offset = 0x100; - ; +part parent "m32" # m32a + desc = "ATmega32A"; + id = "m32a"; + variants = + "ATmega32A-AN: TQFP44, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32A-ANR: TQFP44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega32A-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32A-AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32A-MN: VQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32A-MNR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega32A-MU: MLF44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32A-MUR: VQFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32A-PN: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32A-PU: PDIP40, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 59; ; #------------------------------------------------------------ -# ATtiny48 +# ATmega64 #------------------------------------------------------------ -part # t48 - desc = "ATtiny48"; - id = "t48"; +part parent "m8" # m64 + desc = "ATmega64"; + id = "m64"; variants = - "ATtiny48-AU: TQFP32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny48-AUR: TQFP32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny48-CCU: UFBGA32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny48-MMH: VQFN28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny48-MMHR: VQFN28, Fmax=12 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny48-MMU: MLF28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny48-MMUR: VQFN28, Fmax=12 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny48-MU: MLF32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny48-MUR: VQFN32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny48-PU: PDIP28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 23; - n_interrupts = 20; - stk500_devcode = 0x73; - chip_erase_delay = 15000; - pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x92 0x09; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; + "ATmega64: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega64-16AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", + "ATmega64-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.2 V, 5.5 V]", + "ATmega64-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.2 V, 5.5 V]", + "ATmega64-16MN: QFN64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", + "ATmega64-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega64-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega64L-8AN: TQFP64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64L-8AQ: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64L-8AQR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64L-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64L-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64L-8MN: QFN64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64L-8MQ: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64L-8MQR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega64L-8MU: QFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64L-8MUR: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; + mcuid = 72; + n_interrupts = 35; + boot_section_size = 1024; + stk500_devcode = 0xa0; + avr910_devcode = 0x45; + bs2 = 0xa0; + signature = 0x1e 0x96 0x02; + allowfullpagebitstream = yes; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + idr = 0x22; + spmcr = 0x68; + eecr = 0x3c; + ocdrev = 2; memory "eeprom" - size = 64; - page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - read = "1010.0000--000x.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; + size = 2048; + page_size = 8; blocksize = 64; - readsize = 256; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; + read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; ; - memory "lfuse" - size = 1; - initval = 0x6e; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + memory "flash" + size = 0x10000; + page_size = 256; + num_pages = 256; + blocksize = 128; + read_lo = "0010.0000--xaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--xaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + initval = 0x99; ; memory "efuse" size = 1; - initval = 0xff; - bitmask = 0x01; + initval = 0xfd; + bitmask = 0x03; min_write_delay = 4500; max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.111i"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxii"; ; - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + memory "io" + size = 224; ; - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "sram" + size = 4096; + offset = 0x100; ; +; - memory "calibration" +#------------------------------------------------------------ +# ATmega64A +#------------------------------------------------------------ + +part parent "m64" # m64a + desc = "ATmega64A"; + id = "m64a"; + variants = + "ATmega64A-AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64A-ANR: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64A-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64A-MN: QFN64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64A-MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64A-MUR: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 73; +; + +#------------------------------------------------------------ +# ATmega128 +#------------------------------------------------------------ + +part parent "m8" # m128 + desc = "ATmega128"; + id = "m128"; + variants = + "ATmega128-16AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", + "ATmega128-16ANR: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", + "ATmega128-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega128-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega128-16MN: MLF64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[4.5 V, 5.5 V]", + "ATmega128-16MNR: MLF64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega128-16MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega128-16MUR: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega128L-8AN: TQFP64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[3 V, 5.5 V]", + "ATmega128L-8ANR: TQFP64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[3 V, 5.5 V]", + "ATmega128L-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega128L-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega128L-8MN: MLF64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[3 V, 5.5 V]", + "ATmega128L-8MNR: MLF64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega128L-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega128L-8MUR: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; + mcuid = 85; + n_interrupts = 35; + boot_section_size = 1024; + stk500_devcode = 0xb2; + avr910_devcode = 0x43; + chip_erase_delay = 10000; + bs2 = 0xa0; + signature = 0x1e 0x97 0x02; + allowfullpagebitstream = yes; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x22; + rampz = 0x3b; + spmcr = 0x68; + eecr = 0x3c; + ocdrev = 1; + + memory "eeprom" + size = 4096; + page_size = 8; + min_write_delay = 10000; + max_write_delay = 10000; + blocksize = 64; + read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + ; + + memory "flash" + size = 0x20000; + page_size = 256; + num_pages = 512; + min_write_delay = 5000; + max_write_delay = 5000; + blocksize = 128; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + ; + + memory "hfuse" + initval = 0x99; + ; + + memory "efuse" size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + initval = 0xfd; + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxii"; ; memory "io" size = 224; - offset = 0x20; ; memory "sram" - size = 256; + size = 4096; offset = 0x100; ; ; #------------------------------------------------------------ -# ATtiny88 +# ATmega128A #------------------------------------------------------------ -part # t88 - desc = "ATtiny88"; - id = "t88"; +part parent "m128" # m128a + desc = "ATmega128A"; + id = "m128a"; variants = - "ATtiny88-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny88-AUR: TQFP32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny88-CCU: UFBGA32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny88-MMH: VQFN28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny88-MMHR: VQFN28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny88-MMU: QFN28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny88-MMUR: QFN28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny88-MU: QFN32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny88-MUR: VQFN32, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny88-PU: PDIP28, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 28; - n_interrupts = 20; - stk500_devcode = 0x73; + "ATmega128A: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega128A-AN: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega128A-ANR: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega128A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega128A-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega128A-MN: VQFN64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega128A-MNR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega128A-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega128A-MUR: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 86; +; + +#------------------------------------------------------------ +# ATmega640 +#------------------------------------------------------------ +# Almost same as ATmega1280, except for different memory sizes + +part parent ".classic" # m640 + desc = "ATmega640"; + id = "m640"; + variants = + "ATmega640: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega640-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega640-16AUR: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega640-16CU: CBGA100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega640V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega640V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega640V-8CU: CBGA100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega640V-8CUR: TFBGA100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 126; + n_interrupts = 57; + n_boot_sections = 4; + boot_section_size = 1024; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; chip_erase_delay = 9000; pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x93 0x11; + bs2 = 0xa0; + signature = 0x1e 0x96 0x08; reset = io; timeout = 200; stabdelay = 100; @@ -10766,11 +9923,6 @@ part # t88 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; latchcycles = 5; togglevtg = 1; @@ -10784,58 +9936,55 @@ part # t88 idr = 0x31; spmcr = 0x57; eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + ocdrev = 3; memory "eeprom" - size = 64; - page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; + size = 4096; + page_size = 8; + min_write_delay = 9000; + max_write_delay = 9000; mode = 0x41; - delay = 20; - blocksize = 4; + delay = 10; + blocksize = 8; readsize = 256; - read = "1010.0000--000x.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; + read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; + size = 0x10000; + page_size = 256; + num_pages = 256; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 64; + blocksize = 256; readsize = 256; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--0aaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x6e; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0x62; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0xdf; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0x99; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -10843,70 +9992,205 @@ part # t88 memory "efuse" size = 1; initval = 0xff; - bitmask = 0x01; - min_write_delay = 4500; - max_write_delay = 4500; + bitmask = 0x07; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + bitmask = 0x3f; + min_write_delay = 9000; + max_write_delay = 9000; ; memory "io" - size = 224; - offset = 0x20; + size = 480; ; memory "sram" - size = 512; - offset = 0x100; + size = 8192; + offset = 0x200; ; ; #------------------------------------------------------------ -# ATmega328 +# ATmega1280 #------------------------------------------------------------ -part # m328 - desc = "ATmega328"; - id = "m328"; +part parent "m640" # m1280 + desc = "ATmega1280"; + id = "m1280"; variants = - "ATmega328-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328-MMH: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328-MMHR: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328-MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328-MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 118; - n_interrupts = 26; + "ATmega1280: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega1280-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega1280-16AUR: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega1280-16CU: CBGA100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega1280V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1280V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega1280V-8CU: CBGA100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 138; + signature = 0x1e 0x97 0x03; + rampz = 0x3b; + + memory "flash" + size = 0x20000; + num_pages = 512; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + ; +; + +#------------------------------------------------------------ +# ATmega1281 +#------------------------------------------------------------ +# Identical to ATmega1280 + +part parent "m640" # m1281 + desc = "ATmega1281"; + id = "m1281"; + variants = + "ATmega1281: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega1281-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega1281-16AUR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega1281-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega1281-16MUR: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega1281V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1281V-8AUR: QFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1281V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1281V-8MUR: MLF64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 139; + signature = 0x1e 0x97 0x04; + rampz = 0x3b; + + memory "flash" + size = 0x20000; + num_pages = 512; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + ; +; + +#------------------------------------------------------------ +# ATmega2560 +#------------------------------------------------------------ + +part parent "m640" # m2560 + desc = "ATmega2560"; + id = "m2560"; + variants = + "ATmega2560: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega2560-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega2560-16AUR: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega2560-16CU: CBGA100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega2560V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega2560V-8AUR: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega2560V-8CU: CBGA100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 143; + stk500_devcode = 0xb2; + signature = 0x1e 0x98 0x01; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + latchcycles = 6; + rampz = 0x3b; + eind = 0x5c; + ocdrev = 4; + + memory "flash" + size = 0x40000; + num_pages = 1024; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + load_ext_addr = "0100.1101--0000.0000--0000.000a--0000.0000"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + ; +; + +#------------------------------------------------------------ +# ATmega2561 +#------------------------------------------------------------ + +part parent "m640" # m2561 + desc = "ATmega2561"; + id = "m2561"; + variants = + "ATmega2561: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega2561-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega2561-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega2561-16MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega2561-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", + "ATmega2561V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega2561V-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega2561V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega2561V-8MUR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 144; + stk500_devcode = 0xb2; + signature = 0x1e 0x98 0x02; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + latchcycles = 6; + rampz = 0x3b; + eind = 0x5c; + ocdrev = 4; + + memory "flash" + size = 0x40000; + num_pages = 1024; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + load_ext_addr = "0100.1101--0000.0000--0000.000a--0000.0000"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + ; +; + +#------------------------------------------------------------ +# ATmega164P +#------------------------------------------------------------ + +part parent ".classic" # m164p + desc = "ATmega164P"; + id = "m164p"; + variants = + "ATmega164P: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega164P-20AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164P-20AQ: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164P-20AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164P-20AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164P-20MN: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164P-20MQ: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164P-20MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164P-20MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164P-20PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164P-20PQ: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164P-20PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega164PV-10AN: TQFP44, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PV-10AQ: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PV-10AU: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PV-10AUR: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PV-10MU: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PV-10MUR: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PV-10PN: PDIP40, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PV-10PU: PDIP40, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 93; + n_interrupts = 31; n_boot_sections = 4; - boot_section_size = 512; - stk500_devcode = 0x86; - chip_erase_delay = 9000; + boot_section_size = 256; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + chip_erase_delay = 55000; pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x95 0x14; + bs2 = 0xa0; + signature = 0x1e 0x94 0x0a; reset = io; timeout = 200; stabdelay = 100; @@ -10922,11 +10206,6 @@ part # m328 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; latchcycles = 5; togglevtg = 1; @@ -10940,58 +10219,55 @@ part # m328 idr = 0x31; spmcr = 0x57; eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + ocdrev = 3; memory "eeprom" - size = 1024; + size = 512; page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; + min_write_delay = 9000; + max_write_delay = 9000; mode = 0x41; delay = 20; blocksize = 4; readsize = 256; - read = "1010.0000--000x.xxaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--00xx.xaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xaaa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xaaa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x8000; + size = 0x4000; page_size = 128; - num_pages = 256; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; blocksize = 128; readsize = 256; - read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--00aa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--0aaa.aaaa--aaxx.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 4500; - max_write_delay = 4500; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0xd9; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0x99; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -11000,94 +10276,186 @@ part # m328 size = 1; initval = 0xff; bitmask = 0x07; - min_write_delay = 4500; - max_write_delay = 4500; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + write = "1010.1100--1010.0100--xxxx.xxxx--1111.1iii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + min_write_delay = 9000; + max_write_delay = 9000; ; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + memory "sram" + size = 1024; ; +; - memory "io" - size = 224; - offset = 0x20; +#------------------------------------------------------------ +# ATmega164A +#------------------------------------------------------------ + +part parent "m164p" # m164a + desc = "ATmega164A"; + id = "m164a"; + variants = + "ATmega164A: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega164A-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164A-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164A-CU: VFBGA49, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164A-CUR: VFBGA49, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega164A-MCH: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164A-MCHR: QFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega164A-MU: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164A-MUR: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164A-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 92; + signature = 0x1e 0x94 0x0f; +; + +#------------------------------------------------------------ +# ATmega164PA +#------------------------------------------------------------ + +part parent "m164p" # m164pa + desc = "ATmega164PA"; + id = "m164pa"; + variants = + "ATmega164PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-ANR: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-CU: VFBGA49, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-CUR: VFBGA49, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-MCH: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-MCHR: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-MN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-MNR: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega164PA-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 94; +; + +#------------------------------------------------------------ +# ATmega324P +#------------------------------------------------------------ + +part parent "m164p" # m324p + desc = "ATmega324P"; + id = "m324p"; + variants = + "ATmega324P: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega324P-20AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega324P-20AQ: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega324P-20AQR: TQFP44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega324P-20AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega324P-20AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega324P-20MN: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega324P-20MQR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega324P-20MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega324P-20MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega324P-20PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega324P-20PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega324PV-10AN: TQFP44, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PV-10AU: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PV-10AUR: TQFP44, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega324PV-10MN: VQFN44, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PV-10MU: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PV-10PN: PDIP40, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PV-10PU: PDIP40, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 111; + boot_section_size = 512; + signature = 0x1e 0x95 0x08; + + memory "eeprom" + size = 1024; + delay = 10; + ; + + memory "flash" + size = 0x8000; + num_pages = 256; ; memory "sram" size = 2048; - offset = 0x100; ; ; #------------------------------------------------------------ -# ATmega328P +# ATmega324A #------------------------------------------------------------ -part parent "m328" # m328p - desc = "ATmega328P"; - id = "m328p"; +part parent "m324p" # m324a + desc = "ATmega324A"; + id = "m324a"; variants = - "ATmega328P: N/A, Fmax=20 MHz, T=[-40 C, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-15MZ: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-MMH: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-MMHR: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-MN: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-MNR: MLF32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-PN: PDIP28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328P-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 119; - signature = 0x1e 0x95 0x0f; + "ATmega324A: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega324A-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324A-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324A-CU: VFBGA49, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324A-MCH: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324A-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324A-MUR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega324A-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 110; + signature = 0x1e 0x95 0x15; ; #------------------------------------------------------------ -# ATmega328PB +# ATmega324PA #------------------------------------------------------------ -part parent "m328" # m328pb - desc = "ATmega328PB"; - id = "m328pb"; +part parent "m324p" # m324pa + desc = "ATmega324PA"; + id = "m324pa"; variants = - "ATmega328PB-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328PB-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328PB-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328PB-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328PB-MN: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328PB-MNR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328PB-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega328PB-MUR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 120; - n_interrupts = 45; - chip_erase_delay = 10500; - signature = 0x1e 0x95 0x16; + "ATmega324PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-CU: VFBGA49, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-MCH: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-MCHR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-MN: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-MNR: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PA-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 112; + signature = 0x1e 0x95 0x11; +; + +#------------------------------------------------------------ +# ATmega324PB +#------------------------------------------------------------ + +part parent "m324p" # m324pb + desc = "ATmega324PB"; + id = "m324pb"; + variants = + "ATmega324PB-AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PB-ANR: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PB-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PB-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PB-MN: QFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PB-MNR: QFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PB-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega324PB-MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 113; + n_interrupts = 51; + signature = 0x1e 0x95 0x17; memory "efuse" - initval = 0xf7; + initval = 0x07; bitmask = 0x0f; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; + write = "1010.1100--1010.0100--xxxx.xxxx--1111.iiii"; ; memory "prodsig" @@ -11107,2229 +10475,245 @@ part parent "m328" # m328pb ; #------------------------------------------------------------ -# ATmega64M1 +# ATmega644 #------------------------------------------------------------ -part # m64m1 - desc = "ATmega64M1"; - id = "m64m1"; +part parent "m164p" # m644 + desc = "ATmega644"; + id = "m644"; variants = - "ATmega64M1-15MD: VQFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega64M1-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64M1-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 76; - n_interrupts = 31; - n_boot_sections = 4; + "ATmega644: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega644-20AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644-20AUR: TQFP44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega644-20MU: MLF44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644-20MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644-20PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644V-10AU: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644V-10AUR: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644V-10MU: MLF44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644V-10MUR: VQFN44, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega644V-10PU: PDIP40, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 127; + n_interrupts = 28; boot_section_size = 1024; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xe2; - signature = 0x1e 0x96 0x84; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + signature = 0x1e 0x96 0x09; pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + latchcycles = 6; memory "eeprom" size = 2048; page_size = 8; - min_write_delay = 3600; - max_write_delay = 3600; - mode = 0x41; delay = 10; blocksize = 8; - readsize = 256; - read = "1010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.0aaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--00xx.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.aaaa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--0000.0aaa--aaaa.a000--xxxx.xxxx"; + writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; ; memory "flash" - paged = yes; size = 0x10000; page_size = 256; num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; blocksize = 256; - readsize = 256; - read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.0000--0aaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.0000--0aaa.aaaa--iiii.iiii"; - writepage = "0100.1100--0aaa.aaaa--a000.0000--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xd9; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--11oo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--11ii.iiii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--00xx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--00xx.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; memory "sram" size = 4096; - offset = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega32M1 -#------------------------------------------------------------ - -part parent "m64m1" # m32m1 - desc = "ATmega32M1"; - id = "m32m1"; - variants = - "ATmega32M1: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega32M1-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32M1-AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32M1-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 63; - boot_section_size = 512; - signature = 0x1e 0x95 0x84; - - memory "eeprom" - size = 1024; - page_size = 4; - blocksize = 4; - read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - size = 0x8000; - page_size = 128; - blocksize = 128; - read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; - writepage = "0100.1100--00aa.aaaa--aa00.0000--xxxx.xxxx"; - ; - - memory "sram" - size = 2048; - ; -; - -#------------------------------------------------------------ -# ATmega16M1 -#------------------------------------------------------------ - -part parent "m32m1" # m16m1 - desc = "ATmega16M1"; - id = "m16m1"; - variants = - "ATmega16M1-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16M1-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 54; - signature = 0x1e 0x94 0x84; - - memory "eeprom" - size = 512; - read = "1010.0000--0000.000a--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.000a--aaaa.aaaa--iiii.iiii"; - writepage = "1100.0010--0000.000a--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - size = 0x4000; - num_pages = 128; - read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - writepage = "0100.1100--000a.aaaa--aa00.0000--xxxx.xxxx"; - ; - - memory "sram" - size = 1024; ; ; #------------------------------------------------------------ -# ATmega32C1 -#------------------------------------------------------------ - -part parent "m32m1" # m32c1 - desc = "ATmega32C1"; - id = "m32c1"; - variants = - "ATmega32C1-15AD: TQFP32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32C1-15AZ: TQFP32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32C1-15MD: VQFN32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32C1-15MZ: VQFN32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32C1-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32C1-ESAD: TQFP32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32C1-ESMD: VQFN32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32C1-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 62; - signature = 0x1e 0x95 0x86; -; - -#------------------------------------------------------------ -# ATmega64C1 +# ATmega644P #------------------------------------------------------------ -part parent "m64m1" # m64c1 - desc = "ATmega64C1"; - id = "m64c1"; +part parent "m644" # m644p + desc = "ATmega644P"; + id = "m644p"; variants = - "ATmega64C1-15AD: TQFP32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64C1-15AZ: TQFP32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64C1-15MD: VQFN32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64C1-15MZ: VQFN32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64C1-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64C1-ESAZ: TQFP32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64C1-ESMZ: VQFN32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATmega64C1-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 75; - signature = 0x1e 0x96 0x86; + "ATmega644P: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega644P-20AN: TQFP44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20AQ: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20AQR: TQFP44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20MN: VQFN44, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20MQ: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20MQR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20MUR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20PQ: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644P-20PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega644PV-10AN: TQFP44, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10AQ: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10AQR: TQFP44, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10AU: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10AUR: TQFP44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10MN: VQFN44, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10MQ: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10MQR: VQFN44, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10MU: VQFN44, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10MUR: VQFN44, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10PN: PDIP40, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10PQ: PDIP40, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PV-10PU: PDIP40, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 129; + n_interrupts = 31; + signature = 0x1e 0x96 0x0a; ; #------------------------------------------------------------ -# ATA5505 +# ATmega644A #------------------------------------------------------------ -part parent "t167" # ata5505 - desc = "ATA5505"; - id = "ata5505"; +part parent "m644" # m644a + desc = "ATmega644A"; + id = "m644a"; variants = - "ATA5505: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATA5505-P3QW: VFQFN38, Fmax=N/A, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 198; - chip_erase_delay = 4000; - reset = dedicated; - - memory "eeprom" - max_write_delay = 4000; - ; - - memory "lfuse" - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--1111.111o"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.111i"; - ; - - memory "lock" - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--1111.11oo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; - ; -; - -#------------------------------------------------------------ -# ATA6612C -#------------------------------------------------------------ - -part parent "m88" # ata6612c - desc = "ATA6612C"; - id = "ata6612c"; - variants = - "ATA6612C-PLQW: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATA6612C-PLQW-1: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 216; - chip_erase_delay = 4000; - - memory "eeprom" - min_write_delay = 4000; - max_write_delay = 4000; - ; - - memory "efuse" - read = "0101.0000--0000.1000--xxxx.xxxx--1111.1ooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.1iii"; - ; - - memory "lock" - read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATA6613C -#------------------------------------------------------------ - -part parent "m168" # ata6613c - desc = "ATA6613C"; - id = "ata6613c"; - variants = - "ATA6613C-PLQW: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATA6613C-PLQW-1: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 217; - - memory "efuse" - read = "0101.0000--0000.1000--xxxx.xxxx--1111.1ooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.1iii"; - ; - - memory "lock" - read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATA6614Q -#------------------------------------------------------------ - -part parent "m328" # ata6614q - desc = "ATA6614Q"; - id = "ata6614q"; - variants = - "ATA6614Q-PLQW: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATA6614Q-PLQW-1: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 218; - signature = 0x1e 0x95 0x0f; - - memory "efuse" - read = "0101.0000--0000.1000--xxxx.xxxx--1111.1ooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.1iii"; - ; - - memory "lock" - read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATA6616C -#------------------------------------------------------------ - -part parent "t87" # ata6616c - desc = "ATA6616C"; - id = "ata6616c"; - variants = - "ATA6616C-P3PW: VFQFN38, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATA6616C-P3QW: VFQFN38, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATA6616C-P3QW-1: VFQFN38, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 219; - chip_erase_delay = 4000; - reset = dedicated; - - memory "eeprom" - max_write_delay = 4000; - ; - - memory "flash" - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - writepage = "0100.1100--0000.aaaa--aa00.0000--xxxx.xxxx"; - ; - - memory "lfuse" - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--1111.111o"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.111i"; - ; - - memory "lock" - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--1111.11oo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; - ; -; - -#------------------------------------------------------------ -# ATA6617C -#------------------------------------------------------------ - -part parent "t167" # ata6617c - desc = "ATA6617C"; - id = "ata6617c"; - variants = - "ATA6617C-P3QW: VFQFN38, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATA6617C-P3QW-1: VFQFN38, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 220; - chip_erase_delay = 4000; - reset = dedicated; - - memory "eeprom" - max_write_delay = 4000; - ; - - memory "lfuse" - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--1111.111o"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.111i"; - ; - - memory "lock" - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--1111.11oo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; - ; -; - -#------------------------------------------------------------ -# ATA664251 -#------------------------------------------------------------ - -part parent "t167" # ata664251 - desc = "ATA664251"; - id = "ata664251"; - variants = - "ATA664251: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATA664251-WGQW: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATA664251-WGQW-1: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 225; - chip_erase_delay = 4000; - reset = dedicated; - - memory "eeprom" - max_write_delay = 4000; - ; - - memory "lfuse" - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--1111.111o"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.111i"; - ; - - memory "lock" - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--1111.11oo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; - ; -; - -#------------------------------------------------------------ -# ATmega16HVA -#------------------------------------------------------------ - -part # m16hva - desc = "ATmega16HVA"; - id = "m16hva"; - variants = - "ATmega16HVA: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 4.5 V]", - "ATmega16HVA-4CKU: WFLGA36, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", - "ATmega16HVA-4CKUR: WFLGA36, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", - "ATmega16HVA-4TU: TSSOP28, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", - "ATmega16HVA-4TUR: TSSOP28, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; - mcuid = 51; - n_interrupts = 21; - chip_erase_delay = 4000; - signature = 0x1e 0x94 0x0c; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, - 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0f; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 70; - hvleavestabdelay = 101; - resetdelay = 26; - chiperasepolltimeout = 40; - chiperasetime = 1; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 256; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - read = "1010.0000--0000.0000--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.0000--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.0000--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 0x4000; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; - writepage = "0100.1100--000a.aaaa--aa00.0000--xxxx.xxxx"; - ; - - memory "fuse" - size = 1; - initval = 0xdf; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--1111.11oo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; - ; - - memory "sram" - size = 512; - offset = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega8HVA -#------------------------------------------------------------ - -part parent "m16hva" # m8hva - desc = "ATmega8HVA"; - id = "m8hva"; - variants = - "ATmega8HVA: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 4.5 V]", - "ATmega8HVA-4CKU: WFLGA36, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", - "ATmega8HVA-4CKUR: WFLGA36, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", - "ATmega8HVA-4TU: TSSOP28, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", - "ATmega8HVA-4TUR: TSSOP28, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]"; - mcuid = 47; - signature = 0x1e 0x93 0x10; - - memory "flash" - size = 8192; - num_pages = 64; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - writepage = "0100.1100--0000.aaaa--aa00.0000--xxxx.xxxx"; - ; -; - -#------------------------------------------------------------ -# ATmega16HVB -#------------------------------------------------------------ - -part # m16hvb - desc = "ATmega16HVB"; - id = "m16hvb"; - variants = - "ATmega16HVB: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[4 V, 18 V]", - "ATmega16HVB-8X3: TFSOP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 25 V]", - "ATmega16HVB-8X3R: TFSOP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 25 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 52; - n_interrupts = 29; - n_boot_sections = 4; - boot_section_size = 512; - chip_erase_delay = 4000; - pagel = 0xa3; - bs2 = 0xa2; - signature = 0x1e 0x94 0x0d; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 6; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - read = "1010.0000--0000.000a--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.000a--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.000a--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 0x4000; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; - writepage = "0100.1100--000a.aaaa--aa00.0000--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0xdd; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xe9; - bitmask = 0x1f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--111o.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--111i.iiii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; - ; - - memory "sram" - size = 1024; - offset = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega16HVBrevB -#------------------------------------------------------------ - -part parent "m16hvb" # m16hvbrevb - desc = "ATmega16HVBrevB"; - id = "m16hvbrevb"; - variants = - "ATmega16HVBrevB: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[3.0 V, 4.5 V]"; - mcuid = 53; -; - -#------------------------------------------------------------ -# ATmega32HVB -#------------------------------------------------------------ - -part parent "m16hvb" # m32hvb - desc = "ATmega32HVB"; - id = "m32hvb"; - variants = - "ATmega32HVB: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[4 V, 18 V]", - "ATmega32HVB-8X3: TFSOP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 25 V]", - "ATmega32HVB-8X3R: TFSOP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 25 V]"; - mcuid = 60; - signature = 0x1e 0x95 0x10; - - memory "eeprom" - size = 1024; - read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; - writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - size = 0x8000; - num_pages = 256; - read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - writepage = "0100.1100--00aa.aaaa--aa00.0000--xxxx.xxxx"; - ; - - memory "sram" - size = 2048; - ; -; - -#------------------------------------------------------------ -# ATmega32HVBrevB -#------------------------------------------------------------ - -part parent "m32hvb" # m32hvbrevb - desc = "ATmega32HVBrevB"; - id = "m32hvbrevb"; - variants = - "ATmega32HVBrevB: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[3.0 V, 4.5 V]"; - mcuid = 61; -; - -#------------------------------------------------------------ -# ATmega64HVE2 -#------------------------------------------------------------ - -part # m64hve2 - desc = "ATmega64HVE2"; - id = "m64hve2"; - variants = - "ATmega64HVE2: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[3.0 V, 3.6 V]", - "ATmega64HVE2-PLPW: VFQFN48, Fmax=15 MHz, T=[-40 C, 125 C], Vcc=[3 V, 3.6 V]", - "ATmega64HVE2-PLQW: VFQFN48, Fmax=15 MHz, T=[-40 C, 125 C], Vcc=[3 V, 3.6 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; - mcuid = 77; - n_interrupts = 25; - n_boot_sections = 4; - boot_section_size = 1024; - chip_erase_delay = 4000; - signature = 0x1e 0x96 0x10; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, - 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0f; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 70; - hvleavestabdelay = 101; - resetdelay = 26; - chiperasepolltimeout = 40; - chiperasetime = 1; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 1024; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 0x10000; - page_size = 128; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; - writepage = "0100.1100--0aaa.aaaa--aa00.0000--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0xd7; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xf9; - bitmask = 0x0f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--1111.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--1111.iiii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; - ; - - memory "sram" - size = 4096; - offset = 0x100; - ; -; - -#------------------------------------------------------------ -# ATmega32HVE2 -#------------------------------------------------------------ - -part parent "m64hve2" # m32hve2 - desc = "ATmega32HVE2"; - id = "m32hve2"; - variants = - "ATmega32HVE2-PLPW: VFQFN48, Fmax=15 MHz, T=[-40 C, 125 C], Vcc=[3 V, 3.6 V]", - "ATmega32HVE2-PLQW: VFQFN48, Fmax=15 MHz, T=[-40 C, 125 C], Vcc=[3 V, 3.6 V]"; - mcuid = 379; - boot_section_size = 512; - signature = 0x1e 0x95 0x13; - - memory "flash" - size = 0x8000; - num_pages = 256; - ; -; - -#------------------------------------------------------------ -# ATtiny2313 -#------------------------------------------------------------ - -part # t2313 - desc = "ATtiny2313"; - id = "t2313"; - variants = - "ATtiny2313: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny2313-20MUR: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny2313-20PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny2313-20SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny2313-20SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny2313V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313V-10MUR: WQFN20, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313V-10PU: PDIP20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313V-10SU: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313V-10SUR: SOIC20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 42; - n_interrupts = 19; - stk500_devcode = 0x23; -# Use the ATtiny26 devcode: - avr910_devcode = 0x5e; - chip_erase_delay = 9000; - pagel = 0xd4; - bs2 = 0xd6; - signature = 0x1e 0x91 0x0a; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, - 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, - 0x26, 0x36, 0x66, 0x76, 0x2a, 0x3a, 0x6a, 0x7a, - 0x2e, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb2, 0x0f, 0x1f; - eeprom_instr = - 0xbb, 0xfe, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xba, 0x0f, 0xb2, 0x0f, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x1f; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 0; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 128; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - read = "1010.0000--000x.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 32; - readsize = 256; - read_lo = "0010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.00aa--aaaa.aaaa--oooo.oooo"; -# The information in the data sheet of April/2004 is wrong, this works: - loadpage_lo = "0100.0000--000x.xxxx--xxxx.aaaa--iiii.iiii"; -# The information in the data sheet of April/2004 is wrong, this works: - loadpage_hi = "0100.1000--000x.xxxx--xxxx.aaaa--iiii.iiii"; -# The information in the data sheet of April/2004 is wrong, this works: - writepage = "0100.1100--0000.00aa--aaaa.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x64; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - # ATtiny2313 has signature bytes 0x1E 0x91 0x0A - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - -# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. -# The information in the data sheet of April/2004 is wrong, this works: - - memory "calibration" - size = 2; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; - ; - - memory "io" - size = 64; - offset = 0x20; - ; - - memory "sram" - size = 128; - offset = 0x60; - ; -; - -#------------------------------------------------------------ -# ATtiny2313A -#------------------------------------------------------------ - -part parent "t2313" # t2313a - desc = "ATtiny2313A"; - id = "t2313a"; - variants = - "ATtiny2313A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313A-MMH: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313A-MMHR: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313A-MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313A-MUR: WQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313A-PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313A-SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny2313A-SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 43; - n_interrupts = 21; - idr = 0x27; - - memory "lfuse" - initval = 0x62; - ; -; - -#------------------------------------------------------------ -# ATtiny4313 -#------------------------------------------------------------ - -part # t4313 - desc = "ATtiny4313"; - id = "t4313"; - variants = - "ATtiny4313: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny4313-MMH: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny4313-MMHR: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny4313-MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny4313-MUR: MLF20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny4313-PU: PDIP20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny4313-SU: SOIC20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny4313-SUR: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 44; - n_interrupts = 21; - stk500_devcode = 0x23; -# Use the ATtiny26 devcode: - avr910_devcode = 0x5e; - chip_erase_delay = 9000; - pagel = 0xd4; - bs2 = 0xd6; - signature = 0x1e 0x92 0x0d; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, - 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, - 0x26, 0x36, 0x66, 0x76, 0x2a, 0x3a, 0x6a, 0x7a, - 0x2e, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb2, 0x0f, 0x1f; - eeprom_instr = - 0xbb, 0xfe, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xba, 0x0f, 0xb2, 0x0f, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x27; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 0; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 256; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - read = "1010.0000--000x.xxxx--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 32; - readsize = 256; - read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.0aaa--aaax.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - # ATtiny4313 has signature bytes 0x1E 0x92 0x0D - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 2; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; - ; - - memory "io" - size = 64; - offset = 0x20; - ; - - memory "sram" - size = 256; - offset = 0x60; - ; -; - -#------------------------------------------------------------ -# AT90PWM1 -#------------------------------------------------------------ - -part # pwm1 - desc = "AT90PWM1"; - id = "pwm1"; - variants = - "AT90PWM1: SOIC24, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM1-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM1-16MUR: QFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM1-16SU: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 166; - n_interrupts = 32; - n_boot_sections = 4; - boot_section_size = 256; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xe2; - signature = 0x1e 0x93 0x83; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - read = "1010.0000--0000.000a--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.000a--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.000a--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 64; - readsize = 256; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.0000--000a.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.0000--000a.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaa0.0000--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xf9; - bitmask = 0xb7; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--o1oo.1ooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--i1ii.1iii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; - ; - - memory "sram" - size = 512; - offset = 0x100; - ; -; - -#------------------------------------------------------------ -# AT90PWM2 -#------------------------------------------------------------ - -part # pwm2 - desc = "AT90PWM2"; - id = "pwm2"; - variants = - "AT90PWM2: SOIC24, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM2-16SQ: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM2-16SQR: SOIC24, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 167; - n_interrupts = 32; - n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x65; - chip_erase_delay = 9000; - pagel = 0xd8; - bs2 = 0xe2; -# avr910_devcode = ?; - signature = 0x1e 0x93 0x81; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - spmcr = 0x57; - eecr = 0x3f; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback = 0xff 0xff; - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback = 0xff 0xff; - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xf9; - bitmask = 0xf7; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - # AT90PWM2 has signature bytes 0x1E 0x93 0x81 - memory "signature" - size = 3; - read = "0011.0000--00xx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; - - memory "sram" - size = 512; - offset = 0x100; - ; -; - -#------------------------------------------------------------ -# AT90PWM3 -#------------------------------------------------------------ - -# Completely identical to AT90PWM2 (including the signature!) - -part parent "pwm2" # pwm3 - desc = "AT90PWM3"; - id = "pwm3"; - variants = - "AT90PWM3: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM3-16MQ: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM3-16MQT: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 169; - resetdelay = 15; - idr = 0x31; - ocdrev = 1; - - memory "eeprom" - readback = 0x00 0x00; - delay = 5; - ; - - memory "flash" - readback = 0x00 0x00; - delay = 10; - ; - - memory "io" - size = 224; - offset = 0x20; - ; -; - -#------------------------------------------------------------ -# AT90PWM2B -#------------------------------------------------------------ -# Same as AT90PWM2 but different signature. - -part parent "pwm2" # pwm2b - desc = "AT90PWM2B"; - id = "pwm2b"; - variants = - "AT90PWM2B: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM2B-16SU: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM2B-16SUR: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 168; - signature = 0x1e 0x93 0x83; - resetdelay = 15; - idr = 0x31; - ocdrev = 1; - - memory "eeprom" - readback = 0x00 0x00; - delay = 5; - ; - - memory "flash" - readback = 0x00 0x00; - delay = 10; - ; - - memory "io" - size = 224; - offset = 0x20; - ; -; - -#------------------------------------------------------------ -# AT90PWM3B -#------------------------------------------------------------ - -# Completely identical to AT90PWM2B (including the signature!) - -part parent "pwm2b" # pwm3b - desc = "AT90PWM3B"; - id = "pwm3b"; - variants = - "AT90PWM3B: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM3B-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM3B-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 170; -; - -#------------------------------------------------------------ -# AT90PWM161 -#------------------------------------------------------------ - -part # pwm161 - desc = "AT90PWM161"; - id = "pwm161"; - variants = - "AT90PWM161: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM161-16MN: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM161-16MNR: QFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM161-16SN: SOIC20, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM161-16SNR: SOIC20, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 177; - n_interrupts = 20; - n_boot_sections = 4; - boot_section_size = 256; - chip_erase_delay = 9000; - pagel = 0xe2; - bs2 = 0xd6; - signature = 0x1e 0x94 0x8b; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0xc4, 0xe4, 0xc4, 0xe4, 0xcc, 0xec, 0xcc, 0xec, - 0xd4, 0xf4, 0xd4, 0xf4, 0xdc, 0xfc, 0xdc, 0xfc, - 0xc8, 0xe8, 0xd8, 0xf8, 0x4c, 0x6c, 0x5c, 0x7c, - 0xec, 0xbc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - read = "1010.0000--0000.000a--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.000a--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.000a--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 0x4000; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 64; - readsize = 256; - read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; - writepage = "0100.1100--000a.aaaa--aa00.0000--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xd9; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xfd; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; - ; - - memory "sram" - size = 1024; - offset = 0x100; - ; -; - -#------------------------------------------------------------ -# AT90PWM81 -#------------------------------------------------------------ - -part parent "pwm161" # pwm81 - desc = "AT90PWM81"; - id = "pwm81"; - variants = - "AT90PWM81: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM81-16MF: QFN32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM81-16MN: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM81-16SF: SOIC20, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM81-16SN: SOIC20, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM81EP-16MN: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 173; - signature = 0x1e 0x93 0x88; - - memory "flash" - size = 8192; - page_size = 64; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.0000--000a.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.0000--000a.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaa0.0000--xxxx.xxxx"; - ; - - memory "sram" - size = 256; - ; -; - -#------------------------------------------------------------ -# AT90PWM316 -#------------------------------------------------------------ - -# Similar to AT90PWM3B, but with 16 kiB flash, 512 B EEPROM, and 1024 B SRAM. - -part parent "pwm3b" # pwm316 - desc = "AT90PWM316"; - id = "pwm316"; - variants = - "AT90PWM316: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM316-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM316-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 180; - boot_section_size = 512; - signature = 0x1e 0x94 0x83; - - memory "flash" - size = 0x4000; - page_size = 128; - read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--00xx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--00aa.aaaa--aaxx.xxxx--xxxx.xxxx"; - ; - - memory "sram" - size = 1024; - ; -; - -#------------------------------------------------------------ -# AT90PWM216 -#------------------------------------------------------------ -# Completely identical to AT90PWM316 (including the signature!) - -part parent "pwm316" # pwm216 - desc = "AT90PWM216"; - id = "pwm216"; - variants = - "AT90PWM216: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90PWM216-16SU: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "AT90PWM216-16SUR: SOIC24, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 179; -; - -#------------------------------------------------------------ -# ATtiny25 -#------------------------------------------------------------ - -part # t25 - desc = "ATtiny25"; - id = "t25"; - variants = - "ATtiny25: N/A, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[N/A, N/A]", - "ATtiny25-15ST: SOIC8, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20MF: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20MFR: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20MUR: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20SN: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20SNR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20SSH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20SSHR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20SSN: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20SSNR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20SSU: SOIC8N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20SSUR: SOIC8N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25-20SUR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25V-10MF: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10MFR: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10MUR: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10PU: PDIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SH: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SN: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SNR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SSH: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SSHR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SSN: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SSNR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SSU: SOIC8N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SSUR: SOIC8N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SU: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-10SUR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny25V-20MF: MLF20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25V-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25V-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25V-20SH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25V-20SN: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25V-20SSH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25V-20SSN: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25V-20SSU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny25V-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; - mcuid = 16; - n_interrupts = 15; -# no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -# avr910_devcode = ?; -# Try the AT90S2313 devcode: - avr910_devcode = 0x20; - chip_erase_delay = 4500; - signature = 0x1e 0x91 0x08; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, - 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - flash_instr = 0xb4, 0x02, 0x12; - eeprom_instr = - 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; - hventerstabdelay = 100; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - idr = 0x22; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 128; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - read = "1010.0000--000x.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 32; - readsize = 256; - read_lo = "0010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.00aa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxx.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxx.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.00aa--aaaa.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; + "ATmega644A: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega644A-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644A-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644A-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644A-MUR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega644A-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 128; + n_interrupts = 31; +; - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; - ; +#------------------------------------------------------------ +# ATmega644PA +#------------------------------------------------------------ - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--0000.0000--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; +part parent "m644" # m644pa + desc = "ATmega644PA"; + id = "m644pa"; + variants = + "ATmega644PA-AN: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PA-ANR: TQFP44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega644PA-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PA-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PA-MN: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PA-MNR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega644PA-MU: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PA-MUR: VQFN44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega644PA-PN: PDIP40, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega644PA-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 130; + n_interrupts = 31; + signature = 0x1e 0x96 0x0a; +; - # ATtiny25 has signature bytes 0x1E 0x91 0x08 - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; +#------------------------------------------------------------ +# ATmega1284 +#------------------------------------------------------------ - memory "calibration" - size = 2; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; +part parent "m164p" # m1284 + desc = "ATmega1284"; + id = "m1284"; + variants = + "ATmega1284-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1284-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1284-MU: MLF44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1284-MUR: MLF44, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega1284-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 140; + n_interrupts = 35; + boot_section_size = 1024; + signature = 0x1e 0x97 0x06; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + latchcycles = 6; + rampz = 0x3b; + + memory "eeprom" + size = 4096; + page_size = 8; + delay = 10; + blocksize = 8; + readsize = 128; + read = "1010.0000--00xx.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.aaaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; ; - memory "io" - size = 64; - offset = 0x20; + memory "flash" + size = 0x20000; + page_size = 256; + num_pages = 512; + readsize = 128; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--00xx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--00xx.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; memory "sram" - size = 128; - offset = 0x60; + size = 0x4000; ; ; #------------------------------------------------------------ -# ATtiny45 +# ATmega1284P #------------------------------------------------------------ -part # t45 - desc = "ATtiny45"; - id = "t45"; +part parent "m1284" # m1284p + desc = "ATmega1284P"; + id = "m1284p"; variants = - "ATtiny45: N/A, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[N/A, N/A]", - "ATtiny45-15SZ: SOIC8, Fmax=N/A, T=[-40 C, 85 C], Vcc=[N/A, N/A]", - "ATtiny45-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45-20MUR: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45-20SUR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45-20XU: TSSOP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45-20XUR: TSSOP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny45V-10MUR: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny45V-10PU: PDIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny45V-10SH: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny45V-10SU: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny45V-10SUR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny45V-10XU: TSSOP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny45V-10XUR: TSSOP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny45V-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45V-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45V-20SH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45V-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny45V-20XU: TSSOP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; - mcuid = 22; - n_interrupts = 15; - stk500_devcode = 0x14; -# avr910_devcode = ?; -# Try the AT90S2313 devcode: - avr910_devcode = 0x20; - chip_erase_delay = 4500; - signature = 0x1e 0x92 0x06; + "ATmega1284P-AN: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1284P-AU: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1284P-AUR: TQFP44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1284P-MN: QFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1284P-MU: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1284P-MUR: VQFN44, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1284P-PN: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega1284P-PU: PDIP40, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 141; + signature = 0x1e 0x97 0x05; +; + +#------------------------------------------------------------ +# ATmega128RFA1 +#------------------------------------------------------------ +# Identical to ATmega2561 but half the ROM + +part parent ".classic" # m128rfa1 + desc = "ATmega128RFA1"; + id = "m128rfa1"; + variants = + "ATmega128RFA1: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 3.6 V]", + "ATmega128RFA1-ZF: VFQFN64, Fmax=N/A, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega128RFA1-ZFR: VFQFN64, Fmax=N/A, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega128RFA1-ZU: VFQFN64, Fmax=N/A, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", + "ATmega128RFA1-ZU00: VFQFN64, Fmax=N/A, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", + "ATmega128RFA1-ZUR: VFQFN64, Fmax=N/A, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", + "ATmega128RFA1-ZUR-SL514: VFQFN64, Fmax=N/A, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", + "ATmega128RFA1-ZUR00: VFQFN64, Fmax=N/A, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 87; + n_interrupts = 72; + n_boot_sections = 4; + boot_section_size = 1024; + stk500_devcode = 0xb2; + chip_erase_delay = 18500; + pagel = 0xd7; + bs2 = 0xe2; + signature = 0x1e 0xa7 0x01; reset = io; timeout = 200; stabdelay = 100; @@ -13340,82 +10724,75 @@ part # t45 predelay = 1; postdelay = 1; pollmethod = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, - 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - flash_instr = 0xb4, 0x02, 0x12; - eeprom_instr = - 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; - latchcycles = 1; + latchcycles = 5; togglevtg = 1; - poweroffdelay = 25; + poweroffdelay = 15; resetdelayms = 1; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - idr = 0x22; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + rampz = 0x3b; spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3f; + eind = 0x5c; + ocdrev = 3; memory "eeprom" - size = 256; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; + size = 4096; + page_size = 8; + min_write_delay = 13000; + max_write_delay = 13000; mode = 0x41; - delay = 5; - blocksize = 4; + delay = 50; + blocksize = 8; readsize = 256; - read = "1010.0000--000x.xxxx--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; + read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; + size = 0x20000; + page_size = 256; + num_pages = 512; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 10; - blocksize = 64; + delay = 50; + blocksize = 256; readsize = 256; - read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.0aaa--aaax.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0x99; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -13423,81 +10800,51 @@ part # t45 memory "efuse" size = 1; initval = 0xff; - bitmask = 0x01; - min_write_delay = 9000; - max_write_delay = 9000; + bitmask = 0x07; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--0000.0000--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - # ATtiny45 has signature bytes 0x1E 0x92 0x08 (data sheet 2586C-AVR-06/05 doc2586.pdf indicates otherwise) - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 2; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; ; memory "io" - size = 64; - offset = 0x20; + size = 480; ; memory "sram" - size = 256; - offset = 0x60; + size = 0x4000; + offset = 0x200; ; ; #------------------------------------------------------------ -# ATtiny85 +# ATmega644RFR2 #------------------------------------------------------------ -part # t85 - desc = "ATtiny85"; - id = "t85"; +part parent ".classic" # m644rfr2 + desc = "ATmega644RFR2"; + id = "m644rfr2"; variants = - "ATtiny85: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[N/A, N/A]", - "ATtiny85-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny85-20MUR: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny85-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny85-20SF: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny85-20SFR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny85-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny85-20SUR: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny85V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny85V-10MUR: MLF20, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny85V-10PU: PDIP8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny85V-10SH: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny85V-10SU: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny85V-10SUR: SOIC8, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny85V-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny85V-20PU: PDIP8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny85V-20SH: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny85V-20SU: SOIC8, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; - mcuid = 26; - n_interrupts = 15; -# no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -# avr910_devcode = ?; -# Try the AT90S2313 devcode: - avr910_devcode = 0x20; - chip_erase_delay = 4500; - signature = 0x1e 0x93 0x0b; + "ATmega644RFR2-ZF: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega644RFR2-ZFR: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega644RFR2-ZU: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", + "ATmega644RFR2-ZUR: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 131; + n_interrupts = 77; + n_boot_sections = 4; + boot_section_size = 1024; + stk500_devcode = 0xb2; + chip_erase_delay = 18500; + pagel = 0xd7; + bs2 = 0xe2; + signature = 0x1e 0xa6 0x03; reset = io; timeout = 200; stabdelay = 100; @@ -13508,156 +10855,221 @@ part # t85 predelay = 1; postdelay = 1; pollmethod = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, - 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - flash_instr = 0xb4, 0x02, 0x12; - eeprom_instr = - 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; - latchcycles = 1; + latchcycles = 5; togglevtg = 1; - poweroffdelay = 25; + poweroffdelay = 15; resetdelayms = 1; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - idr = 0x22; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 20; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + rampz = 0x3b; spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3f; + eind = 0x5c; + ocdrev = 3; memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; + size = 2048; + page_size = 8; + min_write_delay = 13000; + max_write_delay = 13000; mode = 0x41; - delay = 5; - blocksize = 4; + delay = 50; + blocksize = 8; readsize = 256; - read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + read = "1010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--00xx.xaaa--aaaa.a000--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; + size = 0x10000; + page_size = 256; + num_pages = 256; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 10; - blocksize = 64; + delay = 50; + blocksize = 256; readsize = 256; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--0aaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0x99; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; memory "efuse" size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0xfe; + bitmask = 0x07; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--0000.0000--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + ##### + # Three separate flash pages + # - Offset 0x100 in signature row + # - Only programmable with JTAG or HVPP + # - Readable from an application + # - Cannot be read using ISP + # - Not erased by chip erase + # + memory "usersig" + paged = yes; + size = 768; + page_size = 256; + num_pages = 3; + offset = 0x100; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 50; + blocksize = 256; + readsize = 256; + ; + + memory "io" + size = 480; + ; + + memory "sram" + size = 8192; + offset = 0x200; + ; +; + +#------------------------------------------------------------ +# ATmega1284RFR2 +#------------------------------------------------------------ + +part parent "m644rfr2" # m1284rfr2 + desc = "ATmega1284RFR2"; + id = "m1284rfr2"; + variants = + "ATmega1284RFR2-ZF: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega1284RFR2-ZFR: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega1284RFR2-ZU: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", + "ATmega1284RFR2-ZUR: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; + mcuid = 142; + signature = 0x1e 0xa7 0x03; + + memory "eeprom" + size = 4096; + read = "1010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxa.aaaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xa.aaaa--aaaa.a000--xxxx.xxxx"; + ; + + memory "flash" + size = 0x20000; + num_pages = 512; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; - # ATtiny85 has signature bytes 0x1E 0x93 0x08 - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "sram" + size = 0x4000; ; +; - memory "calibration" - size = 2; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; +#------------------------------------------------------------ +# ATmega2564RFR2 +#------------------------------------------------------------ + +part parent "m644rfr2" # m2564rfr2 + desc = "ATmega2564RFR2"; + id = "m2564rfr2"; + variants = + "ATmega2564RFR2-ZF: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega2564RFR2-ZFR: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega2564RFR2-ZU: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", + "ATmega2564RFR2-ZUR: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; + mcuid = 145; + signature = 0x1e 0xa8 0x03; + ocdrev = 4; + + memory "eeprom" + size = 8192; + read = "1010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxa.aaaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xa.aaaa--aaaa.a000--xxxx.xxxx"; ; - memory "io" - size = 64; - offset = 0x20; + memory "flash" + size = 0x40000; + num_pages = 1024; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + load_ext_addr = "0100.1101--0000.0000--0000.000a--0000.0000"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; memory "sram" - size = 512; - offset = 0x60; + size = 0x8000; ; ; #------------------------------------------------------------ -# ATmega640 +# ATmega64RFR2 #------------------------------------------------------------ -# Almost same as ATmega1280, except for different memory sizes -part # m640 - desc = "ATmega640"; - id = "m640"; +part parent ".classic" # m64rfr2 + desc = "ATmega64RFR2"; + id = "m64rfr2"; variants = - "ATmega640: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega640-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega640-16AUR: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega640-16CU: CBGA100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega640V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega640V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega640V-8CU: CBGA100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega640V-8CUR: TFBGA100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + "ATmega64RFR2-ZF: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega64RFR2-ZFR: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega64RFR2-ZU: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", + "ATmega64RFR2-ZUR: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 126; - n_interrupts = 57; + mcuid = 78; + n_interrupts = 77; n_boot_sections = 4; boot_section_size = 1024; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; + stk500_devcode = 0xb2; + chip_erase_delay = 18500; pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x96 0x08; + bs2 = 0xe2; + signature = 0x1e 0xa6 0x02; reset = io; timeout = 200; stabdelay = 100; @@ -13680,30 +11092,29 @@ part # m640 resetdelayms = 1; hvleavestabdelay = 15; resetdelay = 15; - chiperasepolltimeout = 10; + chiperasepolltimeout = 20; programfusepolltimeout = 5; programlockpolltimeout = 5; idr = 0x31; + rampz = 0x3b; spmcr = 0x57; eecr = 0x3f; + eind = 0x5c; ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 4096; + size = 2048; page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 13000; + max_write_delay = 13000; mode = 0x41; - delay = 10; + delay = 50; blocksize = 8; readsize = 256; - read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; + writepage = "1100.0010--00xx.xaaa--aaaa.a000--xxxx.xxxx"; ; memory "flash" @@ -13714,7 +11125,7 @@ part # m640 min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 10; + delay = 50; blocksize = 256; readsize = 256; read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; @@ -13727,8 +11138,8 @@ part # m640 memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; @@ -13736,45 +11147,52 @@ part # m640 memory "hfuse" size = 1; initval = 0x99; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; memory "efuse" size = 1; - initval = 0xff; + initval = 0xfe; bitmask = 0x07; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + min_write_delay = 4500; + max_write_delay = 4500; ; - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; + ##### + # Three separate flash pages + # - Offset 0x100 in signature row + # - Only programmable with JTAG or HVPP + # - Readable from an application + # - Cannot be read using ISP + # - Not erased by chip erase + # + memory "usersig" + paged = yes; + size = 768; + page_size = 256; + num_pages = 3; + offset = 0x100; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 50; + blocksize = 256; + readsize = 256; ; memory "io" size = 480; - offset = 0x20; ; memory "sram" @@ -13784,31 +11202,103 @@ part # m640 ; #------------------------------------------------------------ -# ATmega1280 +# ATmega128RFR2 #------------------------------------------------------------ -part # m1280 - desc = "ATmega1280"; - id = "m1280"; +part parent "m64rfr2" # m128rfr2 + desc = "ATmega128RFR2"; + id = "m128rfr2"; variants = - "ATmega1280: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega1280-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega1280-16AUR: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega1280-16CU: CBGA100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega1280V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1280V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega1280V-8CU: CBGA100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + "ATmega128RFR2-ZF: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega128RFR2-ZFR: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega128RFR2-ZU: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", + "ATmega128RFR2-ZUR: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; + mcuid = 88; + signature = 0x1e 0xa7 0x02; + + memory "eeprom" + size = 4096; + read = "1010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxa.aaaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xa.aaaa--aaaa.a000--xxxx.xxxx"; + ; + + memory "flash" + size = 0x20000; + num_pages = 512; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + ; + + memory "sram" + size = 0x4000; + ; +; + +#------------------------------------------------------------ +# ATmega256RFR2 +#------------------------------------------------------------ + +part parent "m64rfr2" # m256rfr2 + desc = "ATmega256RFR2"; + id = "m256rfr2"; + variants = + "ATmega256RFR2-ZF: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega256RFR2-ZFR: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", + "ATmega256RFR2-ZU: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", + "ATmega256RFR2-ZUR: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; + mcuid = 108; + signature = 0x1e 0xa8 0x02; + ocdrev = 4; + + memory "eeprom" + size = 8192; + read = "1010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxa.aaaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xa.aaaa--aaaa.a000--xxxx.xxxx"; + ; + + memory "flash" + size = 0x40000; + num_pages = 1024; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + load_ext_addr = "0100.1101--0000.0000--0000.000a--0000.0000"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + ; + + memory "sram" + size = 0x8000; + ; +; + +#------------------------------------------------------------ +# ATmega165 +#------------------------------------------------------------ + +part parent ".classic" # m165 + desc = "ATmega165"; + id = "m165"; + variants = + "ATmega165: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega165-16AI: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega165-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega165-16MI: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega165-16MU: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega165V-8AI: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165V-8MI: VFQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165V-8MU: VFQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 138; - n_interrupts = 57; + mcuid = 95; + n_interrupts = 22; n_boot_sections = 4; - boot_section_size = 1024; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; + boot_section_size = 256; chip_erase_delay = 9000; pagel = 0xd7; bs2 = 0xa0; - signature = 0x1e 0x97 0x03; + signature = 0x1e 0x94 0x07; reset = io; timeout = 200; stabdelay = 100; @@ -13825,62 +11315,56 @@ part # m1280 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; + latchcycles = 6; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; idr = 0x31; - rampz = 0x3b; spmcr = 0x57; eecr = 0x3f; ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 4096; - page_size = 8; + size = 512; + page_size = 4; + num_pages = 128; min_write_delay = 9000; max_write_delay = 9000; mode = 0x41; - delay = 10; - blocksize = 8; + delay = 20; + blocksize = 4; readsize = 256; - read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; + read = "1010.0000--0000.00xa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.00xa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--0000.00xa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x20000; - page_size = 256; - num_pages = 512; + size = 0x4000; + page_size = 128; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 256; + blocksize = 128; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--xxxa.aaaa--aaxx.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; @@ -13888,8 +11372,8 @@ part # m1280 memory "hfuse" size = 1; initval = 0x99; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -13897,514 +11381,581 @@ part # m1280 memory "efuse" size = 1; initval = 0xff; - bitmask = 0x07; - min_write_delay = 9000; - max_write_delay = 9000; + bitmask = 0x0f; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + min_write_delay = 4500; + max_write_delay = 4500; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "sram" + size = 1024; ; +; - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; - ; +#------------------------------------------------------------ +# ATmega165P +#------------------------------------------------------------ - memory "io" - size = 480; - offset = 0x20; - ; +part parent "m165" # m165p + desc = "ATmega165P"; + id = "m165p"; + variants = + "ATmega165P: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega165P-16AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega165P-16ANR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega165P-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega165P-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega165P-16MN: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega165P-16MNR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega165P-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega165P-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega165PV-8AN: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165PV-8ANR: TQFP64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega165PV-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165PV-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165PV-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165PV-8MUR: QFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 97; - memory "sram" - size = 8192; - offset = 0x200; + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; ; #------------------------------------------------------------ -# ATmega1281 +# ATmega165A #------------------------------------------------------------ -# Identical to ATmega1280 -part parent "m1280" # m1281 - desc = "ATmega1281"; - id = "m1281"; +part parent "m165" # m165a + desc = "ATmega165A"; + id = "m165a"; variants = - "ATmega1281: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega1281-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega1281-16AUR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega1281-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega1281-16MUR: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega1281V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1281V-8AUR: QFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1281V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega1281V-8MUR: MLF64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 139; - signature = 0x1e 0x97 0x04; + "ATmega165A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega165A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165A-AUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega165A-MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165A-MUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + mcuid = 96; + signature = 0x1e 0x94 0x10; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ -# ATmega2560 +# ATmega165PA #------------------------------------------------------------ -part # m2560 - desc = "ATmega2560"; - id = "m2560"; +part parent "m165" # m165pa + desc = "ATmega165PA"; + id = "m165pa"; variants = - "ATmega2560: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega2560-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega2560-16AUR: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega2560-16CU: CBGA100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega2560V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega2560V-8AUR: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega2560V-8CU: CBGA100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 143; - n_interrupts = 57; - n_boot_sections = 4; - boot_section_size = 1024; - stk500_devcode = 0xb2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x98 0x01; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - latchcycles = 6; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - rampz = 0x3b; - spmcr = 0x57; - eecr = 0x3f; - eind = 0x5c; - ocdrev = 4; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + "ATmega165PA: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega165PA-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165PA-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165PA-MN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega165PA-MNR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega165PA-MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 98; memory "eeprom" - size = 4096; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; + min_write_delay = 3600; + max_write_delay = 3600; ; +; - memory "flash" - paged = yes; - size = 0x40000; - page_size = 256; - num_pages = 1024; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; +#------------------------------------------------------------ +# ATmega325 +#------------------------------------------------------------ + +part parent "m165" # m325 + desc = "ATmega325"; + id = "m325"; + variants = + "ATmega325: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega325-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega325-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega325-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega325-16MUR: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega325V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325V-8AUR: TQFP64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega325V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325V-8MUR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 114; + boot_section_size = 512; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x05; + + memory "eeprom" + size = 1024; + num_pages = 0; delay = 10; - blocksize = 256; - readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - load_ext_addr = "0100.1101--0000.0000--0000.000a--0000.0000"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; + read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; + ; + + memory "flash" + size = 0x8000; + num_pages = 256; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--aaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--aaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--0aaa.aaaa--aaaa.aaaa--xxxx.xxxx"; ; memory "lfuse" - size = 1; - initval = 0x62; min_write_delay = 9000; max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" - size = 1; - initval = 0x99; min_write_delay = 9000; max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; memory "efuse" - size = 1; - initval = 0xff; bitmask = 0x07; min_write_delay = 9000; max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + write = "1010.1100--1010.0100--0000.0000--1111.1iii"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; min_write_delay = 9000; max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; ; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "sram" + size = 2048; ; +; - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; - ; +#------------------------------------------------------------ +# ATmega325P +#------------------------------------------------------------ - memory "io" - size = 480; - offset = 0x20; - ; +part parent "m325" # m325p + desc = "ATmega325P"; + id = "m325p"; + variants = + "ATmega325P: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega325P-20AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega325P-20AUR: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega325P-20MU: MLF64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega325PV-10AU: TQFP64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325PV-10AUR: TQFP64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325PV-10MU: MLF64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325PV-10MUR: VQFN64, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 116; + signature = 0x1e 0x95 0x0d; +; - memory "sram" - size = 8192; - offset = 0x200; - ; +#------------------------------------------------------------ +# ATmega325A +#------------------------------------------------------------ + +part parent "m325" # m325a + desc = "ATmega325A"; + id = "m325a"; + variants = + "ATmega325A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega325A-AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325A-ANR: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325A-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325A-AUR: TQFP64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega325A-MN: VQFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325A-MNR: VQFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325A-MU: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325A-MUR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 115; ; #------------------------------------------------------------ -# ATmega2561 +# ATmega325PA #------------------------------------------------------------ -part parent "m2560" # m2561 - desc = "ATmega2561"; - id = "m2561"; +part parent "m325" # m325pa + desc = "ATmega325PA"; + id = "m325pa"; variants = - "ATmega2561: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega2561-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega2561-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega2561-16MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", - "ATmega2561-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[4.5 V, 5.5 V]", - "ATmega2561V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega2561V-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega2561V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega2561V-8MUR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 144; - signature = 0x1e 0x98 0x02; + "ATmega325PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega325PA-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325PA-AUR: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega325PA-MU: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega325PA-MUR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 117; + signature = 0x1e 0x95 0x0d; ; #------------------------------------------------------------ -# ATmega128RFA1 +# ATmega3250 #------------------------------------------------------------ -# Identical to ATmega2561 but half the ROM -part parent "m2561" # m128rfa1 - desc = "ATmega128RFA1"; - id = "m128rfa1"; +part parent "m165" # m3250 + desc = "ATmega3250"; + id = "m3250"; variants = - "ATmega128RFA1: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 3.6 V]", - "ATmega128RFA1-ZF: VFQFN64, Fmax=N/A, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega128RFA1-ZFR: VFQFN64, Fmax=N/A, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega128RFA1-ZU: VFQFN64, Fmax=N/A, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", - "ATmega128RFA1-ZU00: VFQFN64, Fmax=N/A, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", - "ATmega128RFA1-ZUR: VFQFN64, Fmax=N/A, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", - "ATmega128RFA1-ZUR-SL514: VFQFN64, Fmax=N/A, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", - "ATmega128RFA1-ZUR00: VFQFN64, Fmax=N/A, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; - mcuid = 87; - n_interrupts = 72; - chip_erase_delay = 18500; - bs2 = 0xe2; - signature = 0x1e 0xa7 0x01; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - latchcycles = 5; - ocdrev = 3; + "ATmega3250: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega3250-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega3250-16AUR: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega3250V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega3250V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 146; + n_interrupts = 25; + boot_section_size = 512; + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x06; memory "eeprom" - min_write_delay = 13000; - max_write_delay = 13000; - delay = 50; + size = 1024; + num_pages = 0; + delay = 10; + read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" - size = 0x20000; - num_pages = 512; - delay = 50; - load_ext_addr = NULL; + size = 0x8000; + num_pages = 256; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--aaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--aaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--0aaa.aaaa--aaaa.aaaa--xxxx.xxxx"; ; memory "lfuse" - min_write_delay = 4500; - max_write_delay = 4500; + min_write_delay = 9000; + max_write_delay = 9000; ; memory "hfuse" - min_write_delay = 4500; - max_write_delay = 4500; + min_write_delay = 9000; + max_write_delay = 9000; ; memory "efuse" - min_write_delay = 4500; - max_write_delay = 4500; + bitmask = 0x07; + min_write_delay = 9000; + max_write_delay = 9000; + write = "1010.1100--1010.0100--0000.0000--1111.1iii"; ; memory "lock" - min_write_delay = 4500; - max_write_delay = 4500; + min_write_delay = 9000; + max_write_delay = 9000; ; memory "sram" - size = 0x4000; + size = 2048; ; ; #------------------------------------------------------------ -# ATmega256RFR2 +# ATmega3250P #------------------------------------------------------------ -part parent "m128rfa1" # m256rfr2 - desc = "ATmega256RFR2"; - id = "m256rfr2"; +part parent "m3250" # m3250p + desc = "ATmega3250P"; + id = "m3250p"; variants = - "ATmega256RFR2-ZF: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega256RFR2-ZFR: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega256RFR2-ZU: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", - "ATmega256RFR2-ZUR: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; - mcuid = 108; - n_interrupts = 77; - signature = 0x1e 0xa8 0x02; - chiperasepolltimeout = 20; - ocdrev = 4; + "ATmega3250P: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega3250P-20AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega3250P-20AUR: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega3250PV-10AU: TQFP100, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega3250PV-10AUR: TQFP100, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 148; + signature = 0x1e 0x95 0x0e; +; + +#------------------------------------------------------------ +# ATmega3250A +#------------------------------------------------------------ + +part parent "m3250" # m3250a + desc = "ATmega3250A"; + id = "m3250a"; + variants = + "ATmega3250A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega3250A-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega3250A-AUR: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 147; +; + +#------------------------------------------------------------ +# ATmega3250PA +#------------------------------------------------------------ + +part parent "m3250" # m3250pa + desc = "ATmega3250PA"; + id = "m3250pa"; + variants = + "ATmega3250PA: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega3250PA-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega3250PA-AUR: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 149; + signature = 0x1e 0x95 0x0e; +; + +#------------------------------------------------------------ +# ATmega645 +#------------------------------------------------------------ + +part parent "m165" # m645 + desc = "ATmega645"; + id = "m645"; + variants = + "ATmega645: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega645-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega645-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega645-16MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega645-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega645V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega645V-8AUR: TQFP64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega645V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega645V-8MUR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 132; + boot_section_size = 1024; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x05; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; memory "eeprom" - size = 8192; - read = "1010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxa.aaaa--aaaa.aaaa--iiii.iiii"; - writepage = "1100.0010--00xa.aaaa--aaaa.a000--xxxx.xxxx"; + size = 2048; + page_size = 8; + num_pages = 0; + delay = 10; + read = "1010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.0aaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--0000.0aaa--aaaa.a000--xxxx.xxxx"; ; memory "flash" - size = 0x40000; - num_pages = 1024; - load_ext_addr = "0100.1101--0000.0000--0000.000a--0000.0000"; + size = 0x10000; + page_size = 256; + num_pages = 256; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--aaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--aaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--aaaa.aaaa--0000.0000"; + ; + + memory "lfuse" + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + min_write_delay = 9000; + max_write_delay = 9000; ; memory "efuse" - initval = 0xfe; + bitmask = 0x07; + min_write_delay = 9000; + max_write_delay = 9000; + write = "1010.1100--1010.0100--0000.0000--1111.1iii"; ; - ##### - # Three separate flash pages - # - Offset 0x100 in signature row - # - Only programmable with JTAG or HVPP - # - Readable from an application - # - Cannot be read using ISP - # - Not erased by chip erase - # - memory "usersig" - paged = yes; - size = 768; - page_size = 256; - num_pages = 3; - offset = 0x100; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 50; - blocksize = 256; - readsize = 256; + memory "lock" + min_write_delay = 9000; + max_write_delay = 9000; ; memory "sram" - size = 0x8000; + size = 4096; ; ; #------------------------------------------------------------ -# ATmega128RFR2 +# ATmega645P #------------------------------------------------------------ -part parent "m256rfr2" # m128rfr2 - desc = "ATmega128RFR2"; - id = "m128rfr2"; +part parent "m645" # m645p + desc = "ATmega645P"; + id = "m645p"; variants = - "ATmega128RFR2-ZF: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega128RFR2-ZFR: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega128RFR2-ZU: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", - "ATmega128RFR2-ZUR: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; - mcuid = 88; - signature = 0x1e 0xa7 0x02; - ocdrev = 3; - - memory "eeprom" - size = 4096; - ; + "ATmega645P: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega645P-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega645P-AUR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega645P-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega645P-MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 134; + signature = 0x1e 0x96 0x0d; +; - memory "flash" - size = 0x20000; - num_pages = 512; - load_ext_addr = NULL; - ; +#------------------------------------------------------------ +# ATmega645A +#------------------------------------------------------------ - memory "sram" - size = 0x4000; - ; +part parent "m645" # m645a + desc = "ATmega645A"; + id = "m645a"; + variants = + "ATmega645A: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega645A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega645A-AUR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega645A-MU: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega645A-MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 133; ; #------------------------------------------------------------ -# ATmega64RFR2 +# ATmega6450 #------------------------------------------------------------ -part parent "m128rfr2" # m64rfr2 - desc = "ATmega64RFR2"; - id = "m64rfr2"; +part parent "m165" # m6450 + desc = "ATmega6450"; + id = "m6450"; variants = - "ATmega64RFR2-ZF: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega64RFR2-ZFR: VFQFN64, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega64RFR2-ZU: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", - "ATmega64RFR2-ZUR: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; - mcuid = 78; - signature = 0x1e 0xa6 0x02; + "ATmega6450: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega6450-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega6450-16AUR: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega6450V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega6450V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 154; + n_interrupts = 25; + boot_section_size = 1024; + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x06; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; memory "eeprom" size = 2048; - read = "1010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; - writepage = "1100.0010--00xx.xaaa--aaaa.a000--xxxx.xxxx"; + page_size = 8; + num_pages = 0; + delay = 10; + read = "1010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.0aaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--0000.0aaa--aaaa.a000--xxxx.xxxx"; ; memory "flash" size = 0x10000; + page_size = 256; num_pages = 256; - read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - writepage = "0100.1100--0aaa.aaaa--axxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--aaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--aaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--aaaa.aaaa--0000.0000"; ; - memory "sram" - size = 8192; + memory "lfuse" + min_write_delay = 9000; + max_write_delay = 9000; ; -; -#------------------------------------------------------------ -# ATmega2564RFR2 -#------------------------------------------------------------ + memory "hfuse" + min_write_delay = 9000; + max_write_delay = 9000; + ; -part parent "m256rfr2" # m2564rfr2 - desc = "ATmega2564RFR2"; - id = "m2564rfr2"; - variants = - "ATmega2564RFR2-ZF: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega2564RFR2-ZFR: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega2564RFR2-ZU: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", - "ATmega2564RFR2-ZUR: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; - mcuid = 145; - signature = 0x1e 0xa8 0x03; + memory "efuse" + bitmask = 0x07; + min_write_delay = 9000; + max_write_delay = 9000; + write = "1010.1100--1010.0100--0000.0000--1111.1iii"; + ; + + memory "lock" + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ -# ATmega1284RFR2 +# ATmega6450P #------------------------------------------------------------ -part parent "m128rfr2" # m1284rfr2 - desc = "ATmega1284RFR2"; - id = "m1284rfr2"; +part parent "m6450" # m6450p + desc = "ATmega6450P"; + id = "m6450p"; variants = - "ATmega1284RFR2-ZF: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega1284RFR2-ZFR: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega1284RFR2-ZU: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", - "ATmega1284RFR2-ZUR: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; - mcuid = 142; - signature = 0x1e 0xa7 0x03; + "ATmega6450P: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega6450P-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega6450P-AUR: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 156; + signature = 0x1e 0x96 0x0e; ; #------------------------------------------------------------ -# ATmega644RFR2 +# ATmega6450A #------------------------------------------------------------ -part parent "m64rfr2" # m644rfr2 - desc = "ATmega644RFR2"; - id = "m644rfr2"; +part parent "m6450" # m6450a + desc = "ATmega6450A"; + id = "m6450a"; variants = - "ATmega644RFR2-ZF: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega644RFR2-ZFR: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 3.6 V]", - "ATmega644RFR2-ZU: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]", - "ATmega644RFR2-ZUR: VFQFN48, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 3.6 V]"; - mcuid = 131; - signature = 0x1e 0xa6 0x03; + "ATmega6450A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega6450A-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega6450A-AUR: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 155; ; #------------------------------------------------------------ -# ATtiny24 +# ATmega48 #------------------------------------------------------------ -part # t24 - desc = "ATtiny24"; - id = "t24"; +part parent ".classic" # m48 + desc = "ATmega48"; + id = "m48"; variants = - "ATtiny24: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24-20MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny24-20MUR: WQFN20, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny24-20PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny24-20SSU: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny24-20SSUR: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny24V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24V-10MUR: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24V-10PU: PDIP14, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24V-10SSU: SOIC14N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24V-10SSUR: SOIC14N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; - mcuid = 14; - n_interrupts = 17; -# no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -# avr910_devcode = ?; -# Try the AT90S2313 devcode: - avr910_devcode = 0x20; - chip_erase_delay = 4500; - signature = 0x1e 0x91 0x0b; + "ATmega48: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega48-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48-20MMH: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48-20MMU: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48-20MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48V-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48V-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48V-10MMH: VQFN28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48V-10MMU: QFN28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48V-10MMUR: VQFN28, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega48V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48V-10MUR: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48V-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 67; + n_interrupts = 26; + stk500_devcode = 0x59; + chip_erase_delay = 45000; + pagel = 0xd7; + bs2 = 0xc2; +# avr910_devcode = 0x??; + signature = 0x1e 0x92 0x05; reset = io; timeout = 200; stabdelay = 100; @@ -14415,74 +11966,69 @@ part # t24 predelay = 1; postdelay = 1; pollmethod = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, - 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0f; - flash_instr = 0xb4, 0x07, 0x17; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; eeprom_instr = - 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 1; + latchcycles = 5; togglevtg = 1; - poweroffdelay = 50; - resetdelayus = 3; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - hvspcmdexedelay = 50; - idr = 0x27; + poweroffdelay = 15; + resetdelayms = 1; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; spmcr = 0x57; - eecr = 0x3c; + eecr = 0x3f; ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 128; + size = 256; page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; + min_write_delay = 3600; + max_write_delay = 3600; mode = 0x41; - delay = 10; + delay = 20; blocksize = 4; readsize = 256; - read = "1010.0000--000x.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--xaaa.aaaa--iiii.iiii"; + read = "1010.0000--000x.xxxx--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxx--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 2048; - page_size = 32; + size = 4096; + page_size = 64; num_pages = 64; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 32; + blocksize = 64; readsize = 256; - read_lo = "0010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.00aa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxx.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxx.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.00aa--aaaa.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.0aaa--aaax.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; @@ -14490,8 +12036,8 @@ part # t24 memory "hfuse" size = 1; initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; @@ -14500,576 +12046,592 @@ part # t24 size = 1; initval = 0xff; bitmask = 0x01; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x03; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--0000.0000--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; - ; - - # ATtiny24 has signature bytes 0x1E 0x91 0x0B - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 64; - offset = 0x20; + min_write_delay = 4500; + max_write_delay = 4500; ; memory "sram" - size = 128; - offset = 0x60; + size = 512; ; ; #------------------------------------------------------------ -# ATtiny24A +# ATmega48P #------------------------------------------------------------ -part parent "t24" # t24a - desc = "ATtiny24A"; - id = "t24a"; +part parent "m48" # m48p + desc = "ATmega48P"; + id = "m48p"; variants = - "ATtiny24A: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-CCU: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-CCUR: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-MF: QFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-MFR: QFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-MM8: VQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-MM8R: VQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-MMH: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-MMHR: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-MUR: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-SSF: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-SSFR: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-SSU: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny24A-SSUR: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 15; + "ATmega48P-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48P-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48P-20MMU: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48P-20MMUR: VQFN28, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega48P-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48P-20MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48P-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega48PV-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PV-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PV-10MMU: MLF28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PV-10MMUR: VQFN28, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega48PV-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PV-10MUR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega48PV-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 69; + signature = 0x1e 0x92 0x0a; ; #------------------------------------------------------------ -# ATtiny44 +# ATmega48A #------------------------------------------------------------ -part # t44 - desc = "ATtiny44"; - id = "t44"; +part parent "m48" # m48a + desc = "ATmega48A"; + id = "m48a"; variants = - "ATtiny44: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44-20MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny44-20MUR: WQFN20, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny44-20PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny44-20SSU: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny44-20SSUR: SOIC14N, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny44V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44V-10MUR: WQFN20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44V-10PU: PDIP14, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44V-10SSU: SOIC14N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44V-10SSUR: SOIC14N, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; - mcuid = 20; - n_interrupts = 17; -# no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -# avr910_devcode = ?; -# Try the AT90S2313 devcode: - avr910_devcode = 0x20; - chip_erase_delay = 4500; - signature = 0x1e 0x92 0x07; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, - 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0f; - flash_instr = 0xb4, 0x07, 0x17; - eeprom_instr = - 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; - hventerstabdelay = 100; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 50; - resetdelayus = 3; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - hvspcmdexedelay = 50; - idr = 0x27; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 256; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - read = "1010.0000--000x.xxxx--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--aaaa.aa00--xxxx.xxxx"; - ; + "ATmega48A-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48A-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48A-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48A-MMH: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48A-MMHR: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48A-MUR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega48A-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 68; +; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 64; - readsize = 256; - read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.0aaa--aaax.xxxx--xxxx.xxxx"; - ; +#------------------------------------------------------------ +# ATmega48PA +#------------------------------------------------------------ - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; +part parent "m48" # m48pa + desc = "ATmega48PA"; + id = "m48pa"; + variants = + "ATmega48PA: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-AUR: QFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-MMH: QFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-MMHR: QFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-MMN: QFN28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-MMNR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-MN: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-MNR: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-PN: SPDIP28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PA-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 70; + signature = 0x1e 0x92 0x0a; +; - memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; +#------------------------------------------------------------ +# ATmega88 +#------------------------------------------------------------ - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; - ; +part parent "m48" # m88 + desc = "ATmega88"; + id = "m88"; + variants = + "ATmega88: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega88-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega88-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega88-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega88-20MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega88-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega88V-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88V-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88V-10MUR: VQFN32, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega88V-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 79; + n_boot_sections = 4; + boot_section_size = 256; + stk500_devcode = 0x73; + chip_erase_delay = 9000; +# avr910_devcode = 0x??; + signature = 0x1e 0x93 0x0a; - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--0000.0000--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; + memory "eeprom" + size = 512; + read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; - # ATtiny44 has signature bytes 0x1E 0x92 0x07 - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "flash" + size = 8192; + num_pages = 128; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; ; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + memory "efuse" + initval = 0xf9; + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; ; - memory "io" - size = 64; - offset = 0x20; + memory "lock" + bitmask = 0x3f; ; memory "sram" - size = 256; - offset = 0x60; + size = 1024; ; ; #------------------------------------------------------------ -# ATtiny44A +# ATmega88P #------------------------------------------------------------ -part parent "t44" # t44a - desc = "ATtiny44A"; - id = "t44a"; +part parent "m88" # m88p + desc = "ATmega88P"; + id = "m88p"; variants = - "ATtiny44A: N/A, Fmax=20 MHz, T=[-40 C, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-CCU: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-CCUR: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-MF: QFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-MFR: QFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-MMH: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-MMHR: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-MUR: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-SSF: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-SSFR: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-SSU: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny44A-SSUR: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = XVII + IV; # 21; + "ATmega88P-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega88P-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega88P-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega88P-20MUR: VQFN32, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega88P-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega88PV-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PV-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PV-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PV-10MUR: VQFN32, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega88PV-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 81; + signature = 0x1e 0x93 0x0f; +; +#------------------------------------------------------------ +# ATmega88A +#------------------------------------------------------------ +part parent "m88" # m88a + desc = "ATmega88A"; + id = "m88a"; + variants = + "ATmega88A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega88A-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88A-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88A-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88A-MMH: QFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88A-MMHR: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88A-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88A-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 80; ; #------------------------------------------------------------ -# ATtiny84 +# ATmega88PA #------------------------------------------------------------ -part # t84 - desc = "ATtiny84"; - id = "t84"; - variants = - "ATtiny84: N/A, Fmax=20 MHz, T=[N/A, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84-15MZ: MLF20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny84-20MU: MLF20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny84-20MUR: WQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny84-20PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny84-20SSU: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny84-20SSUR: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny84V-10MU: MLF20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84V-10MUR: WQFN20, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84V-10PU: PDIP14, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84V-10SSU: SOIC14, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84V-10SSUR: SOIC14, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; - mcuid = 24; - n_interrupts = 17; -# no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -# avr910_devcode = ?; -# Try the AT90S2313 devcode: - avr910_devcode = 0x20; - chip_erase_delay = 4500; - signature = 0x1e 0x93 0x0c; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - hvsp_controlstack = - 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, - 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0f; - flash_instr = 0xb4, 0x07, 0x17; - eeprom_instr = - 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; - hventerstabdelay = 100; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 50; - resetdelayus = 3; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - hvspcmdexedelay = 50; - idr = 0x27; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; +part parent "m88" # m88pa + desc = "ATmega88PA"; + id = "m88pa"; + variants = + "ATmega88PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-15MZ: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-MMH: QFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-MMHR: VQFN28, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-MMN: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-MMNR: VQFN28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-MMUR: PDIP28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-MN: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-MNR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-PN: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PA-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 82; + signature = 0x1e 0x93 0x0f; +; + +#------------------------------------------------------------ +# ATmega168 +#------------------------------------------------------------ + +part parent "m48" # m168 + desc = "ATmega168"; + id = "m168"; + variants = + "ATmega168: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega168-15AD: TQFP32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168-20MQ: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168-20MQR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168-20MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168V-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168V-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168V-10MQ: QFN32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168V-10MQR: QFN32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168V-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168V-10MUR: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168V-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 99; + n_boot_sections = 4; + boot_section_size = 256; + stk500_devcode = 0x86; + chip_erase_delay = 9000; +# avr910_devcode = 0x??; + signature = 0x1e 0x94 0x06; memory "eeprom" size = 512; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" - paged = yes; - size = 8192; - page_size = 64; + size = 0x4000; + page_size = 128; num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 64; - readsize = 256; - read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + blocksize = 128; + read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--000a.aaaa--aaxx.xxxx--xxxx.xxxx"; ; memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x01; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; + initval = 0xf9; + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; ; memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--0000.0000--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; + bitmask = 0x3f; ; - # ATtiny84 has signature bytes 0x1E 0x93 0x0C - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "sram" + size = 1024; ; +; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; +#------------------------------------------------------------ +# ATmega168P +#------------------------------------------------------------ - memory "io" - size = 64; - offset = 0x20; - ; +part parent "m168" # m168p + desc = "ATmega168P"; + id = "m168p"; + variants = + "ATmega168P-20AN: TQFP32, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega168P-20ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168P-20AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168P-20AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168P-20MQ: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168P-20MQR: QFN32, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega168P-20MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168P-20MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168P-20PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega168PV-10AN: TQFP32, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega168PV-10AU: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PV-10AUR: TQFP32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PV-10MU: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PV-10MUR: MLF32, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PV-10PU: PDIP28, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 101; + signature = 0x1e 0x94 0x0b; +; - memory "sram" - size = 512; - offset = 0x60; - ; +#------------------------------------------------------------ +# ATmega168A +#------------------------------------------------------------ + +part parent "m168" # m168a + desc = "ATmega168A"; + id = "m168a"; + variants = + "ATmega168A: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega168A-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168A-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168A-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168A-MMH: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168A-MMHR: VQFN28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168A-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168A-MUR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168A-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 100; ; #------------------------------------------------------------ -# ATtiny84A +# ATmega168PA #------------------------------------------------------------ -part parent "t84" # t84a - desc = "ATtiny84A"; - id = "t84a"; +part parent "m168" # m168pa + desc = "ATmega168PA"; + id = "m168pa"; variants = - "ATtiny84A-CCU: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-CCUR: UFBGA15, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-MF: WQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-MFR: WQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-MMH: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-MMHR: VQFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-MU: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-MUR: QFN20, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-PU: PDIP14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-SSF: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-SSFR: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-SSU: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny84A-SSUR: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 25; + "ATmega168PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-CCU: UFBGA32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-MMH: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-MMHR: QFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-MN: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-MNR: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-MU: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-MUR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-PN: PDIP28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PA-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 102; + signature = 0x1e 0x94 0x0b; ; #------------------------------------------------------------ -# ATtiny441 +# ATmega328 #------------------------------------------------------------ -part parent "t44" # t441 - desc = "ATtiny441"; - id = "t441"; +part parent "m48" # m328 + desc = "ATmega328"; + id = "m328"; variants = - "ATtiny441-MMH: VQFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny441-MMHR: VQFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny441-MU: QFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny441-MUR: QFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny441-SSU: SOIC14, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny441-SSUR: SOIC14, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]"; - mcuid = 32; - n_interrupts = 30; - n_page_erase = 4; - signature = 0x1e 0x92 0x15; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvspcmdexedelay = 0; + "ATmega328-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328-MMH: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328-MMHR: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328-MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328-MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 118; + n_boot_sections = 4; + boot_section_size = 512; + stk500_devcode = 0x86; + chip_erase_delay = 9000; +# avr910_devcode = 0x??; + signature = 0x1e 0x95 0x14; + + memory "eeprom" + size = 1024; + read = "1010.0000--000x.xxaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; + ; memory "flash" - page_size = 16; + size = 0x8000; + page_size = 128; num_pages = 256; - blocksize = 16; - loadpage_lo = "0100.0000--000x.xxxx--xxxx.xaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxx.xaaa--iiii.iiii"; - writepage = "0100.1100--0000.0aaa--aaaa.axxx--xxxx.xxxx"; + blocksize = 128; + read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--00aa.aaaa--aaxx.xxxx--xxxx.xxxx"; ; - memory "lfuse" - bitmask = 0xdf; + memory "hfuse" + initval = 0xd9; ; memory "efuse" - bitmask = 0xff; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; ; - memory "io" - size = 224; + memory "lock" + bitmask = 0x3f; ; memory "sram" - offset = 0x100; + size = 2048; ; ; #------------------------------------------------------------ -# ATtiny841 +# ATmega328P #------------------------------------------------------------ -part parent "t84" # t841 - desc = "ATtiny841"; - id = "t841"; +part parent "m328" # m328p + desc = "ATmega328P"; + id = "m328p"; variants = - "ATtiny841-MMH: VQFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny841-MMHR: VQFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny841-MU: QFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny841-MUR: QFN20, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny841-SSU: SOIC14, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]", - "ATtiny841-SSUR: SOIC14, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.7 V, 5.5 V]"; - mcuid = 37; - n_interrupts = 30; - n_page_erase = 4; - signature = 0x1e 0x93 0x15; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvspcmdexedelay = 0; + "ATmega328P: N/A, Fmax=20 MHz, T=[-40 C, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-15MZ: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-MMH: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-MMHR: MLF28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-MN: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-MNR: MLF32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-MU: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-MUR: MLF32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-PN: PDIP28, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328P-PU: PDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 119; + signature = 0x1e 0x95 0x0f; +; - memory "flash" - page_size = 16; - num_pages = 512; - blocksize = 16; - loadpage_lo = "0100.0000--000x.xxxx--xxxx.xaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxx.xaaa--iiii.iiii"; - writepage = "0100.1100--0000.aaaa--aaaa.axxx--xxxx.xxxx"; - ; +#------------------------------------------------------------ +# ATmega48PB +#------------------------------------------------------------ - memory "lfuse" - bitmask = 0xdf; - ; +part parent "m48" # m48pb + desc = "ATmega48PB"; + id = "m48pb"; + variants = + "ATmega48PB-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PB-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PB-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PB-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PB-MN: VQFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PB-MNR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega48PB-MU: VFQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega48PB-MUR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + mcuid = 71; + n_interrupts = 27; + chip_erase_delay = 10500; + signature = 0x1e 0x92 0x10; +; + +#------------------------------------------------------------ +# ATmega88PB +#------------------------------------------------------------ + +part parent "m88" # m88pb + desc = "ATmega88PB"; + id = "m88pb"; + variants = + "ATmega88PB-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PB-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PB-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PB-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PB-MN: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PB-MNR: VQFN32, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega88PB-MU: VFQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega88PB-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 83; + n_interrupts = 27; + chip_erase_delay = 10500; + signature = 0x1e 0x93 0x16; +; + +#------------------------------------------------------------ +# ATmega168PB +#------------------------------------------------------------ + +part parent "m168" # m168pb + desc = "ATmega168PB"; + id = "m168pb"; + variants = + "ATmega168PB-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PB-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PB-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PB-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PB-MN: VQFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PB-MU: VFQFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega168PB-MUR: VQFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 103; + n_interrupts = 27; + chip_erase_delay = 10500; + signature = 0x1e 0x94 0x15; +; + +#------------------------------------------------------------ +# ATmega328PB +#------------------------------------------------------------ + +part parent "m328" # m328pb + desc = "ATmega328PB"; + id = "m328pb"; + variants = + "ATmega328PB-AN: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328PB-ANR: TQFP32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328PB-AU: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328PB-AUR: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328PB-MN: QFN32, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328PB-MNR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328PB-MU: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega328PB-MUR: QFN32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 120; + n_interrupts = 45; + chip_erase_delay = 10500; + signature = 0x1e 0x95 0x16; memory "efuse" - bitmask = 0xff; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; + initval = 0xf7; + bitmask = 0x0f; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; ; - memory "io" - size = 224; + memory "prodsig" + size = 24; + read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; ; - memory "sram" - offset = 0x100; + memory "sigrow" + alias "prodsig"; + ; + + memory "sernum" + size = 10; + offset = 0xe; # Sub-region of prodsig + read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; ; ; #------------------------------------------------------------ -# ATtiny43U +# ATmega169 #------------------------------------------------------------ -part # t43u - desc = "ATtiny43U"; - id = "t43u"; +part parent ".classic" # m169 + desc = "ATmega169"; + id = "m169"; variants = - "ATtiny43U: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[0.7 V, 5.5 V]", - "ATtiny43U-MU: QFN20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny43U-MUR: WQFN20, Fmax=8 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATtiny43U-SU: SOIC20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATtiny43U-SUR: SOIC20, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 19; - n_interrupts = 16; - stk500_devcode = 0x14; -# avr910_devcode = ?; -# Try the AT90S2313 devcode: - avr910_devcode = 0x20; - chip_erase_delay = 1000; - pagel = 0xa3; - bs2 = 0xa2; - signature = 0x1e 0x92 0x0c; - reset = io; + "ATmega169: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega169-16AI: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169-16MI: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169-16MU: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169L-4AC: TQFP64, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169L-4MC: VFQFN64, Fmax=4 MHz, T=[0 C, 70 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169L-8AI: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169L-8MI: VFQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169V-1AC: TQFP64, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169V-1MC: VFQFN64, Fmax=1 MHz, T=[0 C, 70 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169V-8AI: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169V-8MI: VFQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169V-8MU: VFQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; + mcuid = 104; + n_interrupts = 23; + n_boot_sections = 4; + boot_section_size = 256; + stk500_devcode = 0x85; + avr910_devcode = 0x78; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + signature = 0x1e 0x94 0x05; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -15078,66 +12640,59 @@ part # t43u pollvalue = 0x53; predelay = 1; postdelay = 1; + pollmethod = 1; pp_controlstack = - 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, - 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, - 0x06, 0x16, 0x46, 0x56, 0x0a, 0x1a, 0x4a, 0x5a, - 0x1e, 0x7c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb4, 0x07, 0x17; - eeprom_instr = - 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, - 0x99, 0xe1, 0xbb, 0xac; + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; latchcycles = 5; togglevtg = 1; - poweroffdelay = 20; + poweroffdelay = 15; resetdelayms = 1; hvleavestabdelay = 15; - resetdelay = 15; chiperasepolltimeout = 10; programfusepolltimeout = 5; programlockpolltimeout = 5; - idr = 0x27; + idr = 0x31; spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + eecr = 0x3f; + ocdrev = 2; memory "eeprom" - size = 64; + size = 512; page_size = 4; - num_pages = 16; - min_write_delay = 4000; - max_write_delay = 4500; + min_write_delay = 9000; + max_write_delay = 9000; + readback = 0xff 0xff; mode = 0x41; - delay = 10; + delay = 20; blocksize = 4; readsize = 256; - read = "1010.0000--000x.xxxx--00aa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxx--00aa.aaaa--iiii.iiii"; + read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxx--00aa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; + size = 0x4000; + page_size = 128; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; + readback = 0xff 0xff; mode = 0x41; - delay = 10; - blocksize = 64; + delay = 6; + blocksize = 128; readsize = 256; - read_lo = "0010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; - writepage = "0100.1100--0000.0aaa--aaax.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--xxxa.aaaa--aaxx.xxxx--xxxx.xxxx"; ; memory "lfuse" @@ -15151,7 +12706,7 @@ part # t43u memory "hfuse" size = 1; - initval = 0xdf; + initval = 0x99; min_write_delay = 4500; max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; @@ -15161,413 +12716,531 @@ part # t43u memory "efuse" size = 1; initval = 0xff; - bitmask = 0x01; + bitmask = 0x0f; min_write_delay = 4500; max_write_delay = 4500; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xxxi"; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; + ; + + memory "lock" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "sram" + size = 1024; + ; +; + +#------------------------------------------------------------ +# ATmega169P +#------------------------------------------------------------ + +part parent "m169" # m169p + desc = "ATmega169P"; + id = "m169p"; + variants = + "ATmega169P: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega169P-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169P-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169P-16MCH: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169P-16MCHR: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega169P-16MCU: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169P-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega169P-16MUR: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega169PV-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PV-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PV-8MCH: QFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PV-8MCHR: QFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega169PV-8MCU: VQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PV-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PV-8MUR: QFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 106; + reset = io; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelay = 15; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + readback = 0x00 0x00; + ; + + memory "flash" + readback = 0x00 0x00; + delay = 10; + ; +; + +#------------------------------------------------------------ +# ATmega169A +#------------------------------------------------------------ + +part parent "m169" # m169a + desc = "ATmega169A"; + id = "m169a"; + variants = + "ATmega169A-AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169A-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169A-MCH: DRQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169A-MN: QFN64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169A-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169A-MUR: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 105; + signature = 0x1e 0x94 0x11; + reset = io; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelay = 15; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + readback = 0x00 0x00; + ; + + memory "flash" + readback = 0x00 0x00; + delay = 10; + ; +; + +#------------------------------------------------------------ +# ATmega169PA +#------------------------------------------------------------ + +part parent "m169" # m169pa + desc = "ATmega169PA"; + id = "m169pa"; + variants = + "ATmega169PA-AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PA-ANR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PA-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PA-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PA-MCH: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PA-MCHR: QFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega169PA-MN: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PA-MNR: QFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega169PA-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega169PA-MUR: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 107; + reset = io; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelay = 15; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + readback = 0x00 0x00; + ; + + memory "flash" + readback = 0x00 0x00; + delay = 10; + ; +; + +#------------------------------------------------------------ +# ATmega329 +#------------------------------------------------------------ + +part parent "m169" # m329 + desc = "ATmega329"; + id = "m329"; + variants = + "ATmega329: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega329-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega329-16AUR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega329-16MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega329-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega329V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329V-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329V-8MUR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 121; + boot_section_size = 512; + stk500_devcode = 0x00; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x03; + reset = io; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelay = 15; + ocdrev = 3; + + memory "eeprom" + size = 1024; + readback = 0x00 0x00; + delay = 10; + read = "1010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; + ; + + memory "flash" + size = 0x8000; + num_pages = 256; + readback = 0x00 0x00; + delay = 10; + read_lo = "0010.0000--xaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xaaa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--xaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; + ; + + memory "efuse" + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + ; + + memory "sram" + size = 2048; ; +; + +#------------------------------------------------------------ +# ATmega329P +#------------------------------------------------------------ + +part parent "m329" # m329p + desc = "ATmega329P"; + id = "m329p"; + variants = + "ATmega329P: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega329P-20AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329P-20ANR: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega329P-20AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega329P-20AUR: TQFP64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega329P-20MN: VQFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", + "ATmega329P-20MNR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega329P-20MU: MLF64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega329P-20MUR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega329PV-10AU: TQFP64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329PV-10AUR: TQFP64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329PV-10MN: VQFN64, Fmax=10 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329PV-10MU: MLF64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329PV-10MUR: VQFN64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 123; + signature = 0x1e 0x95 0x0b; - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; +; - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; +#------------------------------------------------------------ +# ATmega329A +#------------------------------------------------------------ - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; +part parent "m329" # m329a + desc = "ATmega329A"; + id = "m329a"; + variants = + "ATmega329A-AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329A-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329A-AUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega329A-MN: QFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329A-MU: VQFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 122; - memory "io" - size = 64; - offset = 0x20; + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; +; - memory "sram" - size = 256; - offset = 0x60; +#------------------------------------------------------------ +# ATmega329PA +#------------------------------------------------------------ + +part parent "m329" # m329pa + desc = "ATmega329PA"; + id = "m329pa"; + variants = + "ATmega329PA-AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329PA-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329PA-AUR: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329PA-MN: QFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329PA-MU: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega329PA-MUR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + mcuid = 124; + signature = 0x1e 0x95 0x0b; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; ; #------------------------------------------------------------ -# ATmega16u4 +# ATmega3290 #------------------------------------------------------------ -part # m16u4 - desc = "ATmega16U4"; - id = "m16u4"; +part parent "m169" # m3290 + desc = "ATmega3290"; + id = "m3290"; variants = - "ATmega16U4-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16U4-AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16U4-MU: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16U4-MUR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega16U4RC-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16U4RC-MU: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + "ATmega3290: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega3290-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega3290-16AUR: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega3290V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega3290V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 57; - n_interrupts = 43; - n_boot_sections = 4; + mcuid = 150; + n_interrupts = 25; boot_section_size = 512; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x94 0x88; - usbpid = 0x2ff4; + stk500_devcode = 0x00; + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x04; reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - latchcycles = 5; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + size = 1024; + readback = 0x00 0x00; + delay = 10; + read = "1010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" - paged = yes; - size = 0x4000; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; + size = 0x8000; + num_pages = 256; + readback = 0x00 0x00; + delay = 10; + read_lo = "0010.0000--xaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--xaaa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--xaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; ; - memory "lfuse" - size = 1; - initval = 0x52; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + memory "efuse" + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; ; - memory "hfuse" - size = 1; - initval = 0x99; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + memory "sram" + size = 2048; ; +; - memory "efuse" - size = 1; - initval = 0xfb; - bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.iiii"; - ; +#------------------------------------------------------------ +# ATmega3290P +#------------------------------------------------------------ - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--00oo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; +part parent "m3290" # m3290p + desc = "ATmega3290P"; + id = "m3290p"; + variants = + "ATmega3290P: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega3290P-20AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega3290P-20AUR: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega3290PV-10AU: TQFP100, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega3290PV-10AUR: TQFP100, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 152; + signature = 0x1e 0x95 0x0c; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; +; - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; - ; +#------------------------------------------------------------ +# ATmega3290A +#------------------------------------------------------------ - memory "io" - size = 224; - offset = 0x20; +part parent "m3290" # m3290a + desc = "ATmega3290A"; + id = "m3290a"; + variants = + "ATmega3290A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega3290A-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega3290A-AUR: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 151; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; +; - memory "sram" - size = 1280; - offset = 0x100; +#------------------------------------------------------------ +# ATmega3290PA +#------------------------------------------------------------ + +part parent "m3290" # m3290pa + desc = "ATmega3290PA"; + id = "m3290pa"; + variants = + "ATmega3290PA: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega3290PA-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega3290PA-AUR: TQFP100, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + mcuid = 153; + signature = 0x1e 0x95 0x0c; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; ; #------------------------------------------------------------ -# ATmega32u4 +# ATmega649 #------------------------------------------------------------ -part # m32u4 - desc = "ATmega32U4"; - id = "m32u4"; +part parent "m169" # m649 + desc = "ATmega649"; + id = "m649"; variants = - "ATmega32U4-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32U4-AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32U4-MU: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32U4-MUR: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32U4RC-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32U4RC-AUR: QFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32U4RC-MU: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32U4RC-MUR: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + "ATmega649: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega649-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega649-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega649-16MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega649-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega649V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega649V-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", + "ATmega649V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega649V-8MUR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 65; - n_interrupts = 43; - n_boot_sections = 4; - boot_section_size = 512; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x95 0x87; - usbpid = 0x2ff4; + mcuid = 135; + boot_section_size = 1024; + stk500_devcode = 0x00; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x03; reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - latchcycles = 5; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 1024; - page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; + size = 2048; + page_size = 8; + readback = 0x00 0x00; + delay = 10; read = "1010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; write = "1100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xaaa--aaaa.aa00--xxxx.xxxx"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--00xx.xaaa--aaaa.a000--xxxx.xxxx"; ; memory "flash" - paged = yes; - size = 0x8000; - page_size = 128; + size = 0x10000; + page_size = 256; num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; + readback = 0x00 0x00; + delay = 10; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; - memory "lfuse" - size = 1; - initval = 0x52; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + memory "efuse" + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; ; - memory "hfuse" - size = 1; - initval = 0x99; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + memory "sram" + size = 4096; ; +; - memory "efuse" - size = 1; - initval = 0xfb; - bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--1111.iiii"; - ; +#------------------------------------------------------------ +# ATmega649P +#------------------------------------------------------------ - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; +part parent "m649" # m649p + desc = "ATmega649P"; + id = "m649p"; + variants = + "ATmega649P-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega649P-AUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATmega649P-MU: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega649P-MUR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + mcuid = 137; + signature = 0x1e 0x96 0x0b; - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; +; - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; - ; +#------------------------------------------------------------ +# ATmega649A +#------------------------------------------------------------ - memory "io" - size = 224; - offset = 0x20; - ; +part parent "m649" # m649a + desc = "ATmega649A"; + id = "m649a"; + variants = + "ATmega649A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega649A-AUR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega649A-MU: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega649A-MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 136; - memory "sram" - size = 2560; - offset = 0x100; + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; ; #------------------------------------------------------------ -# AT90USB646 +# ATmega6490 #------------------------------------------------------------ -part # usb646 - desc = "AT90USB646"; - id = "usb646"; +part parent "m169" # m6490 + desc = "ATmega6490"; + id = "m6490"; variants = - "AT90USB646: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90USB646-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB646-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB646-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB646-MUR: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + "ATmega6490: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega6490-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[4.5 V, 5.5 V]", + "ATmega6490-16AUR: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega6490V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega6490V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 181; - n_interrupts = 38; - n_boot_sections = 4; + mcuid = 157; + n_interrupts = 25; boot_section_size = 1024; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x96 0x82; - usbpid = 0x2ff9; + stk500_devcode = 0x00; + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x04; reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 2048; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; - mode = 0x41; + page_size = 8; + readback = 0x00 0x00; delay = 10; - blocksize = 8; - readsize = 256; read = "1010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; write = "1100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; @@ -15575,124 +13248,85 @@ part # usb646 ; memory "flash" - paged = yes; size = 0x10000; page_size = 256; num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + readback = 0x00 0x00; + delay = 10; + read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--0aaa.aaaa--axxx.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x5e; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0x9b; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; memory "efuse" - size = 1; - initval = 0xf3; - bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; ; - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "sram" + size = 4096; ; +; - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; - ; +#------------------------------------------------------------ +# ATmega6490P +#------------------------------------------------------------ - memory "io" - size = 224; - offset = 0x20; - ; +part parent "m6490" # m6490p + desc = "ATmega6490P"; + id = "m6490p"; + variants = + "ATmega6490P: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega6490P-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega6490P-AUR: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 159; + signature = 0x1e 0x96 0x0c; - memory "sram" - size = 4096; - offset = 0x100; + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; ; #------------------------------------------------------------ -# AT90USB647 +# ATmega6490A #------------------------------------------------------------ -# identical to AT90USB646 -part parent "usb646" # usb647 - desc = "AT90USB647"; - id = "usb647"; +part parent "m6490" # m6490a + desc = "ATmega6490A"; + id = "m6490a"; variants = - "AT90USB647: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90USB647-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB647-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB647-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB647-MUR: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 182; + "ATmega6490A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATmega6490A-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "ATmega6490A-AUR: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; + mcuid = 158; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ -# AT90USB1286 +# ATmega8HVA #------------------------------------------------------------ -part # usb1286 - desc = "AT90USB1286"; - id = "usb1286"; +part parent ".classic" # m8hva + desc = "ATmega8HVA"; + id = "m8hva"; variants = - "AT90USB1286: QFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90USB1286-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB1286-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB1286-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB1286-MUR: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 184; - n_interrupts = 38; - n_boot_sections = 4; - boot_section_size = 1024; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x97 0x82; - usbpid = 0x2ffb; + "ATmega8HVA: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 4.5 V]", + "ATmega8HVA-4CKU: WFLGA36, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", + "ATmega8HVA-4CKUR: WFLGA36, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", + "ATmega8HVA-4TU: TSSOP28, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", + "ATmega8HVA-4TUR: TSSOP28, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; + mcuid = 47; + n_interrupts = 21; + chip_erase_delay = 4000; + signature = 0x1e 0x93 0x10; reset = io; timeout = 200; stabdelay = 100; @@ -15703,162 +13337,131 @@ part # usb1286 predelay = 1; postdelay = 1; pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hvsp_controlstack = + 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, + 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0f; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 5; + latchcycles = 1; togglevtg = 1; - poweroffdelay = 15; + poweroffdelay = 25; resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; + resetdelayus = 70; + hvleavestabdelay = 101; + resetdelay = 26; + chiperasepolltimeout = 40; + chiperasetime = 1; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + synchcycles = 6; idr = 0x31; - rampz = 0x3b; spmcr = 0x57; eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + ocdrev = 1; memory "eeprom" - size = 4096; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; mode = 0x41; - delay = 10; - blocksize = 8; + delay = 20; + blocksize = 4; readsize = 256; - read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--00xx.aaaa--aaaa.a000--xxxx.xxxx"; + read = "1010.0000--0000.0000--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.0000--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--0000.0000--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x20000; - page_size = 256; - num_pages = 512; + size = 8192; + page_size = 128; + num_pages = 64; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; - ; - - memory "lfuse" - size = 1; - initval = 0x5e; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0x99; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xf3; - bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + delay = 10; + blocksize = 128; + readsize = 256; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aa00.0000--xxxx.xxxx"; ; - memory "calibration" + memory "fuse" size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; + initval = 0xdf; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; - memory "io" - size = 224; - offset = 0x20; + memory "lock" + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--1111.11oo"; + write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; ; memory "sram" - size = 8192; - offset = 0x100; + size = 512; ; ; #------------------------------------------------------------ -# AT90USB1287 +# ATmega16HVA #------------------------------------------------------------ -# identical to AT90USB1286 -part parent "usb1286" # usb1287 - desc = "AT90USB1287"; - id = "usb1287"; +part parent "m8hva" # m16hva + desc = "ATmega16HVA"; + id = "m16hva"; variants = - "AT90USB1287: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90USB1287-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB1287-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB1287-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB1287-MUR: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - mcuid = 185; + "ATmega16HVA: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 4.5 V]", + "ATmega16HVA-4CKU: WFLGA36, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", + "ATmega16HVA-4CKUR: WFLGA36, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", + "ATmega16HVA-4TU: TSSOP28, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]", + "ATmega16HVA-4TUR: TSSOP28, Fmax=4 MHz, T=[-20 C, 85 C], Vcc=[1.8 V, 9 V]"; + mcuid = 51; + signature = 0x1e 0x94 0x0c; + + memory "flash" + size = 0x4000; + num_pages = 128; + read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--000a.aaaa--aa00.0000--xxxx.xxxx"; + ; ; #------------------------------------------------------------ -# AT90USB162 +# ATmega32HVE2 #------------------------------------------------------------ -part # usb162 - desc = "AT90USB162"; - id = "usb162"; +part parent ".classic" # m32hve2 + desc = "ATmega32HVE2"; + id = "m32hve2"; variants = - "AT90USB162: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90USB162-16AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB162-16AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB162-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB162-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 178; - n_interrupts = 29; + "ATmega32HVE2-PLPW: VFQFN48, Fmax=15 MHz, T=[-40 C, 125 C], Vcc=[3 V, 3.6 V]", + "ATmega32HVE2-PLQW: VFQFN48, Fmax=15 MHz, T=[-40 C, 125 C], Vcc=[3 V, 3.6 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; + mcuid = 379; + n_interrupts = 25; n_boot_sections = 4; boot_section_size = 512; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xc6; - signature = 0x1e 0x94 0x82; - usbpid = 0x2ffa; + chip_erase_delay = 4000; + signature = 0x1e 0x95 0x13; reset = io; timeout = 200; stabdelay = 100; @@ -15869,148 +13472,116 @@ part # usb162 predelay = 1; postdelay = 1; pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hvsp_controlstack = + 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, + 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0f; flash_instr = 0xb6, 0x01, 0x11; eeprom_instr = 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 5; + latchcycles = 1; togglevtg = 1; - poweroffdelay = 15; + poweroffdelay = 25; resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; + resetdelayus = 70; + hvleavestabdelay = 101; + resetdelay = 26; + chiperasepolltimeout = 40; + chiperasetime = 1; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + synchcycles = 6; idr = 0x31; spmcr = 0x57; eecr = 0x3f; ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 512; + size = 1024; page_size = 4; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4000; + max_write_delay = 4000; mode = 0x41; delay = 20; blocksize = 4; readsize = 256; - read = "1010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.aaaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.aaaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x4000; + size = 0x8000; page_size = 128; - num_pages = 128; + num_pages = 256; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 6; + delay = 10; blocksize = 128; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; + writepage = "0100.1100--0aaa.aaaa--aa00.0000--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x5e; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0xd7; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0xd9; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xf4; + initval = 0xf9; bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.1000--xxxx.xxxx--1111.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--1111.iiii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; ; memory "sram" - size = 512; - offset = 0x100; + size = 4096; ; ; #------------------------------------------------------------ -# AT90USB82 +# ATmega64HVE2 #------------------------------------------------------------ -part # usb82 - desc = "AT90USB82"; - id = "usb82"; +part parent ".classic" # m64hve2 + desc = "ATmega64HVE2"; + id = "m64hve2"; variants = - "AT90USB82: QFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "AT90USB82-16MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "AT90USB82-16MUR: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 174; - n_interrupts = 29; + "ATmega64HVE2: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[3.0 V, 3.6 V]", + "ATmega64HVE2-PLPW: VFQFN48, Fmax=15 MHz, T=[-40 C, 125 C], Vcc=[3 V, 3.6 V]", + "ATmega64HVE2-PLQW: VFQFN48, Fmax=15 MHz, T=[-40 C, 125 C], Vcc=[3 V, 3.6 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; + mcuid = 77; + n_interrupts = 25; n_boot_sections = 4; - boot_section_size = 512; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xc6; - signature = 0x1e 0x93 0x82; - usbpid = 0x2ff7; + boot_section_size = 1024; + chip_erase_delay = 4000; + signature = 0x1e 0x96 0x10; reset = io; timeout = 200; stabdelay = 100; @@ -16021,149 +13592,118 @@ part # usb82 predelay = 1; postdelay = 1; pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hvsp_controlstack = + 0x4c, 0x0c, 0x1c, 0x2c, 0x3c, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7a, 0x6a, 0x68, 0x78, + 0x78, 0x7d, 0x6d, 0x0c, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0f; flash_instr = 0xb6, 0x01, 0x11; eeprom_instr = 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 5; + latchcycles = 1; togglevtg = 1; - poweroffdelay = 15; + poweroffdelay = 25; resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; + resetdelayus = 70; + hvleavestabdelay = 101; + resetdelay = 26; + chiperasepolltimeout = 40; + chiperasetime = 1; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + synchcycles = 6; idr = 0x31; spmcr = 0x57; eecr = 0x3f; ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 512; + size = 1024; page_size = 4; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4000; + max_write_delay = 4000; mode = 0x41; delay = 20; blocksize = 4; readsize = 256; - read = "1010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.aaaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.aaaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 8192; + size = 0x10000; page_size = 128; - num_pages = 64; + num_pages = 512; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 6; + delay = 10; blocksize = 128; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; + writepage = "0100.1100--0aaa.aaaa--aa00.0000--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x5e; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0xd7; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0xd9; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xf4; + initval = 0xf9; bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.1000--xxxx.xxxx--1111.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--1111.iiii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; ; memory "sram" - size = 512; - offset = 0x100; + size = 4096; ; ; #------------------------------------------------------------ -# ATmega32U2 +# ATmega16HVB #------------------------------------------------------------ -part # m32u2 - desc = "ATmega32U2"; - id = "m32u2"; +part parent ".classic" # m16hvb + desc = "ATmega16HVB"; + id = "m16hvb"; variants = - "ATmega32U2-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32U2-AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32U2-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega32U2-MUR: VQFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + "ATmega16HVB: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[4 V, 18 V]", + "ATmega16HVB-8X3: TFSOP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 25 V]", + "ATmega16HVB-8X3R: TFSOP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 25 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 64; + mcuid = 52; n_interrupts = 29; n_boot_sections = 4; boot_section_size = 512; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xc6; - signature = 0x1e 0x95 0x8a; - usbpid = 0x2ff0; + chip_erase_delay = 4000; + pagel = 0xa3; + bs2 = 0xa2; + signature = 0x1e 0x94 0x0d; reset = io; timeout = 200; stabdelay = 100; @@ -16185,10 +13725,7 @@ part # m32u2 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; + latchcycles = 6; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; @@ -16198,125 +13735,148 @@ part # m32u2 spmcr = 0x57; eecr = 0x3f; ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 1024; + size = 512; page_size = 4; - num_pages = 256; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4000; + max_write_delay = 4000; mode = 0x41; - delay = 20; + delay = 10; blocksize = 4; readsize = 256; - read = "1010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.aaaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--0000.000a--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.000a--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.aaaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--0000.000a--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x8000; + size = 0x4000; page_size = 128; - num_pages = 256; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 6; + delay = 10; blocksize = 128; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; + writepage = "0100.1100--000a.aaaa--aa00.0000--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x5e; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0xdd; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" size = 1; - initval = 0xd9; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xf4; - bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; + initval = 0xe9; + bitmask = 0x1f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.1000--xxxx.xxxx--111o.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--111i.iiii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; ; - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "sram" + size = 1024; ; +; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; +#------------------------------------------------------------ +# ATmega16HVBrevB +#------------------------------------------------------------ + +part parent "m16hvb" # m16hvbrevb + desc = "ATmega16HVBrevB"; + id = "m16hvbrevb"; + variants = + "ATmega16HVBrevB: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[3.0 V, 4.5 V]"; + mcuid = 53; +; + +#------------------------------------------------------------ +# ATmega32HVB +#------------------------------------------------------------ + +part parent "m16hvb" # m32hvb + desc = "ATmega32HVB"; + id = "m32hvb"; + variants = + "ATmega32HVB: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[4 V, 18 V]", + "ATmega32HVB-8X3: TFSOP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 25 V]", + "ATmega32HVB-8X3R: TFSOP44, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[4 V, 25 V]"; + mcuid = 60; + signature = 0x1e 0x95 0x10; + + memory "eeprom" + size = 1024; + read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; ; - memory "io" - size = 224; - offset = 0x20; + memory "flash" + size = 0x8000; + num_pages = 256; + read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--00aa.aaaa--aa00.0000--xxxx.xxxx"; ; memory "sram" - size = 1024; - offset = 0x100; + size = 2048; ; ; #------------------------------------------------------------ -# ATmega16U2 +# ATmega32HVBrevB #------------------------------------------------------------ -part # m16u2 - desc = "ATmega16U2"; - id = "m16u2"; +part parent "m32hvb" # m32hvbrevb + desc = "ATmega32HVBrevB"; + id = "m32hvbrevb"; variants = - "ATmega16U2-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16U2-AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16U2-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega16U2-MUR: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + "ATmega32HVBrevB: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[3.0 V, 4.5 V]"; + mcuid = 61; +; + +#------------------------------------------------------------ +# ATmega16M1 +#------------------------------------------------------------ + +part parent ".classic" # m16m1 + desc = "ATmega16M1"; + id = "m16m1"; + variants = + "ATmega16M1-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16M1-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 56; - n_interrupts = 29; + mcuid = 54; + n_interrupts = 31; n_boot_sections = 4; boot_section_size = 512; chip_erase_delay = 9000; pagel = 0xd7; - bs2 = 0xc6; - signature = 0x1e 0x94 0x89; - usbpid = 0x2fef; + bs2 = 0xe2; + signature = 0x1e 0x94 0x84; reset = io; timeout = 200; stabdelay = 100; @@ -16351,24 +13911,20 @@ part # m16u2 spmcr = 0x57; eecr = 0x3f; ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" - size = 512; - page_size = 4; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; + size = 512; + page_size = 4; + min_write_delay = 3600; + max_write_delay = 3600; mode = 0x41; - delay = 20; + delay = 10; blocksize = 4; readsize = 256; - read = "1010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.aaaa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--0000.000a--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.000a--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.aaaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--0000.000a--aaaa.aa00--xxxx.xxxx"; ; memory "flash" @@ -16379,21 +13935,21 @@ part # m16u2 min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 6; + delay = 10; blocksize = 128; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--00aa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--00aa.aaaa--iiii.iiii"; + writepage = "0100.1100--000a.aaaa--aa00.0000--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x5e; - min_write_delay = 9000; - max_write_delay = 9000; + initval = 0x62; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; @@ -16401,50 +13957,194 @@ part # m16u2 memory "hfuse" size = 1; initval = 0xd9; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4500; + max_write_delay = 4500; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; memory "efuse" size = 1; - initval = 0xf4; - bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; + initval = 0xff; + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.1000--xxxx.xxxx--11oo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--11ii.iiii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; ; - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "sram" + size = 1024; ; +; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; +#------------------------------------------------------------ +# ATmega32C1 +#------------------------------------------------------------ + +part parent "m16m1" # m32c1 + desc = "ATmega32C1"; + id = "m32c1"; + variants = + "ATmega32C1-15AD: TQFP32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32C1-15AZ: TQFP32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32C1-15MD: VQFN32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32C1-15MZ: VQFN32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32C1-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32C1-ESAD: TQFP32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32C1-ESMD: VQFN32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32C1-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 62; + signature = 0x1e 0x95 0x86; + + memory "eeprom" + size = 1024; + read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; ; - memory "io" - size = 224; - offset = 0x20; + memory "flash" + size = 0x8000; + num_pages = 256; + read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--00aa.aaaa--aa00.0000--xxxx.xxxx"; ; memory "sram" - size = 512; - offset = 0x100; + size = 2048; + ; +; + +#------------------------------------------------------------ +# ATmega32M1 +#------------------------------------------------------------ + +part parent "m16m1" # m32m1 + desc = "ATmega32M1"; + id = "m32m1"; + variants = + "ATmega32M1: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega32M1-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32M1-AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32M1-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 63; + signature = 0x1e 0x95 0x84; + + memory "eeprom" + size = 1024; + read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; + ; + + memory "flash" + size = 0x8000; + num_pages = 256; + read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--00aa.aaaa--aa00.0000--xxxx.xxxx"; + ; + + memory "sram" + size = 2048; + ; +; + +#------------------------------------------------------------ +# ATmega64C1 +#------------------------------------------------------------ + +part parent "m16m1" # m64c1 + desc = "ATmega64C1"; + id = "m64c1"; + variants = + "ATmega64C1-15AD: TQFP32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64C1-15AZ: TQFP32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64C1-15MD: VQFN32, Fmax=16 MHz, T=[-40 C, 150 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64C1-15MZ: VQFN32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64C1-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64C1-ESAZ: TQFP32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64C1-ESMZ: VQFN32, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64C1-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 75; + boot_section_size = 1024; + signature = 0x1e 0x96 0x86; + + memory "eeprom" + size = 2048; + page_size = 8; + blocksize = 8; + read = "1010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.0aaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--0000.0aaa--aaaa.a000--xxxx.xxxx"; + ; + + memory "flash" + size = 0x10000; + page_size = 256; + num_pages = 256; + blocksize = 256; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--0aaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--0aaa.aaaa--iiii.iiii"; + writepage = "0100.1100--0aaa.aaaa--a000.0000--xxxx.xxxx"; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# ATmega64M1 +#------------------------------------------------------------ + +part parent "m16m1" # m64m1 + desc = "ATmega64M1"; + id = "m64m1"; + variants = + "ATmega64M1-15MD: VQFN32, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega64M1-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega64M1-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 76; + boot_section_size = 1024; + signature = 0x1e 0x96 0x84; + + memory "eeprom" + size = 2048; + page_size = 8; + blocksize = 8; + read = "1010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--0000.0aaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; + writepage = "1100.0010--0000.0aaa--aaaa.a000--xxxx.xxxx"; + ; + + memory "flash" + size = 0x10000; + page_size = 256; + num_pages = 256; + blocksize = 256; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--0000.0000--0aaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--0000.0000--0aaa.aaaa--iiii.iiii"; + writepage = "0100.1100--0aaa.aaaa--a000.0000--xxxx.xxxx"; + ; + + memory "sram" + size = 4096; ; ; @@ -16452,7 +14152,7 @@ part # m16u2 # ATmega8U2 #------------------------------------------------------------ -part # m8u2 +part parent ".classic" # m8u2 desc = "ATmega8U2"; id = "m8u2"; variants = @@ -16504,9 +14204,6 @@ part # m8u2 spmcr = 0x57; eecr = 0x3f; ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 512; @@ -16560,81 +14257,106 @@ part # m8u2 write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "efuse" - size = 1; - initval = 0xf4; - bitmask = 0x0f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; + memory "efuse" + size = 1; + initval = 0xf4; + bitmask = 0x0f; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; + ; + + memory "lock" + bitmask = 0x3f; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "sram" + size = 512; + ; +; + +#------------------------------------------------------------ +# ATmega16U2 +#------------------------------------------------------------ + +part parent "m8u2" # m16u2 + desc = "ATmega16U2"; + id = "m16u2"; + variants = + "ATmega16U2-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16U2-AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16U2-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16U2-MUR: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 56; + signature = 0x1e 0x94 0x89; + usbpid = 0x2fef; + + memory "flash" + size = 0x4000; + num_pages = 128; ; +; - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; +#------------------------------------------------------------ +# ATmega32U2 +#------------------------------------------------------------ - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; +part parent "m8u2" # m32u2 + desc = "ATmega32U2"; + id = "m32u2"; + variants = + "ATmega32U2-AU: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32U2-AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32U2-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32U2-MUR: VQFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 64; + signature = 0x1e 0x95 0x8a; + usbpid = 0x2ff0; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + memory "eeprom" + size = 1024; + num_pages = 256; ; - memory "io" - size = 224; - offset = 0x20; + memory "flash" + size = 0x8000; + num_pages = 256; ; memory "sram" - size = 512; - offset = 0x100; + size = 1024; ; ; #------------------------------------------------------------ -# ATmega165P +# ATmega16u4 #------------------------------------------------------------ -part # m165p - desc = "ATmega165P"; - id = "m165p"; +part parent ".classic" # m16u4 + desc = "ATmega16U4"; + id = "m16u4"; variants = - "ATmega165P: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega165P-16AN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]", - "ATmega165P-16ANR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega165P-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega165P-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega165P-16MN: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega165P-16MNR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega165P-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega165P-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega165PV-8AN: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165PV-8ANR: TQFP64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega165PV-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165PV-8AUR: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165PV-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165PV-8MUR: QFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + "ATmega16U4-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16U4-AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16U4-MU: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16U4-MUR: VQFN44, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATmega16U4RC-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega16U4RC-MU: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 97; - n_interrupts = 22; + mcuid = 57; + n_interrupts = 43; n_boot_sections = 4; - boot_section_size = 256; -# stk500_devcode = 0x??; -# avr910_devcode = 0x??; + boot_section_size = 512; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; chip_erase_delay = 9000; pagel = 0xd7; bs2 = 0xa0; - signature = 0x1e 0x94 0x07; + signature = 0x1e 0x94 0x88; + usbpid = 0x2ff4; reset = io; timeout = 200; stabdelay = 100; @@ -16651,7 +14373,9 @@ part # m165p 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; - latchcycles = 6; + latchcycles = 5; + poweroffdelay = 15; + resetdelayms = 1; hvleavestabdelay = 15; resetdelay = 15; chiperasepolltimeout = 10; @@ -16661,24 +14385,20 @@ part # m165p spmcr = 0x57; eecr = 0x3f; ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 512; page_size = 4; - num_pages = 128; - min_write_delay = 3600; - max_write_delay = 3600; + min_write_delay = 9000; + max_write_delay = 9000; mode = 0x41; delay = 20; blocksize = 4; readsize = 256; - read = "1010.0000--0000.00xa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.00xa--aaaa.aaaa--iiii.iiii"; + read = "1010.0000--xxxx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.00xa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" @@ -16689,21 +14409,21 @@ part # m165p min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 10; + delay = 6; blocksize = 128; readsize = 256; - read_lo = "0010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.xxxx--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--xxxa.aaaa--aaxx.xxxx--xxxx.xxxx"; + read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--aaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; - initval = 0x62; - min_write_delay = 4500; - max_write_delay = 4500; + initval = 0x52; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; @@ -16711,151 +14431,96 @@ part # m165p memory "hfuse" size = 1; initval = 0x99; - min_write_delay = 4500; - max_write_delay = 4500; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; memory "efuse" size = 1; - initval = 0xff; + initval = 0xfb; bitmask = 0x0f; - min_write_delay = 4500; - max_write_delay = 4500; + min_write_delay = 9000; + max_write_delay = 9000; read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; + write = "1010.1100--1010.0100--xxxx.xxxx--1111.iiii"; ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x3f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--11ii.iiii"; - ; - - memory "signature" - size = 3; - read = "0011.0000--0000.0000--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.1000--0000.0000--xxxx.xxxx--00oo.oooo"; ; memory "sram" - size = 1024; - offset = 0x100; + size = 1280; ; ; #------------------------------------------------------------ -# ATmega165A -#------------------------------------------------------------ - -part parent "m165p" # m165a - desc = "ATmega165A"; - id = "m165a"; - variants = - "ATmega165A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega165A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165A-AUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega165A-MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165A-MUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; - mcuid = 96; - signature = 0x1e 0x94 0x10; -; - -#------------------------------------------------------------ -# ATmega165 +# ATmega32u4 #------------------------------------------------------------ -part parent "m165p" # m165 - desc = "ATmega165"; - id = "m165"; +part parent "m16u4" # m32u4 + desc = "ATmega32U4"; + id = "m32u4"; variants = - "ATmega165: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATmega165-16AI: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega165-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega165-16MI: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega165-16MU: VFQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega165V-8AI: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165V-8MI: VFQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165V-8MU: VFQFN64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 95; + "ATmega32U4-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32U4-AUR: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32U4-MU: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32U4-MUR: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32U4RC-AU: TQFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32U4RC-AUR: QFP44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32U4RC-MU: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega32U4RC-MUR: QFN44, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 65; + signature = 0x1e 0x95 0x87; memory "eeprom" - min_write_delay = 9000; - max_write_delay = 9000; + size = 1024; + read = "1010.0000--xxxx.xaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xaaa--aaaa.aaaa--iiii.iiii"; + writepage = "1100.0010--00xx.xaaa--aaaa.aa00--xxxx.xxxx"; ; -; -#------------------------------------------------------------ -# ATmega165PA -#------------------------------------------------------------ + memory "flash" + size = 0x8000; + num_pages = 256; + ; -part parent "m165p" # m165pa - desc = "ATmega165PA"; - id = "m165pa"; - variants = - "ATmega165PA: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega165PA-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165PA-AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165PA-MN: TQFP64, Fmax=16 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega165PA-MNR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega165PA-MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 98; + memory "lock" + read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; + ; + + memory "sram" + size = 2560; + ; ; #------------------------------------------------------------ -# ATmega325 +# ATmega406 #------------------------------------------------------------ -part # m325 - desc = "ATmega325"; - id = "m325"; +part parent ".classic" # m406 + desc = "ATmega406"; + id = "m406"; variants = - "ATmega325: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega325-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega325-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega325-16MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega325-16MUR: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega325V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325V-8AUR: TQFP64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega325V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325V-8MUR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 114; - n_interrupts = 22; + "ATmega406: N/A, Fmax=1 MHz, T=[N/A, N/A], Vcc=[3.3 V, 3.3 V]", + "ATmega406-1AAU: LQFP48, Fmax=1 MHz, T=[-30 C, 85 C], Vcc=[4 V, 25 V]"; + prog_modes = PM_SPM | PM_HVPP | PM_JTAG; + mcuid = 125; + n_interrupts = 23; n_boot_sections = 4; boot_section_size = 512; -# stk500_devcode = 0x??; # No STK500v1 support? -# avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - chip_erase_delay = 9000; - pagel = 0xd7; + # STK500 parameters (parallel programming IO lines) + pagel = 0xa7; bs2 = 0xa0; - signature = 0x1e 0x95 0x05; + signature = 0x1e 0x95 0x07; reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; + serial = no; + # STK500v2 HV programming parameters, from XML pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, @@ -16872,188 +14537,74 @@ part # m325 spmcr = 0x57; eecr = 0x3f; ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--0000.0000--0000.0000"; - pgm_enable = "1010.1100--0101.0011--0000.0000--0000.0000"; + chip_erase = NULL; + pgm_enable = NULL; memory "eeprom" - size = 1024; + size = 512; page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; - mode = 0x41; - delay = 10; + num_pages = 128; blocksize = 4; - readsize = 256; - read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.00aa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.00aa--aaaa.aa00--xxxx.xxxx"; + readsize = 4; ; memory "flash" paged = yes; - size = 0x8000; + size = 0xa000; page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; + num_pages = 320; blocksize = 128; - readsize = 256; - read_lo = "0010.0000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--0aaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.0000--aaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.0000--aaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--0aaa.aaaa--aaaa.aaaa--xxxx.xxxx"; + readsize = 128; ; memory "lfuse" size = 1; - initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--0000.0000--oooo.oooo"; - write = "1010.1100--1010.0000--0000.0000--iiii.iiii"; + initval = 0xcd; ; memory "hfuse" size = 1; - initval = 0x99; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--0000.0000--oooo.oooo"; - write = "1010.1100--1010.1000--0000.0000--iiii.iiii"; + initval = 0xfe; + bitmask = 0x03; ; - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x07; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--0000.0000--oooo.oooo"; - write = "1010.1100--1010.0100--0000.0000--1111.1iii"; - ; + memory "lock" = NULL; - memory "lock" + memory "lockbits" size = 1; initval = 0xff; bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1110.0000--0000.0000--11ii.iiii"; ; memory "signature" - size = 3; - read = "0011.0000--0000.0000--0000.00aa--oooo.oooo"; + read = NULL; ; memory "calibration" - size = 1; - read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; - ; - - memory "io" - size = 224; - offset = 0x20; - ; - - memory "sram" - size = 2048; - offset = 0x100; + read = NULL; ; ; #------------------------------------------------------------ -# ATmega325A -#------------------------------------------------------------ - -part parent "m325" # m325a - desc = "ATmega325A"; - id = "m325a"; - variants = - "ATmega325A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega325A-AN: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325A-ANR: TQFP64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325A-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325A-AUR: TQFP64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega325A-MN: VQFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325A-MNR: VQFN64, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325A-MU: QFN64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325A-MUR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 115; -; - -#------------------------------------------------------------ -# ATmega325P -#------------------------------------------------------------ - -part parent "m325" # m325p - desc = "ATmega325P"; - id = "m325p"; - variants = - "ATmega325P: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega325P-20AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega325P-20AUR: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega325P-20MU: MLF64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega325PV-10AU: TQFP64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325PV-10AUR: TQFP64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325PV-10MU: MLF64, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325PV-10MUR: VQFN64, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 116; - signature = 0x1e 0x95 0x0d; -; - -#------------------------------------------------------------ -# ATmega325PA -#------------------------------------------------------------ - -part parent "m325" # m325pa - desc = "ATmega325PA"; - id = "m325pa"; - variants = - "ATmega325PA: N/A, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega325PA-AU: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325PA-AUR: TQFP64, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega325PA-MU: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega325PA-MUR: VQFN64, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 117; - signature = 0x1e 0x95 0x0d; -; - -#------------------------------------------------------------ -# ATmega645 +# ATA6612C #------------------------------------------------------------ -part # m645 - desc = "ATmega645"; - id = "m645"; +part parent ".classic" # ata6612c + desc = "ATA6612C"; + id = "ata6612c"; variants = - "ATmega645: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega645-16AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega645-16AUR: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega645-16MU: MLF64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega645-16MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega645V-8AU: TQFP64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega645V-8AUR: TQFP64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega645V-8MU: MLF64, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega645V-8MUR: VQFN64, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 132; - n_interrupts = 22; + "ATA6612C-PLQW: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATA6612C-PLQW-1: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 216; + n_interrupts = 26; n_boot_sections = 4; - boot_section_size = 1024; -# stk500_devcode = 0x??; # No STK500v1 support? -# avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - chip_erase_delay = 9000; + boot_section_size = 256; + stk500_devcode = 0x73; + chip_erase_delay = 4000; pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x96 0x05; + bs2 = 0xc2; + signature = 0x1e 0x93 0x0a; reset = io; timeout = 200; stabdelay = 100; @@ -17069,6 +14620,11 @@ part # m645 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; hventerstabdelay = 100; latchcycles = 5; togglevtg = 1; @@ -17082,1072 +14638,1180 @@ part # m645 idr = 0x31; spmcr = 0x57; eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; - chip_erase = "1010.1100--1000.0000--0000.0000--0000.0000"; - pgm_enable = "1010.1100--0101.0011--0000.0000--0000.0000"; + ocdrev = 1; memory "eeprom" - size = 2048; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; + size = 512; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; mode = 0x41; - delay = 10; + delay = 20; blocksize = 4; readsize = 256; - read = "1010.0000--0000.0aaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--0000.0aaa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--0000.0aaa--aaaa.a000--xxxx.xxxx"; + read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 0x10000; - page_size = 256; - num_pages = 256; + size = 8192; + page_size = 64; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; delay = 10; - blocksize = 128; + blocksize = 64; readsize = 256; - read_lo = "0010.0000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--aaaa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--0000.0000--aaaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--0000.0000--aaaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--aaaa.aaaa--0000.0000"; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxxa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aaax.xxxx--xxxx.xxxx"; ; memory "lfuse" size = 1; initval = 0x62; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.0000--0000.0000--oooo.oooo"; - write = "1010.1100--1010.0000--0000.0000--iiii.iiii"; - ; - - memory "hfuse" - size = 1; - initval = 0x99; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.1000--0000.0000--oooo.oooo"; - write = "1010.1100--1010.1000--0000.0000--iiii.iiii"; - ; - - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x07; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.0000--0000.1000--0000.0000--oooo.oooo"; - write = "1010.1100--1010.0100--0000.0000--1111.1iii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x3f; - min_write_delay = 9000; - max_write_delay = 9000; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1110.0000--0000.0000--11ii.iiii"; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; - memory "signature" - size = 3; - read = "0011.0000--0000.0000--0000.00aa--oooo.oooo"; + memory "hfuse" + size = 1; + initval = 0xdf; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "calibration" + memory "efuse" size = 1; - read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; + initval = 0xf9; + bitmask = 0x07; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.1000--xxxx.xxxx--1111.1ooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--1111.1iii"; ; - memory "io" - size = 224; - offset = 0x20; + memory "lock" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; ; memory "sram" - size = 4096; - offset = 0x100; + size = 1024; ; ; #------------------------------------------------------------ -# ATmega645A -#------------------------------------------------------------ - -part parent "m645" # m645a - desc = "ATmega645A"; - id = "m645a"; - variants = - "ATmega645A: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega645A-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega645A-AUR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega645A-MU: VQFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega645A-MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 133; -; - -#------------------------------------------------------------ -# ATmega645P -#------------------------------------------------------------ - -part parent "m645" # m645p - desc = "ATmega645P"; - id = "m645p"; - variants = - "ATmega645P: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega645P-AU: TQFP64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega645P-AUR: TQFP64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega645P-MU: QFN64, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega645P-MUR: VQFN64, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 134; - signature = 0x1e 0x96 0x0d; -; - -#------------------------------------------------------------ -# ATmega3250 -#------------------------------------------------------------ - -part parent "m325" # m3250 - desc = "ATmega3250"; - id = "m3250"; - variants = - "ATmega3250: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega3250-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega3250-16AUR: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega3250V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega3250V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 146; - n_interrupts = 25; - signature = 0x1e 0x95 0x06; -; - -#------------------------------------------------------------ -# ATmega3250A -#------------------------------------------------------------ - -part parent "m325" # m3250a - desc = "ATmega3250A"; - id = "m3250a"; - variants = - "ATmega3250A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega3250A-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega3250A-AUR: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 147; - n_interrupts = 25; - signature = 0x1e 0x95 0x06; -; - -#------------------------------------------------------------ -# ATmega3250P -#------------------------------------------------------------ - -part parent "m325" # m3250p - desc = "ATmega3250P"; - id = "m3250p"; - variants = - "ATmega3250P: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega3250P-20AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega3250P-20AUR: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega3250PV-10AU: TQFP100, Fmax=10 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega3250PV-10AUR: TQFP100, Fmax=10 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 148; - n_interrupts = 25; - signature = 0x1e 0x95 0x0e; -; - -#------------------------------------------------------------ -# ATmega3250PA -#------------------------------------------------------------ - -part parent "m325" # m3250pa - desc = "ATmega3250PA"; - id = "m3250pa"; - variants = - "ATmega3250PA: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega3250PA-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega3250PA-AUR: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 149; - n_interrupts = 25; - signature = 0x1e 0x95 0x0e; -; - -#------------------------------------------------------------ -# ATmega6450 +# ATA6613C #------------------------------------------------------------ -part parent "m645" # m6450 - desc = "ATmega6450"; - id = "m6450"; +part parent "ata6612c" # ata6613c + desc = "ATA6613C"; + id = "ata6613c"; variants = - "ATmega6450: N/A, Fmax=16 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega6450-16AU: TQFP100, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega6450-16AUR: TQFP100, Fmax=16 MHz, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", - "ATmega6450V-8AU: TQFP100, Fmax=8 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega6450V-8AUR: TQFP100, Fmax=8 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 154; - n_interrupts = 25; - signature = 0x1e 0x96 0x06; -; + "ATA6613C-PLQW: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATA6613C-PLQW-1: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 217; + stk500_devcode = 0x86; + chip_erase_delay = 9000; + signature = 0x1e 0x94 0x06; -#------------------------------------------------------------ -# ATmega6450A -#------------------------------------------------------------ + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; -part parent "m645" # m6450a - desc = "ATmega6450A"; - id = "m6450a"; - variants = - "ATmega6450A: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega6450A-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega6450A-AUR: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 155; - n_interrupts = 25; - signature = 0x1e 0x96 0x06; + memory "flash" + size = 0x4000; + page_size = 128; + blocksize = 128; + read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--000a.aaaa--aaxx.xxxx--xxxx.xxxx"; + ; ; #------------------------------------------------------------ -# ATmega6450P +# ATA6616C #------------------------------------------------------------ -part parent "m645" # m6450p - desc = "ATmega6450P"; - id = "m6450p"; +part parent ".classic" # ata6616c + desc = "ATA6616C"; + id = "ata6616c"; variants = - "ATmega6450P: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATmega6450P-AU: TQFP100, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATmega6450P-AUR: TQFP100, Fmax=20 MHz, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]"; - mcuid = 156; - n_interrupts = 25; - signature = 0x1e 0x96 0x0e; -; - -#------------------------------------------------------------ -# AVR XMEGA-C/D family common values -#------------------------------------------------------------ - -part # .xmega-cd - desc = "AVR XMEGA-C/D family common values"; - id = ".xmega-cd"; - prog_modes = PM_SPM | PM_PDI; - n_boot_sections = 1; - mcu_base = 0x0090; - nvm_base = 0x01c0; - autobaud_sync = 0x20; - factory_fcpu = 2000000; - - memory "eeprom" - size = 2048; - page_size = 32; - offset = 0x8c0000; - readsize = 256; - ; - - memory "flash" - size = 0x11000; - page_size = 256; - offset = 0x800000; - readsize = 256; - ; - - memory "application" - size = 0x10000; - page_size = 256; - offset = 0x800000; - readsize = 256; - ; + "ATA6616C-P3PW: VFQFN38, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATA6616C-P3QW: VFQFN38, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATA6616C-P3QW-1: VFQFN38, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 219; + n_interrupts = 20; + stk500_devcode = 0x14; + avr910_devcode = 0x20; + chip_erase_delay = 4000; + pagel = 0xb3; + bs2 = 0xb2; + signature = 0x1e 0x93 0x87; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pp_controlstack = + 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, + 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, + 0x06, 0x16, 0x46, 0x56, 0x0a, 0x1a, 0x4a, 0x5a, + 0x1e, 0x7c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; + hventerstabdelay = 100; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + spmcr = 0x57; + eecr = 0x3f; + ocdrev = 1; - memory "apptable" - size = 4096; - page_size = 256; - offset = 0x80f000; + memory "eeprom" + size = 512; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + mode = 0x41; + delay = 10; + blocksize = 4; readsize = 256; + read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; - memory "boot" - size = 4096; - page_size = 256; - offset = 0x810000; + memory "flash" + paged = yes; + size = 8192; + page_size = 128; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 10; + blocksize = 64; readsize = 256; + read_lo = "0010.0000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--0000.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--0000.aaaa--aa00.0000--xxxx.xxxx"; ; - ###### - # Collective fuses memory - # - Does not know factory settings (only individual fuse bytes do) - # - fuses[0] (jtaguid) only used for (most) XMEGA-A/B parts - # - fuses[3] always reserved - # - fuses[6] only used in XMEGA-E parts - # - memory "fuses" - size = 7; - offset = 0x8f0020; - ; - - memory "fuse1" - size = 1; - initval = 0x00; - offset = 0x8f0021; - ; - - memory "fuse2" + memory "lfuse" size = 1; - initval = 0xff; - bitmask = 0x63; - offset = 0x8f0022; + initval = 0x62; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; - memory "fuse4" + memory "hfuse" size = 1; - initval = 0xff; - bitmask = 0x1e; - offset = 0x8f0024; + initval = 0xdf; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "fuse5" + memory "efuse" size = 1; initval = 0xff; - bitmask = 0x3f; - offset = 0x8f0025; + bitmask = 0x01; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.1000--xxxx.xxxx--1111.111o"; + write = "1010.1100--1010.0100--xxxx.xxxx--1111.111i"; ; memory "lock" - size = 1; - initval = 0xff; - offset = 0x8f0027; - ; - - memory "prodsig" - size = 64; - offset = 0x8e0200; - readsize = 64; - ; - - memory "sigrow" - alias "prodsig"; - ; - - memory "signature" - size = 3; - offset = 0x1000090; - ; - - memory "calibration" - size = 5; - offset = 0x8e0200; - ; - - memory "tempsense" - size = 2; - offset = 0x8e022e; - ; - - memory "sernum" - size = 14; - offset = 0x8e0208; - ; - - memory "usersig" - size = 256; - page_size = 256; - offset = 0x8e0400; - readsize = 256; - ; - - memory "io" - size = 4096; - readsize = 1; + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--1111.11oo"; + write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; ; memory "sram" - offset = 0x2000; + size = 512; ; ; #------------------------------------------------------------ -# AVR XMEGA-E family common values +# ATA6617C #------------------------------------------------------------ -# Fuse for fault detection action on Px0..5 (unique to XMEGA-E) - -part parent ".xmega-cd" # .xmega-e - desc = "AVR XMEGA-E family common values"; - id = ".xmega-e"; - n_interrupts = 43; +part parent "ata6616c" # ata6617c + desc = "ATA6617C"; + id = "ata6617c"; + variants = + "ATA6617C-P3QW: VFQFN38, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATA6617C-P3QW-1: VFQFN38, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; + mcuid = 220; + signature = 0x1e 0x94 0x87; memory "flash" - page_size = 128; + size = 0x4000; + num_pages = 128; + read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + writepage = "0100.1100--000a.aaaa--aaxx.xxxx--xxxx.xxxx"; ; +; - memory "application" - page_size = 128; +#------------------------------------------------------------ +# ATA5505 +#------------------------------------------------------------ + +part parent ".classic" # ata5505 + desc = "ATA5505"; + id = "ata5505"; + variants = + "ATA5505: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[2.7 V, 5.5 V]", + "ATA5505-P3QW: VFQFN38, Fmax=N/A, T=[-40 C, 105 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 198; + n_interrupts = 20; + stk500_devcode = 0x14; + avr910_devcode = 0x20; + chip_erase_delay = 4000; + pagel = 0xb3; + bs2 = 0xb2; + signature = 0x1e 0x94 0x87; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pp_controlstack = + 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, + 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, + 0x06, 0x16, 0x46, 0x56, 0x0a, 0x1a, 0x4a, 0x5a, + 0x1e, 0x7c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; + hventerstabdelay = 100; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + spmcr = 0x57; + eecr = 0x3f; + ocdrev = 1; + + memory "eeprom" + size = 512; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; - memory "apptable" + memory "flash" + paged = yes; + size = 0x4000; page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 10; + blocksize = 64; + readsize = 256; + read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--000a.aaaa--aaxx.xxxx--xxxx.xxxx"; ; - memory "boot" - page_size = 128; + memory "lfuse" + size = 1; + initval = 0x62; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; - memory "fuse2" - bitmask = 0x43; + memory "hfuse" + size = 1; + initval = 0xdf; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "fuse6" + memory "efuse" size = 1; initval = 0xff; - offset = 0x8f0026; + bitmask = 0x01; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.1000--xxxx.xxxx--1111.111o"; + write = "1010.1100--1010.0100--xxxx.xxxx--1111.111i"; ; - memory "prodsig" - size = 54; - readsize = 54; + memory "lock" + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--1111.11oo"; + write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; ; - memory "usersig" - size = 128; - page_size = 128; + memory "sram" + size = 512; ; ; #------------------------------------------------------------ -# AVR XMEGA-A/B family common values +# ATA6614Q #------------------------------------------------------------ -# Most XMEGA-A/B have JTAG, and therefore JTAG user ID +part parent ".classic" # ata6614q + desc = "ATA6614Q"; + id = "ata6614q"; + variants = + "ATA6614Q-PLQW: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATA6614Q-PLQW-1: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 218; + n_interrupts = 26; + n_boot_sections = 4; + boot_section_size = 512; + stk500_devcode = 0x86; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xc2; + signature = 0x1e 0x95 0x0f; + reset = io; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; + hventerstabdelay = 100; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + spmcr = 0x57; + eecr = 0x3f; + ocdrev = 1; -part parent ".xmega-cd" # .xmega-ab - desc = "AVR XMEGA-A/B family common values"; - id = ".xmega-ab"; - prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; + memory "eeprom" + size = 1024; + page_size = 4; + min_write_delay = 3600; + max_write_delay = 3600; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + read = "1010.0000--000x.xxaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--000x.xxaa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; + ; - memory "fuse0" + memory "flash" + paged = yes; + size = 0x8000; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--00aa.aaaa--aaxx.xxxx--xxxx.xxxx"; + ; + + memory "lfuse" size = 1; - initval = 0xff; - offset = 0x8f0020; + initval = 0x62; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "hfuse" + size = 1; + initval = 0xd9; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "prodsig" - size = 52; - readsize = 52; + memory "efuse" + size = 1; + initval = 0xff; + bitmask = 0x07; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.1000--xxxx.xxxx--1111.1ooo"; + write = "1010.1100--1010.0100--xxxx.xxxx--1111.1iii"; ; - memory "calibration" - size = 4; + memory "lock" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; ; ; #------------------------------------------------------------ -# ATxmega16A4U +# ATA664251 #------------------------------------------------------------ -part parent ".xmega-ab" # x16a4u - desc = "ATxmega16A4U"; - id = "x16a4u"; +part parent ".classic" # ata664251 + desc = "ATA664251"; + id = "ata664251"; variants = - "ATxmega16A4U-AN: TQFP44, Fmax=32 MHz, T=[0 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4U-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega16A4U-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4U-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4U-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4U-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4U-M7: VQFN44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4U-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4U-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI; - mcuid = 232; - n_interrupts = 127; - boot_section_size = 4096; - signature = 0x1e 0x94 0x41; - usbpid = 0x2fe3; + "ATA664251: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", + "ATA664251-WGQW: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]", + "ATA664251-WGQW-1: VFQFN48, Fmax=16 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 225; + n_interrupts = 20; + stk500_devcode = 0x14; + avr910_devcode = 0x20; + chip_erase_delay = 4000; + pagel = 0xb3; + bs2 = 0xb2; + signature = 0x1e 0x94 0x87; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pp_controlstack = + 0x0e, 0x1e, 0x0e, 0x1e, 0x2e, 0x3e, 0x2e, 0x3e, + 0x4e, 0x5e, 0x4e, 0x5e, 0x6e, 0x7e, 0x6e, 0x7e, + 0x06, 0x16, 0x46, 0x56, 0x0a, 0x1a, 0x4a, 0x5a, + 0x1e, 0x7c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + flash_instr = 0xb6, 0x01, 0x11; + eeprom_instr = + 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, + 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, + 0x99, 0xf9, 0xbb, 0xaf; + hventerstabdelay = 100; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + spmcr = 0x57; + eecr = 0x3f; + ocdrev = 1; memory "eeprom" - size = 1024; + size = 512; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxxa--aaaa.aaaa--iiii.iiii"; + loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + ; + + memory "flash" + paged = yes; + size = 0x4000; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 10; + blocksize = 64; + readsize = 256; + read_lo = "0010.0000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + read_hi = "0010.1000--000a.aaaa--aaaa.aaaa--oooo.oooo"; + loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + loadpage_hi = "0100.1000--000x.xxxx--xxaa.aaaa--iiii.iiii"; + writepage = "0100.1100--000a.aaaa--aaxx.xxxx--xxxx.xxxx"; ; - memory "flash" - size = 0x5000; + memory "lfuse" + size = 1; + initval = 0x62; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; - memory "application" - size = 0x4000; + memory "hfuse" + size = 1; + initval = 0xdf; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; ; - memory "apptable" - offset = 0x803000; + memory "efuse" + size = 1; + initval = 0xff; + bitmask = 0x01; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.0000--0000.1000--xxxx.xxxx--1111.111o"; + write = "1010.1100--1010.0100--xxxx.xxxx--1111.111i"; ; - memory "boot" - offset = 0x804000; + memory "lock" + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--1111.11oo"; + write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; ; memory "sram" - size = 2048; + size = 512; ; ; #------------------------------------------------------------ -# ATxmega16C4 +# Logic Green parts #------------------------------------------------------------ -part parent ".xmega-cd" # x16c4 - desc = "ATxmega16C4"; - id = "x16c4"; - variants = - "ATxmega16C4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16C4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16C4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16C4-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16C4-CUR: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16C4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16C4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16C4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 233; - n_interrupts = 127; - boot_section_size = 4096; - signature = 0x1e 0x94 0x43; - usbpid = 0x2fe3; - - memory "eeprom" - size = 1024; - ; - - memory "flash" - size = 0x5000; - ; - - memory "application" - size = 0x4000; - ; +part parent "m88" # lgt8f88p + desc = "LGT8F88P"; + id = "lgt8f88p"; + mcuid = 227; + signature = 0x1e 0x93 0x0f; + autobaud_sync = 0x1c; - memory "apptable" - offset = 0x803000; + memory "lfuse" + initval = -1; ; - memory "boot" - offset = 0x804000; + memory "hfuse" + initval = -1; ; - memory "prodsig" - page_size = 64; + memory "efuse" + initval = -1; + bitmask = -1; ; - memory "sram" - size = 2048; + memory "lock" + initval = -1; + bitmask = -1; ; ; #------------------------------------------------------------ -# ATxmega16D4 +# LGT8F168P #------------------------------------------------------------ -part parent ".xmega-cd" # x16d4 - desc = "ATxmega16D4"; - id = "x16d4"; - variants = - "ATxmega16D4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega16D4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16D4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16D4-AUR: TQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16D4-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16D4-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega16D4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16D4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16D4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 234; - n_interrupts = 91; - boot_section_size = 4096; - signature = 0x1e 0x94 0x42; - usbpid = 0x2fe3; - - memory "eeprom" - size = 1024; - ; - - memory "flash" - size = 0x5000; - ; - - memory "application" - size = 0x4000; - ; +part parent "m168" # lgt8f168p + desc = "LGT8F168P"; + id = "lgt8f168p"; + mcuid = 228; + signature = 0x1e 0x94 0x0b; + autobaud_sync = 0x1c; - memory "apptable" - offset = 0x803000; + memory "lfuse" + initval = -1; ; - memory "boot" - offset = 0x804000; + memory "hfuse" + initval = -1; ; - memory "prodsig" - size = 52; - readsize = 52; + memory "efuse" + initval = -1; + bitmask = -1; ; - memory "sram" - size = 2048; + memory "lock" + initval = -1; + bitmask = -1; ; ; #------------------------------------------------------------ -# ATxmega16A4 +# LGT8F328P #------------------------------------------------------------ -part parent ".xmega-ab" # x16a4 - desc = "ATxmega16A4"; - id = "x16a4"; - variants = - "ATxmega16A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4-CUR: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4-MHR: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16A4-MU: VQFN44, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI; - mcuid = 231; - n_interrupts = 94; - boot_section_size = 4096; - signature = 0x1e 0x94 0x41; - usbpid = 0x2fe3; +part parent "m328" # lgt8f328p + desc = "LGT8F328P"; + id = "lgt8f328p"; + mcuid = 229; + signature = 0x1e 0x95 0x0f; + autobaud_sync = 0x1c; - memory "eeprom" - size = 1024; + memory "lfuse" + initval = -1; ; - memory "flash" - size = 0x5000; + memory "hfuse" + initval = -1; ; - memory "application" - size = 0x4000; + memory "efuse" + initval = -1; + bitmask = -1; ; - memory "apptable" - offset = 0x803000; + memory "lock" + initval = -1; + bitmask = -1; ; +; - memory "boot" - offset = 0x804000; +#------------------------------------------------------------ +# AT89S51 +#------------------------------------------------------------ + +# Nonstandard part +# - Tested with -c avrisp +# - USBASP programmers may require different firmware + +part # 89S51 + desc = "AT89S51"; + id = "89S51"; + variants = + "AT89S51: N/A, Fmax=33 MHz, T=[N/A, N/A], Vcc=[4 V, 5.5 V]", + "AT89S51-24AU: TQFP44, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "AT89S51-24JU: PLCC44, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "AT89S51-24PU: PDIP40, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]"; + prog_modes = PM_ISP | PM_HVPP; + mcuid = 372; + stk500_devcode = 0xe0; + chip_erase_delay = 250000; + signature = 0x1e 0x51 0x06; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + pollindex = 4; + pollvalue = 0x69; + predelay = 1; + postdelay = 1; + chiperasepulsewidth = 15; + programfusepulsewidth = 2; + programlockpolltimeout = 1; + chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; + pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + + memory "flash" + size = 4096; + min_write_delay = 4500; + max_write_delay = 4500; + readback = 0xff 0xff; + mode = 0x02; + delay = 10; + blocksize = 256; + read = "0010.0000--xxxa.aaaa--aaaa.aaaa--oooo.oooo"; + write = "0100.0000--xxxa.aaaa--aaaa.aaaa--iiii.iiii"; + # Nonstandard page mode is available but not implemented ; - memory "fuse2" - bitmask = 0x43; + memory "lock" + size = 1; + read = "0010.0100--xxxx.xxxx--xxxx.xxxx--xxxo.ooxx"; + # Nonstandard write: expect verification errors + # See datasheet Page 20, Note 1 https://ww1.microchip.com/downloads/en/DeviceDoc/doc2487.pdf + # Activate lock mode 0 through chip erase: avrdude -e + # Activate lock mode 1: avrdude -e -V -U lock:w:1:m + # Activate lock mode 2: avrdude -e -V -U lock:w:1:m -U lock:w:2:m + # Activate lock mode 3: avrdude -e -V -U lock:w:1:m -U lock:w:2:m -U lock:w:3:m + write = "1010.1100--1110.00ii--xxxx.xxxx--xxxx.xxxx"; ; - memory "sram" - size = 2048; + memory "signature" + size = 3; + read = "0 0 1 0 1 0 0 0 x x x x x x a1 a0 x x x x x x x 0 o o o o o o o o"; ; ; #------------------------------------------------------------ -# ATxmega32A4U +# AT89S52 #------------------------------------------------------------ -part parent ".xmega-ab" # x32a4u - desc = "ATxmega32A4U"; - id = "x32a4u"; +part parent "89S51" # 89S52 + desc = "AT89S52"; + id = "89S52"; variants = - "ATxmega32A4U-AN: TQFP44, Fmax=32 MHz, T=[0 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4U-ANR: TQFP44, Fmax=32 MHz, T=[0 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4U-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4U-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4U-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4U-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega32A4U-M7: VQFN44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4U-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4U-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + "AT89S52: N/A, Fmax=33 MHz, T=[N/A, N/A], Vcc=[4 V, 5.5 V]", + "AT89S52-24AU: TQFP44, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "AT89S52-24AUR: TQFP44, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "AT89S52-24JU: PLCC44, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]", + "AT89S52-24PU: PDIP40, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[4 V, 5.5 V]"; + mcuid = 373; + stk500_devcode = 0xe1; + signature = 0x1e 0x52 0x06; + + memory "flash" + size = 8192; + ; +; + +#------------------------------------------------------------ +# AVR XMEGA-C/D family common values +#------------------------------------------------------------ + +part # .xmega-cd + desc = "AVR XMEGA-C/D family common values"; + id = ".xmega-cd"; prog_modes = PM_SPM | PM_PDI; - mcuid = 239; - n_interrupts = 127; - boot_section_size = 4096; - signature = 0x1e 0x95 0x41; - usbpid = 0x2fe4; + n_boot_sections = 1; + mcu_base = 0x0090; + nvm_base = 0x01c0; + autobaud_sync = 0x20; + factory_fcpu = 2000000; memory "eeprom" - size = 1024; + size = 2048; + page_size = 32; + offset = 0x8c0000; + readsize = 256; ; memory "flash" - size = 0x9000; + size = 0x11000; + page_size = 256; + offset = 0x800000; + readsize = 256; ; memory "application" - size = 0x8000; + size = 0x10000; + page_size = 256; + offset = 0x800000; + readsize = 256; ; memory "apptable" - offset = 0x807000; + size = 4096; + page_size = 256; + offset = 0x80f000; + readsize = 256; ; memory "boot" - offset = 0x808000; - ; - - memory "sram" size = 4096; + page_size = 256; + offset = 0x810000; + readsize = 256; ; -; - -#------------------------------------------------------------ -# ATxmega32C4 -#------------------------------------------------------------ -part parent ".xmega-cd" # x32c4 - desc = "ATxmega32C4"; - id = "x32c4"; - variants = - "ATxmega32C4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C4-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C4-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega32C4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 240; - n_interrupts = 127; - boot_section_size = 4096; - signature = 0x1e 0x95 0x44; - usbpid = 0x2fe4; + ###### + # Collective fuses memory + # - Does not know factory settings (only individual fuse bytes do) + # - fuses[0] (jtaguid) only used for (most) XMEGA-A/B parts + # - fuses[3] always reserved + # - fuses[6] only used in XMEGA-E parts + # + memory "fuses" + size = 7; + offset = 0x8f0020; + ; - memory "eeprom" - size = 1024; + memory "fuse1" + size = 1; + initval = 0x00; + offset = 0x8f0021; ; - memory "flash" - size = 0x9000; + memory "fuse2" + size = 1; + initval = 0xff; + bitmask = 0x63; + offset = 0x8f0022; ; - memory "application" - size = 0x8000; + memory "fuse4" + size = 1; + initval = 0xff; + bitmask = 0x1e; + offset = 0x8f0024; ; - memory "apptable" - offset = 0x807000; + memory "fuse5" + size = 1; + initval = 0xff; + bitmask = 0x3f; + offset = 0x8f0025; ; - memory "boot" - offset = 0x808000; + memory "lock" + size = 1; + initval = 0xff; + offset = 0x8f0027; ; memory "prodsig" - page_size = 64; + size = 64; + offset = 0x8e0200; + readsize = 64; ; - memory "sram" - size = 4096; + memory "sigrow" + alias "prodsig"; ; -; - -#------------------------------------------------------------ -# ATxmega32D4 -#------------------------------------------------------------ - -part parent ".xmega-cd" # x32d4 - desc = "ATxmega32D4"; - id = "x32d4"; - variants = - "ATxmega32D4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D4-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega32D4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D4-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D4-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D4-MHR: VQFN44, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - mcuid = 241; - n_interrupts = 91; - boot_section_size = 4096; - signature = 0x1e 0x95 0x42; - usbpid = 0x2fe4; - memory "eeprom" - size = 1024; + memory "signature" + size = 3; + offset = 0x1000090; ; - memory "flash" - size = 0x9000; + memory "calibration" + size = 5; + offset = 0x8e0200; ; - memory "application" - size = 0x8000; + memory "tempsense" + size = 2; + offset = 0x8e022e; ; - memory "apptable" - offset = 0x807000; + memory "sernum" + size = 14; + offset = 0x8e0208; ; - memory "boot" - offset = 0x808000; + memory "usersig" + size = 256; + page_size = 256; + offset = 0x8e0400; + readsize = 256; ; - memory "prodsig" - size = 52; - readsize = 52; + memory "io" + size = 4096; + readsize = 1; ; memory "sram" - size = 4096; + offset = 0x2000; ; ; #------------------------------------------------------------ -# ATxmega32A4 +# AVR XMEGA-E family common values #------------------------------------------------------------ -part parent ".xmega-ab" # x32a4 - desc = "ATxmega32A4"; - id = "x32a4"; - variants = - "ATxmega32A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4-CUR: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4-MHR: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32A4-MU: VQFN44, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI; - mcuid = 238; - n_interrupts = 94; - boot_section_size = 4096; - signature = 0x1e 0x95 0x41; - usbpid = 0x2fe4; +# Fuse for fault detection action on Px0..5 (unique to XMEGA-E) - memory "eeprom" - size = 1024; - ; +part parent ".xmega-cd" # .xmega-e + desc = "AVR XMEGA-E family common values"; + id = ".xmega-e"; + n_interrupts = 43; memory "flash" - size = 0x9000; + page_size = 128; ; memory "application" - size = 0x8000; + page_size = 128; ; memory "apptable" - offset = 0x807000; + page_size = 128; ; memory "boot" - offset = 0x808000; + page_size = 128; + ; + + memory "fuse2" + bitmask = 0x43; + ; + + memory "fuse6" + size = 1; + initval = 0xff; + offset = 0x8f0026; ; - memory "fuse2" - bitmask = 0x43; + memory "prodsig" + size = 54; + readsize = 54; ; - memory "sram" - size = 4096; + memory "usersig" + size = 128; + page_size = 128; ; ; #------------------------------------------------------------ -# ATxmega64A4U +# AVR XMEGA-A/B family common values #------------------------------------------------------------ -part parent ".xmega-ab" # x64a4u - desc = "ATxmega64A4U"; - id = "x64a4u"; - variants = - "ATxmega64A4U-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A4U-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A4U-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A4U-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A4U-CUR: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A4U-M7: VQFN44PW, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A4U-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A4U-MHR: VQFN44, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; - prog_modes = PM_SPM | PM_PDI; - mcuid = 252; - n_interrupts = 127; - boot_section_size = 4096; - signature = 0x1e 0x96 0x46; - usbpid = 0x2fe5; +# Most XMEGA-A/B have JTAG, and therefore JTAG user ID + +part parent ".xmega-cd" # .xmega-ab + desc = "AVR XMEGA-A/B family common values"; + id = ".xmega-ab"; + prog_modes = PM_SPM | PM_PDI | PM_XMEGAJTAG; + + memory "fuse0" + size = 1; + initval = 0xff; + offset = 0x8f0020; + ; + + memory "fuse4" + initval = 0xfe; + bitmask = 0x1f; + ; memory "prodsig" - size = 64; - page_size = 64; - readsize = 64; + size = 52; + readsize = 52; ; - memory "sram" - size = 4096; + memory "calibration" + size = 4; ; ; #------------------------------------------------------------ -# ATxmega32C3 +# ATxmega16A4U #------------------------------------------------------------ -part parent ".xmega-cd" # x32c3 - desc = "ATxmega32C3"; - id = "x32c3"; +part parent ".xmega-ab" # x16a4u + desc = "ATxmega16A4U"; + id = "x16a4u"; variants = - "ATxmega32C3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C3-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega32C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C3-M7: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32C3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; - mcuid = 236; + "ATxmega16A4U-AN: TQFP44, Fmax=32 MHz, T=[0 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4U-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega16A4U-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4U-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4U-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4U-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4U-M7: VQFN44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4U-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4U-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + prog_modes = PM_SPM | PM_PDI; + mcuid = 232; n_interrupts = 127; boot_section_size = 4096; - signature = 0x1e 0x95 0x49; - usbpid = 0x2fe4; + signature = 0x1e 0x94 0x41; + usbpid = 0x2fe3; memory "eeprom" size = 1024; ; memory "flash" - size = 0x9000; + size = 0x5000; ; memory "application" - size = 0x8000; + size = 0x4000; ; memory "apptable" - offset = 0x807000; + offset = 0x803000; ; memory "boot" - offset = 0x808000; - ; - - memory "prodsig" - page_size = 64; + offset = 0x804000; ; memory "sram" - size = 4096; + size = 2048; ; ; #------------------------------------------------------------ -# ATxmega32D3 +# ATxmega16C4 #------------------------------------------------------------ -part parent ".xmega-cd" # x32d3 - desc = "ATxmega32D3"; - id = "x32d3"; +part parent ".xmega-cd" # x16c4 + desc = "ATxmega16C4"; + id = "x16c4"; variants = - "ATxmega32D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D3-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega32D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32D3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega32D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 237; - n_interrupts = 114; + "ATxmega16C4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16C4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16C4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16C4-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16C4-CUR: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16C4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16C4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16C4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 233; + n_interrupts = 127; boot_section_size = 4096; - signature = 0x1e 0x95 0x4a; - usbpid = 0x2fe4; + signature = 0x1e 0x94 0x43; + usbpid = 0x2fe3; memory "eeprom" size = 1024; ; memory "flash" - size = 0x9000; + size = 0x5000; ; memory "application" - size = 0x8000; + size = 0x4000; ; memory "apptable" - offset = 0x807000; + offset = 0x803000; ; memory "boot" - offset = 0x808000; + offset = 0x804000; ; memory "prodsig" - size = 52; - readsize = 52; + page_size = 64; ; memory "sram" - size = 4096; + size = 2048; ; ; #------------------------------------------------------------ -# ATxmega64C3 +# ATxmega16D4 #------------------------------------------------------------ -part parent ".xmega-cd" # x64c3 - desc = "ATxmega64C3"; - id = "x64c3"; +part parent ".xmega-cd" # x16d4 + desc = "ATxmega16D4"; + id = "x16d4"; variants = - "ATxmega64C3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64C3-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega64C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64C3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64C3-M7: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64C3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64C3-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 249; - n_interrupts = 127; + "ATxmega16D4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega16D4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16D4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16D4-AUR: TQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16D4-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16D4-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega16D4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16D4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16D4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 234; + n_interrupts = 91; boot_section_size = 4096; - signature = 0x1e 0x96 0x49; - usbpid = 0x2fd6; + signature = 0x1e 0x94 0x42; + usbpid = 0x2fe3; - memory "prodsig" - page_size = 64; + memory "eeprom" + size = 1024; ; - memory "sram" - size = 4096; + memory "flash" + size = 0x5000; ; -; -#------------------------------------------------------------ -# ATxmega64D3 -#------------------------------------------------------------ + memory "application" + size = 0x4000; + ; -part parent ".xmega-cd" # x64d3 - desc = "ATxmega64D3"; - id = "x64d3"; - variants = - "ATxmega64D3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D3-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega64D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 250; - n_interrupts = 114; - boot_section_size = 4096; - signature = 0x1e 0x96 0x4a; - usbpid = 0x2fe5; + memory "apptable" + offset = 0x803000; + ; + + memory "boot" + offset = 0x804000; + ; memory "prodsig" size = 52; @@ -18155,125 +15819,104 @@ part parent ".xmega-cd" # x64d3 ; memory "sram" - size = 4096; + size = 2048; ; ; #------------------------------------------------------------ -# ATxmega64D4 +# ATxmega16A4 #------------------------------------------------------------ -part parent ".xmega-cd" # x64d4 - desc = "ATxmega64D4"; - id = "x64d4"; +part parent ".xmega-ab" # x16a4 + desc = "ATxmega16A4"; + id = "x16a4"; variants = - "ATxmega64D4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D4-AU: QFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D4-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D4-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64D4-MHR: VQFN44, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - mcuid = 253; - n_interrupts = 91; + "ATxmega16A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4-CUR: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4-MHR: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16A4-MU: VQFN44, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + prog_modes = PM_SPM | PM_PDI; + mcuid = 231; + n_interrupts = 94; boot_section_size = 4096; - signature = 0x1e 0x96 0x47; - usbpid = 0x2fe5; + signature = 0x1e 0x94 0x41; + usbpid = 0x2fe3; + + memory "eeprom" + size = 1024; + ; - memory "prodsig" - page_size = 64; + memory "flash" + size = 0x5000; ; - memory "sram" - size = 4096; + memory "application" + size = 0x4000; ; -; -#------------------------------------------------------------ -# ATxmega64A1 -#------------------------------------------------------------ + memory "apptable" + offset = 0x803000; + ; -part parent ".xmega-ab" # x64a1 - desc = "ATxmega64A1"; - id = "x64a1"; - variants = - "ATxmega64A1: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1-C7U: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1-C7UR: VFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1-CUR: BGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 243; - n_interrupts = 125; - boot_section_size = 4096; - signature = 0x1e 0x96 0x4e; - usbpid = 0x2fe5; + memory "boot" + offset = 0x804000; + ; memory "fuse2" bitmask = 0x43; ; memory "sram" - size = 4096; + size = 2048; ; ; #------------------------------------------------------------ -# ATxmega64A1U +# ATxmega32A4U #------------------------------------------------------------ -part parent ".xmega-ab" # x64a1u - desc = "ATxmega64A1U"; - id = "x64a1u"; +part parent ".xmega-ab" # x32a4u + desc = "ATxmega32A4U"; + id = "x32a4u"; variants = - "ATxmega64A1U-AN: TQFP100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1U-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1U-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1U-C7U: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1U-C7UR: VFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega64A1U-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A1U-CUR: TFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; - mcuid = 244; + "ATxmega32A4U-AN: TQFP44, Fmax=32 MHz, T=[0 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4U-ANR: TQFP44, Fmax=32 MHz, T=[0 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4U-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4U-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4U-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4U-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega32A4U-M7: VQFN44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4U-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4U-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + prog_modes = PM_SPM | PM_PDI; + mcuid = 239; n_interrupts = 127; boot_section_size = 4096; - signature = 0x1e 0x96 0x4e; - usbpid = 0x2fe8; + signature = 0x1e 0x95 0x41; + usbpid = 0x2fe4; - memory "prodsig" - size = 64; - page_size = 64; - readsize = 64; + memory "eeprom" + size = 1024; ; - memory "sram" - size = 4096; + memory "flash" + size = 0x9000; ; -; -#------------------------------------------------------------ -# ATxmega64A3 -#------------------------------------------------------------ + memory "application" + size = 0x8000; + ; -part parent ".xmega-ab" # x64a3 - desc = "ATxmega64A3"; - id = "x64a3"; - variants = - "ATxmega64A3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - mcuid = 246; - n_interrupts = 122; - boot_section_size = 4096; - signature = 0x1e 0x96 0x42; - usbpid = 0x2fe5; + memory "apptable" + offset = 0x807000; + ; - memory "fuse2" - bitmask = 0x43; + memory "boot" + offset = 0x808000; ; memory "sram" @@ -18282,24 +15925,50 @@ part parent ".xmega-ab" # x64a3 ; #------------------------------------------------------------ -# ATxmega64A3U +# ATxmega32C4 #------------------------------------------------------------ -part parent ".xmega-ab" # x64a3u - desc = "ATxmega64A3U"; - id = "x64a3u"; +part parent ".xmega-cd" # x32c4 + desc = "ATxmega32C4"; + id = "x32c4"; variants = - "ATxmega64A3U-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A3U-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A3U-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A3U-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A3U-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 247; + "ATxmega32C4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C4-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C4-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega32C4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 240; n_interrupts = 127; boot_section_size = 4096; - signature = 0x1e 0x96 0x42; - usbpid = 0x2fe5; + signature = 0x1e 0x95 0x44; + usbpid = 0x2fe4; + + memory "eeprom" + size = 1024; + ; + + memory "flash" + size = 0x9000; + ; + + memory "application" + size = 0x8000; + ; + + memory "apptable" + offset = 0x807000; + ; + + memory "boot" + offset = 0x808000; + ; + + memory "prodsig" + page_size = 64; + ; memory "sram" size = 4096; @@ -18307,45 +15976,52 @@ part parent ".xmega-ab" # x64a3u ; #------------------------------------------------------------ -# ATxmega64A4 +# ATxmega32D4 #------------------------------------------------------------ -part parent ".xmega-ab" # x64a4 - desc = "ATxmega64A4"; - id = "x64a4"; +part parent ".xmega-cd" # x32d4 + desc = "ATxmega32D4"; + id = "x32d4"; variants = - "ATxmega64A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - mcuid = 251; - n_interrupts = 125; + "ATxmega32D4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D4-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega32D4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D4-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D4-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D4-MHR: VQFN44, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + mcuid = 241; + n_interrupts = 91; boot_section_size = 4096; - signature = 0x1e 0x96 0x46; - usbpid = 0x2fe5; + signature = 0x1e 0x95 0x42; + usbpid = 0x2fe4; - memory "fuse0" - initval = -1; + memory "eeprom" + size = 1024; ; - memory "fuse1" - initval = -1; + memory "flash" + size = 0x9000; ; - memory "fuse2" - initval = -1; - bitmask = -1; + memory "application" + size = 0x8000; ; - memory "fuse4" - initval = -1; - bitmask = -1; + memory "apptable" + offset = 0x807000; ; - memory "fuse5" - initval = -1; - bitmask = -1; + memory "boot" + offset = 0x808000; ; - memory "lock" - initval = -1; + memory "prodsig" + size = 52; + readsize = 52; ; memory "sram" @@ -18354,29 +16030,50 @@ part parent ".xmega-ab" # x64a4 ; #------------------------------------------------------------ -# ATxmega64B1 +# ATxmega32A4 #------------------------------------------------------------ -part parent ".xmega-ab" # x64b1 - desc = "ATxmega64B1"; - id = "x64b1"; +part parent ".xmega-ab" # x32a4 + desc = "ATxmega32A4"; + id = "x32a4"; variants = - "ATxmega64B1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64B1-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64B1-CU: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64B1-CUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 245; - n_interrupts = 81; + "ATxmega32A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4-CUR: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4-MHR: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32A4-MU: VQFN44, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + prog_modes = PM_SPM | PM_PDI; + mcuid = 238; + n_interrupts = 94; boot_section_size = 4096; - signature = 0x1e 0x96 0x52; - usbpid = 0x2fe1; + signature = 0x1e 0x95 0x41; + usbpid = 0x2fe4; + + memory "eeprom" + size = 1024; + ; + + memory "flash" + size = 0x9000; + ; + + memory "application" + size = 0x8000; + ; - memory "fuse4" - initval = 0xff; + memory "apptable" + offset = 0x807000; ; - memory "calibration" - size = 5; + memory "boot" + offset = 0x808000; + ; + + memory "fuse2" + bitmask = 0x43; ; memory "sram" @@ -18385,28 +16082,32 @@ part parent ".xmega-ab" # x64b1 ; #------------------------------------------------------------ -# ATxmega64B3 +# ATxmega64A4U #------------------------------------------------------------ -part parent ".xmega-ab" # x64b3 - desc = "ATxmega64B3"; - id = "x64b3"; +part parent ".xmega-ab" # x64a4u + desc = "ATxmega64A4U"; + id = "x64a4u"; variants = - "ATxmega64B3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64B3-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega64B3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 248; - n_interrupts = 54; + "ATxmega64A4U-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A4U-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A4U-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A4U-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A4U-CUR: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A4U-M7: VQFN44PW, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A4U-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A4U-MHR: VQFN44, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + prog_modes = PM_SPM | PM_PDI; + mcuid = 252; + n_interrupts = 127; boot_section_size = 4096; - signature = 0x1e 0x96 0x51; - usbpid = 0x2fdf; - - memory "fuse4" - initval = 0xff; - ; + signature = 0x1e 0x96 0x46; + usbpid = 0x2fe5; - memory "calibration" - size = 5; + memory "prodsig" + size = 64; + page_size = 64; + readsize = 64; ; memory "sram" @@ -18415,102 +16116,94 @@ part parent ".xmega-ab" # x64b3 ; #------------------------------------------------------------ -# ATxmega128C3 +# ATxmega32C3 #------------------------------------------------------------ -part parent ".xmega-cd" # x128c3 - desc = "ATxmega128C3"; - id = "x128c3"; +part parent ".xmega-cd" # x32c3 + desc = "ATxmega32C3"; + id = "x32c3"; variants = - "ATxmega128C3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128C3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128C3-M7: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128C3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128C3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 261; + "ATxmega32C3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C3-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega32C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C3-M7: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32C3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + mcuid = 236; n_interrupts = 127; - boot_section_size = 8192; - signature = 0x1e 0x97 0x52; - usbpid = 0x2fd7; + boot_section_size = 4096; + signature = 0x1e 0x95 0x49; + usbpid = 0x2fe4; + + memory "eeprom" + size = 1024; + ; memory "flash" - size = 0x22000; - page_size = 512; + size = 0x9000; ; memory "application" - size = 0x20000; - page_size = 512; + size = 0x8000; ; memory "apptable" - size = 8192; - page_size = 512; - offset = 0x81e000; + offset = 0x807000; ; memory "boot" - size = 8192; - page_size = 512; - offset = 0x820000; + offset = 0x808000; ; memory "prodsig" page_size = 64; ; - memory "usersig" - size = 512; - page_size = 512; - ; - memory "sram" - size = 8192; + size = 4096; ; ; #------------------------------------------------------------ -# ATxmega128D3 +# ATxmega32D3 #------------------------------------------------------------ -part parent ".xmega-cd" # x128d3 - desc = "ATxmega128D3"; - id = "x128d3"; +part parent ".xmega-cd" # x32d3 + desc = "ATxmega32D3"; + id = "x32d3"; variants = - "ATxmega128D3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D3-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 262; + "ATxmega32D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D3-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega32D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32D3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega32D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 237; n_interrupts = 114; - boot_section_size = 8192; - signature = 0x1e 0x97 0x48; - usbpid = 0x2fd7; + boot_section_size = 4096; + signature = 0x1e 0x95 0x4a; + usbpid = 0x2fe4; + + memory "eeprom" + size = 1024; + ; memory "flash" - size = 0x22000; - page_size = 512; + size = 0x9000; ; memory "application" - size = 0x20000; - page_size = 512; + size = 0x8000; ; memory "apptable" - size = 8192; - page_size = 512; - offset = 0x81e000; + offset = 0x807000; ; memory "boot" - size = 8192; - page_size = 512; - offset = 0x820000; + offset = 0x808000; ; memory "prodsig" @@ -18518,184 +16211,154 @@ part parent ".xmega-cd" # x128d3 readsize = 52; ; - memory "usersig" - size = 512; - page_size = 512; - ; - memory "sram" - size = 8192; + size = 4096; ; ; #------------------------------------------------------------ -# ATxmega128D4 +# ATxmega64C3 #------------------------------------------------------------ -part parent ".xmega-cd" # x128d4 - desc = "ATxmega128D4"; - id = "x128d4"; +part parent ".xmega-cd" # x64c3 + desc = "ATxmega64C3"; + id = "x64c3"; variants = - "ATxmega128D4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D4-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D4-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega128D4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D4-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128D4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 265; - n_interrupts = 91; - boot_section_size = 8192; - signature = 0x1e 0x97 0x47; - usbpid = 0x2fd7; + "ATxmega64C3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64C3-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega64C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64C3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64C3-M7: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64C3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64C3-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 249; + n_interrupts = 127; + boot_section_size = 4096; + signature = 0x1e 0x96 0x49; + usbpid = 0x2fd6; - memory "flash" - size = 0x22000; + memory "prodsig" + page_size = 64; ; - memory "application" - size = 0x20000; - page_size = 512; + memory "sram" + size = 4096; ; +; - memory "apptable" - size = 8192; - page_size = 512; - offset = 0x81e000; +#------------------------------------------------------------ +# ATxmega64D3 +#------------------------------------------------------------ + +part parent ".xmega-cd" # x64d3 + desc = "ATxmega64D3"; + id = "x64d3"; + variants = + "ATxmega64D3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D3-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega64D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 250; + n_interrupts = 114; + boot_section_size = 4096; + signature = 0x1e 0x96 0x4a; + usbpid = 0x2fe5; + + memory "prodsig" + size = 52; + readsize = 52; ; - memory "boot" - size = 8192; - page_size = 512; - offset = 0x820000; + memory "sram" + size = 4096; ; +; + +#------------------------------------------------------------ +# ATxmega64D4 +#------------------------------------------------------------ + +part parent ".xmega-cd" # x64d4 + desc = "ATxmega64D4"; + id = "x64d4"; + variants = + "ATxmega64D4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D4-AU: QFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D4-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D4-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D4-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64D4-MHR: VQFN44, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + mcuid = 253; + n_interrupts = 91; + boot_section_size = 4096; + signature = 0x1e 0x96 0x47; + usbpid = 0x2fe5; memory "prodsig" page_size = 64; ; - memory "usersig" - size = 512; - page_size = 512; - ; - memory "sram" - size = 8192; + size = 4096; ; ; #------------------------------------------------------------ -# ATxmega128A1 +# ATxmega64A1 #------------------------------------------------------------ -part parent ".xmega-ab" # x128a1 - desc = "ATxmega128A1"; - id = "x128a1"; +part parent ".xmega-ab" # x64a1 + desc = "ATxmega64A1"; + id = "x64a1"; variants = - "ATxmega128A1: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1-C7U: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1-C7UR: VFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1-CUR: BGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 254; + "ATxmega64A1: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1-C7U: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1-C7UR: VFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1-CUR: BGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 243; n_interrupts = 125; - boot_section_size = 8192; - signature = 0x1e 0x97 0x4c; - usbpid = 0x2fd7; - - memory "flash" - size = 0x22000; - page_size = 512; - ; - - memory "application" - size = 0x20000; - page_size = 512; - ; - - memory "apptable" - size = 8192; - page_size = 512; - offset = 0x81e000; - ; - - memory "boot" - size = 8192; - page_size = 512; - offset = 0x820000; - ; + boot_section_size = 4096; + signature = 0x1e 0x96 0x4e; + usbpid = 0x2fe5; memory "fuse2" bitmask = 0x43; ; - memory "usersig" - size = 512; - page_size = 512; - ; - memory "sram" - size = 8192; + size = 4096; ; ; #------------------------------------------------------------ -# ATxmega128A1 revision D -#------------------------------------------------------------ - -part parent "x128a1" # x128a1d - desc = "ATxmega128A1revD"; - id = "x128a1d"; - mcuid = 255; - signature = 0x1e 0x97 0x41; -; - -#------------------------------------------------------------ -# ATxmega128A1U +# ATxmega64A1U #------------------------------------------------------------ -part parent ".xmega-ab" # x128a1u - desc = "ATxmega128A1U"; - id = "x128a1u"; +part parent ".xmega-ab" # x64a1u + desc = "ATxmega64A1U"; + id = "x64a1u"; variants = - "ATxmega128A1U-AN: TQFP100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1U-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega128A1U-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1U-AUR: N/A, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1U-C7U: VFBGA100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1U-C7UR: VFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega128A1U-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A1U-CUR: CBGA100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 256; + "ATxmega64A1U-AN: TQFP100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1U-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1U-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1U-C7U: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1U-C7UR: VFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega64A1U-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A1U-CUR: TFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + mcuid = 244; n_interrupts = 127; - boot_section_size = 8192; - signature = 0x1e 0x97 0x4c; - usbpid = 0x2fed; - - memory "flash" - size = 0x22000; - page_size = 512; - ; - - memory "application" - size = 0x20000; - page_size = 512; - ; - - memory "apptable" - size = 8192; - page_size = 512; - offset = 0x81e000; - ; - - memory "boot" - size = 8192; - page_size = 512; - offset = 0x820000; - ; + boot_section_size = 4096; + signature = 0x1e 0x96 0x4e; + usbpid = 0x2fe8; memory "prodsig" size = 64; @@ -18703,156 +16366,79 @@ part parent ".xmega-ab" # x128a1u readsize = 64; ; - memory "usersig" - size = 512; - page_size = 512; - ; - memory "sram" - size = 8192; + size = 4096; ; ; #------------------------------------------------------------ -# ATxmega128A3 +# ATxmega64A3 #------------------------------------------------------------ -part parent ".xmega-ab" # x128a3 - desc = "ATxmega128A3"; - id = "x128a3"; +part parent ".xmega-ab" # x64a3 + desc = "ATxmega64A3"; + id = "x64a3"; variants = - "ATxmega128A3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - mcuid = 258; + "ATxmega64A3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + mcuid = 246; n_interrupts = 122; - boot_section_size = 8192; - signature = 0x1e 0x97 0x42; - usbpid = 0x2fd7; - - memory "flash" - size = 0x22000; - page_size = 512; - ; - - memory "application" - size = 0x20000; - page_size = 512; - ; - - memory "apptable" - size = 8192; - page_size = 512; - offset = 0x81e000; - ; - - memory "boot" - size = 8192; - page_size = 512; - offset = 0x820000; - ; + boot_section_size = 4096; + signature = 0x1e 0x96 0x42; + usbpid = 0x2fe5; memory "fuse2" bitmask = 0x43; ; - memory "usersig" - size = 512; - page_size = 512; - ; - memory "sram" - size = 8192; + size = 4096; ; ; #------------------------------------------------------------ -# ATxmega128A3U +# ATxmega64A3U #------------------------------------------------------------ -part parent ".xmega-ab" # x128a3u - desc = "ATxmega128A3U"; - id = "x128a3u"; +part parent ".xmega-ab" # x64a3u + desc = "ATxmega64A3U"; + id = "x64a3u"; variants = - "ATxmega128A3U-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A3U-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A3U-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A3U-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A3U-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 259; + "ATxmega64A3U-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A3U-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A3U-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A3U-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A3U-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 247; n_interrupts = 127; - boot_section_size = 8192; - signature = 0x1e 0x97 0x42; - usbpid = 0x2fe6; - - memory "flash" - size = 0x22000; - page_size = 512; - ; - - memory "application" - size = 0x20000; - page_size = 512; - ; - - memory "apptable" - size = 8192; - page_size = 512; - offset = 0x81e000; - ; - - memory "boot" - size = 8192; - page_size = 512; - offset = 0x820000; - ; - - memory "usersig" - size = 512; - page_size = 512; - ; + boot_section_size = 4096; + signature = 0x1e 0x96 0x42; + usbpid = 0x2fe5; memory "sram" - size = 8192; + size = 4096; ; ; #------------------------------------------------------------ -# ATxmega128A4 +# ATxmega64A4 #------------------------------------------------------------ -part parent ".xmega-ab" # x128a4 - desc = "ATxmega128A4"; - id = "x128a4"; +part parent ".xmega-ab" # x64a4 + desc = "ATxmega64A4"; + id = "x64a4"; variants = - "ATxmega128A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - mcuid = 263; - boot_section_size = 8192; - signature = 0x1e 0x97 0x46; - - memory "flash" - size = 0x22000; - ; - - memory "application" - size = 0x20000; - page_size = 512; - ; - - memory "apptable" - page_size = 512; - offset = 0x81f000; - ; - - memory "boot" - size = 8192; - page_size = 512; - offset = 0x820000; - ; + "ATxmega64A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + mcuid = 251; + n_interrupts = 125; + boot_section_size = 4096; + signature = 0x1e 0x96 0x46; + usbpid = 0x2fe5; memory "fuse0" initval = -1; @@ -18881,107 +16467,28 @@ part parent ".xmega-ab" # x128a4 initval = -1; ; - memory "prodsig" - size = 50; - readsize = 50; - ; - - memory "usersig" - size = 512; - page_size = 512; - ; - - memory "sram" - size = 8192; - ; -; - -#------------------------------------------------------------ -# ATxmega128A4U -#------------------------------------------------------------ - -part parent ".xmega-ab" # x128a4u - desc = "ATxmega128A4U"; - id = "x128a4u"; - variants = - "ATxmega128A4U-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A4U-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A4U-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A4U-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A4U-M7: VQFN44PW, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A4U-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128A4U-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - prog_modes = PM_SPM | PM_PDI; - mcuid = 264; - n_interrupts = 127; - boot_section_size = 8192; - signature = 0x1e 0x97 0x46; - usbpid = 0x2fde; - - memory "flash" - size = 0x22000; - ; - - memory "application" - size = 0x20000; - ; - - memory "apptable" - offset = 0x81f000; - ; - - memory "boot" - size = 8192; - offset = 0x820000; - ; - - memory "prodsig" - size = 64; - page_size = 64; - readsize = 64; - ; - memory "sram" - size = 8192; + size = 4096; ; ; #------------------------------------------------------------ -# ATxmega128B1 +# ATxmega64B1 #------------------------------------------------------------ -part parent ".xmega-ab" # x128b1 - desc = "ATxmega128B1"; - id = "x128b1"; +part parent ".xmega-ab" # x64b1 + desc = "ATxmega64B1"; + id = "x64b1"; variants = - "ATxmega128B1-AN: TQFP100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128B1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128B1-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128B1-CU: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128B1-CUR: TFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 257; + "ATxmega64B1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64B1-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64B1-CU: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64B1-CUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 245; n_interrupts = 81; - boot_section_size = 8192; - signature = 0x1e 0x97 0x4d; - usbpid = 0x2fea; - - memory "flash" - size = 0x22000; - ; - - memory "application" - size = 0x20000; - ; - - memory "apptable" - size = 8192; - offset = 0x81e000; - ; - - memory "boot" - size = 8192; - offset = 0x820000; - ; + boot_section_size = 4096; + signature = 0x1e 0x96 0x52; + usbpid = 0x2fe1; memory "fuse4" initval = 0xff; @@ -18992,47 +16499,26 @@ part parent ".xmega-ab" # x128b1 ; memory "sram" - size = 8192; + size = 4096; ; ; #------------------------------------------------------------ -# ATxmega128B3 +# ATxmega64B3 #------------------------------------------------------------ -part parent ".xmega-ab" # x128b3 - desc = "ATxmega128B3"; - id = "x128b3"; +part parent ".xmega-ab" # x64b3 + desc = "ATxmega64B3"; + id = "x64b3"; variants = - "ATxmega128B3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128B3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128B3-MCU: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128B3-MCUR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128B3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega128B3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 260; + "ATxmega64B3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64B3-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega64B3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 248; n_interrupts = 54; - boot_section_size = 8192; - signature = 0x1e 0x97 0x4b; - usbpid = 0x2fe0; - - memory "flash" - size = 0x22000; - ; - - memory "application" - size = 0x20000; - ; - - memory "apptable" - size = 8192; - offset = 0x81e000; - ; - - memory "boot" - size = 8192; - offset = 0x820000; - ; + boot_section_size = 4096; + signature = 0x1e 0x96 0x51; + usbpid = 0x2fdf; memory "fuse4" initval = 0xff; @@ -19043,47 +16529,50 @@ part parent ".xmega-ab" # x128b3 ; memory "sram" - size = 8192; + size = 4096; ; ; #------------------------------------------------------------ -# ATxmega192C3 +# ATxmega128C3 #------------------------------------------------------------ -part parent ".xmega-cd" # x192c3 - desc = "ATxmega192C3"; - id = "x192c3"; +part parent ".xmega-cd" # x128c3 + desc = "ATxmega128C3"; + id = "x128c3"; variants = - "ATxmega192C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192C3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192C3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192C3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 269; + "ATxmega128C3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128C3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128C3-M7: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128C3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128C3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 261; n_interrupts = 127; boot_section_size = 8192; - signature = 0x1e 0x97 0x51; + signature = 0x1e 0x97 0x52; + usbpid = 0x2fd7; memory "flash" - size = 0x32000; + size = 0x22000; page_size = 512; ; memory "application" - size = 0x30000; + size = 0x20000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x82e000; + offset = 0x81e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x830000; + offset = 0x820000; ; memory "prodsig" @@ -19096,50 +16585,51 @@ part parent ".xmega-cd" # x192c3 ; memory "sram" - size = 0x4000; + size = 8192; ; ; #------------------------------------------------------------ -# ATxmega192D3 +# ATxmega128D3 #------------------------------------------------------------ -part parent ".xmega-cd" # x192d3 - desc = "ATxmega192D3"; - id = "x192d3"; +part parent ".xmega-cd" # x128d3 + desc = "ATxmega128D3"; + id = "x128d3"; variants = - "ATxmega192D3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega192D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192D3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192D3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192D3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega192D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 270; + "ATxmega128D3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D3-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 262; n_interrupts = 114; boot_section_size = 8192; - signature = 0x1e 0x97 0x49; + signature = 0x1e 0x97 0x48; + usbpid = 0x2fd7; memory "flash" - size = 0x32000; + size = 0x22000; page_size = 512; ; memory "application" - size = 0x30000; + size = 0x20000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x82e000; + offset = 0x81e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x830000; + offset = 0x820000; ; memory "prodsig" @@ -19153,78 +16643,55 @@ part parent ".xmega-cd" # x192d3 ; memory "sram" - size = 0x4000; + size = 8192; ; ; #------------------------------------------------------------ -# ATxmega192A1 +# ATxmega128D4 #------------------------------------------------------------ -part parent ".xmega-ab" # x192a1 - desc = "ATxmega192A1"; - id = "x192a1"; +part parent ".xmega-cd" # x128d4 + desc = "ATxmega128D4"; + id = "x128d4"; variants = - "ATxmega192A1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 266; - n_interrupts = 127; + "ATxmega128D4-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D4-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D4-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D4-CU: VFBGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D4-CUR: VFBGA49, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega128D4-M7: VFBGA49, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D4-MH: QFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128D4-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 265; + n_interrupts = 91; boot_section_size = 8192; - signature = 0x1e 0x97 0x4e; + signature = 0x1e 0x97 0x47; + usbpid = 0x2fd7; memory "flash" - size = 0x32000; - page_size = 512; + size = 0x22000; ; memory "application" - size = 0x30000; + size = 0x20000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x82e000; + offset = 0x81e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x830000; - ; - - memory "fuse0" - initval = -1; - ; - - memory "fuse1" - initval = -1; - ; - - memory "fuse2" - initval = -1; - bitmask = -1; - ; - - memory "fuse4" - initval = -1; - bitmask = -1; - ; - - memory "fuse5" - initval = -1; - bitmask = -1; - ; - - memory "lock" - initval = -1; + offset = 0x820000; ; memory "prodsig" - size = 64; page_size = 64; - readsize = 64; ; memory "usersig" @@ -19233,49 +16700,51 @@ part parent ".xmega-ab" # x192a1 ; memory "sram" - size = 0x4000; + size = 8192; ; ; #------------------------------------------------------------ -# ATxmega192A3 +# ATxmega128A1 #------------------------------------------------------------ -part parent ".xmega-ab" # x192a3 - desc = "ATxmega192A3"; - id = "x192a3"; +part parent ".xmega-ab" # x128a1 + desc = "ATxmega128A1"; + id = "x128a1"; variants = - "ATxmega192A3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - mcuid = 267; - n_interrupts = 122; + "ATxmega128A1: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1-C7U: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1-C7UR: VFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1-CUR: BGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 254; + n_interrupts = 125; boot_section_size = 8192; - signature = 0x1e 0x97 0x44; + signature = 0x1e 0x97 0x4c; + usbpid = 0x2fd7; memory "flash" - size = 0x32000; + size = 0x22000; page_size = 512; ; memory "application" - size = 0x30000; + size = 0x20000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x82e000; + offset = 0x81e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x830000; + offset = 0x820000; ; memory "fuse2" @@ -19288,51 +16757,69 @@ part parent ".xmega-ab" # x192a3 ; memory "sram" - size = 0x4000; + size = 8192; ; ; #------------------------------------------------------------ -# ATxmega192A3U +# ATxmega128A1 revision D #------------------------------------------------------------ -part parent ".xmega-ab" # x192a3u - desc = "ATxmega192A3U"; - id = "x192a3u"; +part parent "x128a1" # x128a1d + desc = "ATxmega128A1revD"; + id = "x128a1d"; + mcuid = 255; + signature = 0x1e 0x97 0x41; +; + +#------------------------------------------------------------ +# ATxmega128A1U +#------------------------------------------------------------ + +part parent ".xmega-ab" # x128a1u + desc = "ATxmega128A1U"; + id = "x128a1u"; variants = - "ATxmega192A3U-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A3U-ANR: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A3U-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A3U-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A3U-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega192A3U-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega192A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 268; + "ATxmega128A1U-AN: TQFP100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1U-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega128A1U-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1U-AUR: N/A, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1U-C7U: VFBGA100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1U-C7UR: VFBGA100, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega128A1U-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A1U-CUR: CBGA100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 256; n_interrupts = 127; boot_section_size = 8192; - signature = 0x1e 0x97 0x44; - usbpid = 0x2fe7; + signature = 0x1e 0x97 0x4c; + usbpid = 0x2fed; memory "flash" - size = 0x32000; + size = 0x22000; page_size = 512; ; memory "application" - size = 0x30000; + size = 0x20000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x82e000; + offset = 0x81e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x830000; + offset = 0x820000; + ; + + memory "prodsig" + size = 64; + page_size = 64; + readsize = 64; ; memory "usersig" @@ -19341,58 +16828,54 @@ part parent ".xmega-ab" # x192a3u ; memory "sram" - size = 0x4000; + size = 8192; ; ; #------------------------------------------------------------ -# ATxmega256C3 +# ATxmega128A3 #------------------------------------------------------------ -part parent ".xmega-cd" # x256c3 - desc = "ATxmega256C3"; - id = "x256c3"; +part parent ".xmega-ab" # x128a3 + desc = "ATxmega128A3"; + id = "x128a3"; variants = - "ATxmega256C3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256C3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256C3-M7: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256C3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256C3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 276; - n_interrupts = 127; + "ATxmega128A3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + mcuid = 258; + n_interrupts = 122; boot_section_size = 8192; - signature = 0x1e 0x98 0x46; - usbpid = 0x2fda; - - memory "eeprom" - size = 4096; - ; + signature = 0x1e 0x97 0x42; + usbpid = 0x2fd7; memory "flash" - size = 0x42000; + size = 0x22000; page_size = 512; ; memory "application" - size = 0x40000; + size = 0x20000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x83e000; + offset = 0x81e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x840000; + offset = 0x820000; ; - memory "prodsig" - page_size = 64; + memory "fuse2" + bitmask = 0x43; ; memory "usersig" @@ -19401,60 +16884,50 @@ part parent ".xmega-cd" # x256c3 ; memory "sram" - size = 0x4000; + size = 8192; ; ; #------------------------------------------------------------ -# ATxmega256D3 +# ATxmega128A3U #------------------------------------------------------------ -part parent ".xmega-cd" # x256d3 - desc = "ATxmega256D3"; - id = "x256d3"; +part parent ".xmega-ab" # x128a3u + desc = "ATxmega128A3U"; + id = "x128a3u"; variants = - "ATxmega256D3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega256D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256D3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256D3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256D3-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 277; - n_interrupts = 114; + "ATxmega128A3U-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A3U-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A3U-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A3U-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A3U-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 259; + n_interrupts = 127; boot_section_size = 8192; - signature = 0x1e 0x98 0x44; - usbpid = 0x2fda; - - memory "eeprom" - size = 4096; - ; + signature = 0x1e 0x97 0x42; + usbpid = 0x2fe6; memory "flash" - size = 0x42000; + size = 0x22000; page_size = 512; ; memory "application" - size = 0x40000; + size = 0x20000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x83e000; + offset = 0x81e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x840000; - ; - - memory "prodsig" - size = 52; - readsize = 52; + offset = 0x820000; ; memory "usersig" @@ -19463,50 +16936,41 @@ part parent ".xmega-cd" # x256d3 ; memory "sram" - size = 0x4000; + size = 8192; ; ; #------------------------------------------------------------ -# ATxmega256A1 +# ATxmega128A4 #------------------------------------------------------------ -part parent ".xmega-ab" # x256a1 - desc = "ATxmega256A1"; - id = "x256a1"; +part parent ".xmega-ab" # x128a4 + desc = "ATxmega128A4"; + id = "x128a4"; variants = - "ATxmega256A1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 271; - n_interrupts = 127; + "ATxmega128A4: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + mcuid = 263; boot_section_size = 8192; - signature = 0x1e 0x98 0x46; - usbpid = 0x2fda; - - memory "eeprom" - size = 4096; - ; + signature = 0x1e 0x97 0x46; memory "flash" - size = 0x42000; - page_size = 512; + size = 0x22000; ; memory "application" - size = 0x40000; + size = 0x20000; page_size = 512; ; memory "apptable" - size = 8192; page_size = 512; - offset = 0x83e000; + offset = 0x81f000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x840000; + offset = 0x820000; ; memory "fuse0" @@ -19537,9 +17001,8 @@ part parent ".xmega-ab" # x256a1 ; memory "prodsig" - size = 64; - page_size = 64; - readsize = 64; + size = 50; + readsize = 50; ; memory "usersig" @@ -19548,115 +17011,202 @@ part parent ".xmega-ab" # x256a1 ; memory "sram" - size = 0x4000; + size = 8192; ; ; #------------------------------------------------------------ -# ATxmega256A3 +# ATxmega128A4U #------------------------------------------------------------ -part parent ".xmega-ab" # x256a3 - desc = "ATxmega256A3"; - id = "x256a3"; +part parent ".xmega-ab" # x128a4u + desc = "ATxmega128A4U"; + id = "x128a4u"; variants = - "ATxmega256A3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - mcuid = 272; - n_interrupts = 122; + "ATxmega128A4U-AN: TQFP44, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A4U-AU: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A4U-AUR: TQFP44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A4U-CU: BGA49, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A4U-M7: VQFN44PW, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A4U-MH: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128A4U-MHR: VQFN44, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + prog_modes = PM_SPM | PM_PDI; + mcuid = 264; + n_interrupts = 127; boot_section_size = 8192; - signature = 0x1e 0x98 0x42; - usbpid = 0x2fda; + signature = 0x1e 0x97 0x46; + usbpid = 0x2fde; - memory "eeprom" - size = 4096; + memory "flash" + size = 0x22000; + ; + + memory "application" + size = 0x20000; + ; + + memory "apptable" + offset = 0x81f000; + ; + + memory "boot" + size = 8192; + offset = 0x820000; + ; + + memory "prodsig" + size = 64; + page_size = 64; + readsize = 64; + ; + + memory "sram" + size = 8192; ; +; + +#------------------------------------------------------------ +# ATxmega128B1 +#------------------------------------------------------------ + +part parent ".xmega-ab" # x128b1 + desc = "ATxmega128B1"; + id = "x128b1"; + variants = + "ATxmega128B1-AN: TQFP100, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128B1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128B1-AUR: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128B1-CU: VFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128B1-CUR: TFBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 257; + n_interrupts = 81; + boot_section_size = 8192; + signature = 0x1e 0x97 0x4d; + usbpid = 0x2fea; memory "flash" - size = 0x42000; - page_size = 512; + size = 0x22000; ; memory "application" - size = 0x40000; - page_size = 512; + size = 0x20000; ; memory "apptable" size = 8192; - page_size = 512; - offset = 0x83e000; + offset = 0x81e000; ; memory "boot" size = 8192; - page_size = 512; - offset = 0x840000; + offset = 0x820000; ; - memory "fuse2" - bitmask = 0x43; + memory "fuse4" + initval = 0xff; ; - memory "usersig" - size = 512; - page_size = 512; + memory "calibration" + size = 5; ; memory "sram" - size = 0x4000; + size = 8192; ; ; #------------------------------------------------------------ -# ATxmega256A3U +# ATxmega128B3 #------------------------------------------------------------ -part parent ".xmega-ab" # x256a3u - desc = "ATxmega256A3U"; - id = "x256a3u"; +part parent ".xmega-ab" # x128b3 + desc = "ATxmega128B3"; + id = "x128b3"; variants = - "ATxmega256A3U-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3U-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega256A3U-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3U-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3U-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3U-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 275; - n_interrupts = 127; + "ATxmega128B3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128B3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128B3-MCU: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128B3-MCUR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128B3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega128B3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 260; + n_interrupts = 54; boot_section_size = 8192; - signature = 0x1e 0x98 0x42; - usbpid = 0x2fec; + signature = 0x1e 0x97 0x4b; + usbpid = 0x2fe0; - memory "eeprom" - size = 4096; + memory "flash" + size = 0x22000; + ; + + memory "application" + size = 0x20000; + ; + + memory "apptable" + size = 8192; + offset = 0x81e000; + ; + + memory "boot" + size = 8192; + offset = 0x820000; + ; + + memory "fuse4" + initval = 0xff; + ; + + memory "calibration" + size = 5; + ; + + memory "sram" + size = 8192; ; +; + +#------------------------------------------------------------ +# ATxmega192C3 +#------------------------------------------------------------ + +part parent ".xmega-cd" # x192c3 + desc = "ATxmega192C3"; + id = "x192c3"; + variants = + "ATxmega192C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192C3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192C3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192C3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 269; + n_interrupts = 127; + boot_section_size = 8192; + signature = 0x1e 0x97 0x51; memory "flash" - size = 0x42000; + size = 0x32000; page_size = 512; ; memory "application" - size = 0x40000; + size = 0x30000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x83e000; + offset = 0x82e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x840000; + offset = 0x830000; + ; + + memory "prodsig" + page_size = 64; ; memory "usersig" @@ -19670,52 +17220,50 @@ part parent ".xmega-ab" # x256a3u ; #------------------------------------------------------------ -# ATxmega256A3B +# ATxmega192D3 #------------------------------------------------------------ -part parent ".xmega-ab" # x256a3b - desc = "ATxmega256A3B"; - id = "x256a3b"; +part parent ".xmega-cd" # x192d3 + desc = "ATxmega192D3"; + id = "x192d3"; variants = - "ATxmega256A3B: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3B-AU: TQFP64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3B-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3B-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3B-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; - mcuid = 273; - n_interrupts = 122; - boot_section_size = 8192; - signature = 0x1e 0x98 0x43; - usbpid = 0x2fda; - - memory "eeprom" - size = 4096; - ; + "ATxmega192D3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega192D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192D3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192D3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192D3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega192D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 270; + n_interrupts = 114; + boot_section_size = 8192; + signature = 0x1e 0x97 0x49; memory "flash" - size = 0x42000; + size = 0x32000; page_size = 512; ; memory "application" - size = 0x40000; + size = 0x30000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x83e000; + offset = 0x82e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x840000; + offset = 0x830000; ; - memory "fuse2" - bitmask = 0x43; + memory "prodsig" + size = 52; + readsize = 52; ; memory "usersig" @@ -19729,47 +17277,73 @@ part parent ".xmega-ab" # x256a3b ; #------------------------------------------------------------ -# ATxmega256A3BU +# ATxmega192A1 #------------------------------------------------------------ -part parent ".xmega-ab" # x256a3bu - desc = "ATxmega256A3BU"; - id = "x256a3bu"; +part parent ".xmega-ab" # x192a1 + desc = "ATxmega192A1"; + id = "x192a1"; variants = - "ATxmega256A3BU-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3BU-AUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega256A3BU-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega256A3BU-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 274; + "ATxmega192A1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 266; n_interrupts = 127; boot_section_size = 8192; - signature = 0x1e 0x98 0x43; - usbpid = 0x2fe2; - - memory "eeprom" - size = 4096; - ; + signature = 0x1e 0x97 0x4e; memory "flash" - size = 0x42000; + size = 0x32000; page_size = 512; ; memory "application" - size = 0x40000; + size = 0x30000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x83e000; + offset = 0x82e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x840000; + offset = 0x830000; + ; + + memory "fuse0" + initval = -1; + ; + + memory "fuse1" + initval = -1; + ; + + memory "fuse2" + initval = -1; + bitmask = -1; + ; + + memory "fuse4" + initval = -1; + bitmask = -1; + ; + + memory "fuse5" + initval = -1; + bitmask = -1; + ; + + memory "lock" + initval = -1; + ; + + memory "prodsig" + size = 64; + page_size = 64; + readsize = 64; ; memory "usersig" @@ -19783,53 +17357,48 @@ part parent ".xmega-ab" # x256a3bu ; #------------------------------------------------------------ -# ATxmega384C3 +# ATxmega192A3 #------------------------------------------------------------ -part parent ".xmega-cd" # x384c3 - desc = "ATxmega384C3"; - id = "x384c3"; +part parent ".xmega-ab" # x192a3 + desc = "ATxmega192A3"; + id = "x192a3"; variants = - "ATxmega384C3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega384C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega384C3-AUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega384C3-M7: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega384C3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega384C3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; - mcuid = 278; - n_interrupts = 127; + "ATxmega192A3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + mcuid = 267; + n_interrupts = 122; boot_section_size = 8192; - signature = 0x1e 0x98 0x45; - usbpid = 0x2fdb; - - memory "eeprom" - size = 4096; - ; + signature = 0x1e 0x97 0x44; memory "flash" - size = 0x62000; + size = 0x32000; page_size = 512; ; memory "application" - size = 0x60000; + size = 0x30000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x85e000; + offset = 0x82e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x860000; + offset = 0x830000; ; - memory "prodsig" - page_size = 64; + memory "fuse2" + bitmask = 0x43; ; memory "usersig" @@ -19838,57 +17407,51 @@ part parent ".xmega-cd" # x384c3 ; memory "sram" - size = 0x8000; + size = 0x4000; ; ; #------------------------------------------------------------ -# ATxmega384D3 +# ATxmega192A3U #------------------------------------------------------------ -part parent ".xmega-cd" # x384d3 - desc = "ATxmega384D3"; - id = "x384d3"; +part parent ".xmega-ab" # x192a3u + desc = "ATxmega192A3U"; + id = "x192a3u"; variants = - "ATxmega384D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega384D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega384D3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega384D3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega384D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 279; - n_interrupts = 114; + "ATxmega192A3U-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A3U-ANR: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A3U-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A3U-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A3U-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega192A3U-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega192A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 268; + n_interrupts = 127; boot_section_size = 8192; - signature = 0x1e 0x98 0x47; - usbpid = 0x2fdb; - - memory "eeprom" - size = 4096; - ; + signature = 0x1e 0x97 0x44; + usbpid = 0x2fe7; memory "flash" - size = 0x62000; + size = 0x32000; page_size = 512; ; memory "application" - size = 0x60000; + size = 0x30000; page_size = 512; ; memory "apptable" size = 8192; page_size = 512; - offset = 0x85e000; + offset = 0x82e000; ; memory "boot" size = 8192; page_size = 512; - offset = 0x860000; - ; - - memory "prodsig" - page_size = 64; + offset = 0x830000; ; memory "usersig" @@ -19897,761 +17460,740 @@ part parent ".xmega-cd" # x384d3 ; memory "sram" - size = 0x8000; + size = 0x4000; ; ; #------------------------------------------------------------ -# ATxmega8E5 +# ATxmega256C3 #------------------------------------------------------------ -part parent ".xmega-e" # x8e5 - desc = "ATxmega8E5"; - id = "x8e5"; +part parent ".xmega-cd" # x256c3 + desc = "ATxmega256C3"; + id = "x256c3"; variants = - "ATxmega8E5-AN: TQFP32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega8E5-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega8E5-AU: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega8E5-AUR: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega8E5-M4N: UQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega8E5-M4U: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega8E5-M4UR: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega8E5-MN: VQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega8E5-MNR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega8E5-MU: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega8E5-MUR: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 230; - boot_section_size = 2048; - signature = 0x1e 0x93 0x41; + "ATxmega256C3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256C3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256C3-M7: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256C3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256C3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 276; + n_interrupts = 127; + boot_section_size = 8192; + signature = 0x1e 0x98 0x46; + usbpid = 0x2fda; memory "eeprom" - size = 512; + size = 4096; ; memory "flash" - size = 0x2800; + size = 0x42000; + page_size = 512; ; memory "application" - size = 8192; + size = 0x40000; + page_size = 512; ; memory "apptable" - size = 2048; - offset = 0x801800; + size = 8192; + page_size = 512; + offset = 0x83e000; ; memory "boot" - size = 2048; - offset = 0x802000; + size = 8192; + page_size = 512; + offset = 0x840000; + ; + + memory "prodsig" + page_size = 64; + ; + + memory "usersig" + size = 512; + page_size = 512; ; memory "sram" - size = 1024; + size = 0x4000; ; ; #------------------------------------------------------------ -# ATxmega16E5 +# ATxmega256D3 #------------------------------------------------------------ -part parent ".xmega-e" # x16e5 - desc = "ATxmega16E5"; - id = "x16e5"; - variants = - "ATxmega16E5-AN: TQFP32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16E5-ANR: TQFP32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16E5-AU: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16E5-AUR: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16E5-M4N: UQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16E5-M4U: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16E5-M4UR: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16E5-MN: VQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16E5-MNR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega16E5-MU: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega16E5-MUR: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 235; - boot_section_size = 4096; - signature = 0x1e 0x94 0x45; +part parent ".xmega-cd" # x256d3 + desc = "ATxmega256D3"; + id = "x256d3"; + variants = + "ATxmega256D3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega256D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256D3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256D3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256D3-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 277; + n_interrupts = 114; + boot_section_size = 8192; + signature = 0x1e 0x98 0x44; + usbpid = 0x2fda; memory "eeprom" - size = 512; + size = 4096; ; memory "flash" - size = 0x5000; + size = 0x42000; + page_size = 512; ; memory "application" - size = 0x4000; + size = 0x40000; + page_size = 512; ; memory "apptable" - offset = 0x803000; + size = 8192; + page_size = 512; + offset = 0x83e000; ; memory "boot" - offset = 0x804000; + size = 8192; + page_size = 512; + offset = 0x840000; + ; + + memory "prodsig" + size = 52; + readsize = 52; + ; + + memory "usersig" + size = 512; + page_size = 512; ; memory "sram" - size = 2048; + size = 0x4000; ; ; #------------------------------------------------------------ -# ATxmega32E5 +# ATxmega256A1 #------------------------------------------------------------ -part parent ".xmega-e" # x32e5 - desc = "ATxmega32E5"; - id = "x32e5"; +part parent ".xmega-ab" # x256a1 + desc = "ATxmega256A1"; + id = "x256a1"; variants = - "ATxmega32E5-AN: TQFP32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32E5-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega32E5-AU: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32E5-AUR: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32E5-M4N: UQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32E5-M4U: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32E5-M4UR: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32E5-MN: VQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32E5-MNR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", - "ATxmega32E5-MU: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", - "ATxmega32E5-MUR: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; - mcuid = 242; - boot_section_size = 4096; - signature = 0x1e 0x95 0x4c; + "ATxmega256A1-AU: TQFP100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A1-CU: CBGA100, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 271; + n_interrupts = 127; + boot_section_size = 8192; + signature = 0x1e 0x98 0x46; + usbpid = 0x2fda; memory "eeprom" - size = 1024; + size = 4096; ; memory "flash" - size = 0x9000; + size = 0x42000; + page_size = 512; ; memory "application" - size = 0x8000; + size = 0x40000; + page_size = 512; ; memory "apptable" - offset = 0x807000; + size = 8192; + page_size = 512; + offset = 0x83e000; ; memory "boot" - offset = 0x808000; + size = 8192; + page_size = 512; + offset = 0x840000; ; - memory "sram" - size = 4096; + memory "fuse0" + initval = -1; ; -; -#------------------------------------------------------------ -# AVR32UC3A0512 -#------------------------------------------------------------ + memory "fuse1" + initval = -1; + ; -part # uc3a0512 - desc = "AT32UC3A0512"; - id = "uc3a0512"; - variants = - "AT32UC3A0512-ALTR: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", - "AT32UC3A0512-ALTRA: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", - "AT32UC3A0512-ALTT: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", - "AT32UC3A0512-ALTTA: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", - "AT32UC3A0512-ALUR: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", - "AT32UC3A0512-ALUT: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", - "AT32UC3A0512-CTUR: TFBGA144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", - "AT32UC3A0512-CTUT: TFBGA144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", - "AT32UC3A0512AU-ALTRA: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", - "AT32UC3A0512AU-ALUT: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]"; - prog_modes = PM_AVR32JTAG | PM_aWire; - signature = 0xed 0xc0 0x3f; + memory "fuse2" + initval = -1; + bitmask = -1; + ; - memory "flash" - paged = yes; - size = 0x80000; # could be set dynamicly - page_size = 512; # bytes - num_pages = 1024; # could be set dynamicly - offset = 0x80000000; - readsize = 512; # bytes + memory "fuse4" + initval = -1; + bitmask = -1; ; -; -#------------------------------------------------------------ -# ATtiny1634 -#------------------------------------------------------------ + memory "fuse5" + initval = -1; + bitmask = -1; + ; -part # t1634 - desc = "ATtiny1634"; - id = "t1634"; - variants = - "ATtiny1634: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.8 V, 5.5 V]", - "ATtiny1634-MN: WQFN20, Fmax=12 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny1634-MNR: WQFN20, Fmax=12 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny1634-MU: QFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny1634-MUR: QFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny1634-SU: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny1634-SUR: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 40; - n_interrupts = 28; - n_page_erase = 4; - stk500_devcode = 0x86; - chip_erase_delay = 9000; - pagel = 0xb3; - bs2 = 0xb1; -# avr910_devcode = 0x??; - signature = 0x1e 0x94 0x12; - reset = io; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - flash_instr = 0xb6, 0x01, 0x11; - eeprom_instr = - 0xbd, 0xf2, 0xbd, 0xe1, 0xbb, 0xcf, 0xb4, 0x00, - 0xbe, 0x01, 0xb6, 0x01, 0xbc, 0x00, 0xbb, 0xbf, - 0x99, 0xf9, 0xbb, 0xaf; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x2e; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; - factory_fcpu = 1000000; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + memory "lock" + initval = -1; + ; - memory "eeprom" - size = 256; - page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - read = "1010.0000--000x.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--000x.xxxa--aaaa.aaaa--iiii.iiii"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; + memory "prodsig" + size = 64; + page_size = 64; + readsize = 64; ; - memory "flash" - paged = yes; + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" size = 0x4000; - page_size = 32; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 32; - readsize = 256; - read_lo = "0010.0000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - read_hi = "0010.1000--00aa.aaaa--aaaa.aaaa--oooo.oooo"; - loadpage_lo = "0100.0000--000x.xxxx--xxxx.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--000x.xxxx--xxxx.aaaa--iiii.iiii"; - writepage = "0100.1100--00aa.aaaa--aaaa.xxxx--xxxx.xxxx"; ; +; + +#------------------------------------------------------------ +# ATxmega256A3 +#------------------------------------------------------------ + +part parent ".xmega-ab" # x256a3 + desc = "ATxmega256A3"; + id = "x256a3"; + variants = + "ATxmega256A3: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + mcuid = 272; + n_interrupts = 122; + boot_section_size = 8192; + signature = 0x1e 0x98 0x42; + usbpid = 0x2fda; - memory "lfuse" - size = 1; - initval = 0x62; - bitmask = 0xdf; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; + memory "eeprom" + size = 4096; ; - memory "hfuse" - size = 1; - initval = 0xdf; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + memory "flash" + size = 0x42000; + page_size = 512; ; - memory "efuse" - size = 1; - initval = 0xff; - bitmask = 0x1f; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.0000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxi.iiii"; + memory "application" + size = 0x40000; + page_size = 512; ; - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x83e000; ; - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "boot" + size = 8192; + page_size = 512; + offset = 0x840000; ; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + memory "fuse2" + bitmask = 0x43; ; - memory "io" - size = 224; - offset = 0x20; + memory "usersig" + size = 512; + page_size = 512; ; memory "sram" - size = 1024; - offset = 0x100; + size = 0x4000; ; ; #------------------------------------------------------------ -# ATtiny1634R +# ATxmega256A3U #------------------------------------------------------------ -part parent "t1634" # t1634r - desc = "ATtiny1634R"; - id = "t1634r"; +part parent ".xmega-ab" # x256a3u + desc = "ATxmega256A3U"; + id = "x256a3u"; variants = - "ATtiny1634R-MU: QFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny1634R-MUR: WQFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny1634R-SU: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny1634R-SUR: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 41; -; + "ATxmega256A3U-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3U-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega256A3U-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3U-AUR: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3U-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3U-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3U-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 275; + n_interrupts = 127; + boot_section_size = 8192; + signature = 0x1e 0x98 0x42; + usbpid = 0x2fec; -#------------------------------------------------------------ -# Common values for reduced core tinys (4/5/9/10/20/40) -#------------------------------------------------------------ + memory "eeprom" + size = 4096; + ; -part # .reduced_core_tiny - desc = "Common values for reduced core tinys"; - id = ".reduced_core_tiny"; - prog_modes = PM_TPI; + memory "flash" + size = 0x42000; + page_size = 512; + ; - memory "fuse" - size = 1; - page_size = 16; - initval = 0xff; - bitmask = 0x07; - offset = 0x3f40; - blocksize = 4; + memory "application" + size = 0x40000; + page_size = 512; ; - memory "lockbits" - size = 1; - page_size = 16; - initval = 0xff; - bitmask = 0x03; - offset = 0x3f00; + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x83e000; ; - memory "signature" - size = 3; - page_size = 16; - offset = 0x3fc0; + memory "boot" + size = 8192; + page_size = 512; + offset = 0x840000; ; - memory "calibration" - size = 1; - page_size = 16; - offset = 0x3f80; + memory "usersig" + size = 512; + page_size = 512; ; memory "sram" - size = 32; - offset = 0x40; + size = 0x4000; ; ; #------------------------------------------------------------ -# ATtiny4 +# ATxmega256A3B #------------------------------------------------------------ -part parent ".reduced_core_tiny" # t4 - desc = "ATtiny4"; - id = "t4"; +part parent ".xmega-ab" # x256a3b + desc = "ATxmega256A3B"; + id = "x256a3b"; variants = - "ATtiny4-MAHR: UDFN8, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny4-TS8R: SOT23-6, Fmax=10 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny4-TSHR: SOT23-6, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 0; - n_interrupts = 10; - signature = 0x1e 0x8f 0x0a; - factory_fcpu = 1000000; + "ATxmega256A3B: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3B-AU: TQFP64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3B-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3B-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3B-MU: QFN64, Fmax=32 MHz, T=[N/A, N/A], Vcc=[1.6 V, 3.6 V]"; + mcuid = 273; + n_interrupts = 122; + boot_section_size = 8192; + signature = 0x1e 0x98 0x43; + usbpid = 0x2fda; + + memory "eeprom" + size = 4096; + ; memory "flash" - size = 512; - page_size = 16; - offset = 0x4000; - blocksize = 128; + size = 0x42000; + page_size = 512; ; - memory "io" - size = 64; + memory "application" + size = 0x40000; + page_size = 512; ; -; -#------------------------------------------------------------ -# ATtiny5 -#------------------------------------------------------------ + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x83e000; + ; -part parent "t4" # t5 - desc = "ATtiny5"; - id = "t5"; - variants = - "ATtiny5-MAHR: USON8, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny5-TS8R: SOT23-6, Fmax=10 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny5-TSHR: SOT23-6, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 1; - n_interrupts = 11; - signature = 0x1e 0x8f 0x09; + memory "boot" + size = 8192; + page_size = 512; + offset = 0x840000; + ; + + memory "fuse2" + bitmask = 0x43; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x4000; + ; ; #------------------------------------------------------------ -# ATtiny9 +# ATxmega256A3BU #------------------------------------------------------------ -part parent ".reduced_core_tiny" # t9 - desc = "ATtiny9"; - id = "t9"; +part parent ".xmega-ab" # x256a3bu + desc = "ATxmega256A3BU"; + id = "x256a3bu"; variants = - "ATtiny9-MAHR: DFN8, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny9-TS8R: SOT23-6, Fmax=10 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny9-TSHR: SOT23-6, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 2; - n_interrupts = 10; - signature = 0x1e 0x90 0x08; - factory_fcpu = 1000000; + "ATxmega256A3BU-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3BU-AUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega256A3BU-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega256A3BU-MHR: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 274; + n_interrupts = 127; + boot_section_size = 8192; + signature = 0x1e 0x98 0x43; + usbpid = 0x2fe2; + + memory "eeprom" + size = 4096; + ; memory "flash" - size = 1024; - page_size = 16; - offset = 0x4000; - blocksize = 128; + size = 0x42000; + page_size = 512; + ; + + memory "application" + size = 0x40000; + page_size = 512; ; - memory "io" - size = 64; + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x83e000; ; -; -#------------------------------------------------------------ -# ATtiny10 -#------------------------------------------------------------ + memory "boot" + size = 8192; + page_size = 512; + offset = 0x840000; + ; -part parent "t9" # t10 - desc = "ATtiny10"; - id = "t10"; - variants = - "ATtiny10-MAHR: UDFN8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny10-TS8R: SOT23-6, Fmax=10 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny10-TSHR: SOT23-6, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 3; - n_interrupts = 11; - signature = 0x1e 0x90 0x03; + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x4000; + ; ; #------------------------------------------------------------ -# ATtiny20 +# ATxmega384C3 #------------------------------------------------------------ -part parent ".reduced_core_tiny" # t20 - desc = "ATtiny20"; - id = "t20"; +part parent ".xmega-cd" # x384c3 + desc = "ATxmega384C3"; + id = "x384c3"; variants = - "ATtiny20-CCU: UFBGA15, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny20-CCUR: UFBGA15, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny20-MMH: VQFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny20-MMHR: VQFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny20-SSU: SOIC14, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny20-SSUR: SOIC14, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny20-UUR: WLCSP12, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny20-XU: TSSOP14, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny20-XUR: TSSOP14, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 4; - n_interrupts = 17; - signature = 0x1e 0x91 0x0f; - factory_fcpu = 1000000; + "ATxmega384C3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega384C3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega384C3-AUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega384C3-M7: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega384C3-MH: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega384C3-MHR: VQFN64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; + mcuid = 278; + n_interrupts = 127; + boot_section_size = 8192; + signature = 0x1e 0x98 0x45; + usbpid = 0x2fdb; + + memory "eeprom" + size = 4096; + ; memory "flash" - size = 2048; - page_size = 16; - n_word_writes = 2; - offset = 0x4000; - blocksize = 128; + size = 0x62000; + page_size = 512; ; - memory "fuse" - bitmask = 0x77; - n_word_writes = 2; + memory "application" + size = 0x60000; + page_size = 512; ; - memory "io" - size = 64; + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x85e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x860000; + ; + + memory "prodsig" + page_size = 64; + ; + + memory "usersig" + size = 512; + page_size = 512; ; memory "sram" - size = 128; + size = 0x8000; ; ; #------------------------------------------------------------ -# ATtiny40 +# ATxmega384D3 #------------------------------------------------------------ -part parent ".reduced_core_tiny" # t40 - desc = "ATtiny40"; - id = "t40"; +part parent ".xmega-cd" # x384d3 + desc = "ATxmega384D3"; + id = "x384d3"; variants = - "ATtiny40-MMH: VQFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny40-MMHR: VQFN20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny40-SU: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny40-SUR: SOIC20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny40-XU: TSSOP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny40-XUR: TSSOP20, Fmax=12 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 5; - n_interrupts = 18; - signature = 0x1e 0x92 0x0e; - factory_fcpu = 1000000; + "ATxmega384D3-AN: TQFP64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega384D3-AU: TQFP64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega384D3-MH: VQFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega384D3-MHR: QFN64, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega384D3-MN: QFN64, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 279; + n_interrupts = 114; + boot_section_size = 8192; + signature = 0x1e 0x98 0x47; + usbpid = 0x2fdb; - memory "flash" + memory "eeprom" size = 4096; - page_size = 64; - n_word_writes = 4; - offset = 0x4000; - blocksize = 128; ; - memory "fuse" - bitmask = 0x77; - n_word_writes = 4; + memory "flash" + size = 0x62000; + page_size = 512; ; - memory "io" - size = 64; + memory "application" + size = 0x60000; + page_size = 512; + ; + + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x85e000; + ; + + memory "boot" + size = 8192; + page_size = 512; + offset = 0x860000; + ; + + memory "prodsig" + page_size = 64; + ; + + memory "usersig" + size = 512; + page_size = 512; ; memory "sram" - size = 256; + size = 0x8000; ; ; #------------------------------------------------------------ -# ATtiny102 +# ATxmega8E5 #------------------------------------------------------------ -part parent ".reduced_core_tiny" # t102 - desc = "ATtiny102"; - id = "t102"; +part parent ".xmega-e" # x8e5 + desc = "ATxmega8E5"; + id = "x8e5"; variants = - "ATtiny102-M7R: UDFN8, Fmax=12 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny102-M8R: UDFN8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny102-SSFR: SOIC8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny102-SSNR: SOIC8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny102F-M7R: UDFN8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny102F-M8R: UDFN8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny102F-SSFR: SOIC8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny102F-SSNR: SOIC8, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 6; - n_interrupts = 16; - signature = 0x1e 0x90 0x0c; - factory_fcpu = 1000000; + "ATxmega8E5-AN: TQFP32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega8E5-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega8E5-AU: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega8E5-AUR: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega8E5-M4N: UQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega8E5-M4U: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega8E5-M4UR: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega8E5-MN: VQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega8E5-MNR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega8E5-MU: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega8E5-MUR: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 230; + boot_section_size = 2048; + signature = 0x1e 0x93 0x41; - memory "flash" - size = 1024; - page_size = 16; - offset = 0x4000; - blocksize = 128; + memory "eeprom" + size = 512; ; - memory "fuse" - bitmask = 0x0f; + memory "flash" + size = 0x2800; ; - memory "prodsig" - size = 16; - page_size = 16; - offset = 0x3fc0; + memory "application" + size = 8192; ; - memory "sigrow" - alias "prodsig"; + memory "apptable" + size = 2048; + offset = 0x801800; ; - memory "sernum" - size = 10; - offset = 0x3fc6; # Sub-region of prodsig + memory "boot" + size = 2048; + offset = 0x802000; ; - memory "io" - size = 64; + memory "sram" + size = 1024; ; ; #------------------------------------------------------------ -# ATtiny104 +# ATxmega16E5 #------------------------------------------------------------ -part parent ".reduced_core_tiny" # t104 - desc = "ATtiny104"; - id = "t104"; - variants = - "ATtiny104-SSFR: SOIC14, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny104-SSNR: SOIC14, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny104F-SSFR: SOIC14, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", - "ATtiny104F-SSNR: SOIC14, Fmax=12 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; - mcuid = 7; - n_interrupts = 16; - signature = 0x1e 0x90 0x0b; - factory_fcpu = 1000000; +part parent ".xmega-e" # x16e5 + desc = "ATxmega16E5"; + id = "x16e5"; + variants = + "ATxmega16E5-AN: TQFP32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16E5-ANR: TQFP32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16E5-AU: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16E5-AUR: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16E5-M4N: UQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16E5-M4U: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16E5-M4UR: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16E5-MN: VQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16E5-MNR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega16E5-MU: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega16E5-MUR: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 235; + boot_section_size = 4096; + signature = 0x1e 0x94 0x45; - memory "flash" - size = 1024; - page_size = 16; - offset = 0x4000; - blocksize = 128; + memory "eeprom" + size = 512; ; - memory "fuse" - bitmask = 0x0f; + memory "flash" + size = 0x5000; ; - memory "prodsig" - size = 16; - page_size = 16; - offset = 0x3fc0; + memory "application" + size = 0x4000; ; - memory "sigrow" - alias "prodsig"; + memory "apptable" + offset = 0x803000; ; - memory "sernum" - size = 10; - offset = 0x3fc6; # Sub-region of prodsig + memory "boot" + offset = 0x804000; ; - memory "io" - size = 64; + memory "sram" + size = 2048; ; ; #------------------------------------------------------------ -# ATmega406 +# ATxmega32E5 #------------------------------------------------------------ -part # m406 - desc = "ATmega406"; - id = "m406"; +part parent ".xmega-e" # x32e5 + desc = "ATxmega32E5"; + id = "x32e5"; variants = - "ATmega406: N/A, Fmax=1 MHz, T=[N/A, N/A], Vcc=[3.3 V, 3.3 V]", - "ATmega406-1AAU: LQFP48, Fmax=1 MHz, T=[-30 C, 85 C], Vcc=[4 V, 25 V]"; - prog_modes = PM_SPM | PM_HVPP | PM_JTAG; - mcuid = 125; - n_interrupts = 23; - n_boot_sections = 4; - boot_section_size = 512; - # STK500 parameters (parallel programming IO lines) - pagel = 0xa7; - bs2 = 0xa0; - signature = 0x1e 0x95 0x07; - reset = io; - serial = no; - # STK500v2 HV programming parameters, from XML - pp_controlstack = - 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - latchcycles = 6; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - factory_fcpu = 1000000; + "ATxmega32E5-AN: TQFP32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32E5-ANR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega32E5-AU: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32E5-AUR: TQFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32E5-M4N: UQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32E5-M4U: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32E5-M4UR: UQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32E5-MN: VQFN32, Fmax=32 MHz, T=[-40 C, 105 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32E5-MNR: N/A, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]", + "ATxmega32E5-MU: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]", + "ATxmega32E5-MUR: VQFN32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.6 V, 3.6 V]"; + mcuid = 242; + boot_section_size = 4096; + signature = 0x1e 0x95 0x4c; memory "eeprom" - size = 512; - page_size = 4; - num_pages = 128; - blocksize = 4; - readsize = 4; + size = 1024; ; memory "flash" - paged = yes; - size = 0xa000; - page_size = 128; - num_pages = 320; - blocksize = 128; - readsize = 128; + size = 0x9000; ; - memory "lfuse" - size = 1; - initval = 0xcd; + memory "application" + size = 0x8000; ; - memory "hfuse" - size = 1; - initval = 0xfe; - bitmask = 0x03; + memory "apptable" + offset = 0x807000; ; - memory "lockbits" - size = 1; - initval = 0xff; - bitmask = 0x3f; + memory "boot" + offset = 0x808000; ; - memory "signature" - size = 3; + memory "sram" + size = 4096; ; +; - memory "io" - size = 224; - offset = 0x20; - ; +#------------------------------------------------------------ +# AVR32UC3A0512 +#------------------------------------------------------------ - memory "sram" - size = 2048; - offset = 0x100; +part # uc3a0512 + desc = "AT32UC3A0512"; + id = "uc3a0512"; + variants = + "AT32UC3A0512-ALTR: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", + "AT32UC3A0512-ALTRA: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", + "AT32UC3A0512-ALTT: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", + "AT32UC3A0512-ALTTA: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", + "AT32UC3A0512-ALUR: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", + "AT32UC3A0512-ALUT: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", + "AT32UC3A0512-CTUR: TFBGA144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", + "AT32UC3A0512-CTUT: TFBGA144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", + "AT32UC3A0512AU-ALTRA: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]", + "AT32UC3A0512AU-ALUT: LQFP144, Fmax=66 MHz, T=[-40 C, 85 C], Vcc=[1.65 V, 3.6 V]"; + prog_modes = PM_AVR32JTAG | PM_aWire; + signature = 0xed 0xc0 0x3f; + + memory "flash" + paged = yes; + size = 0x80000; # could be set dynamicly + page_size = 512; # bytes + num_pages = 1024; # could be set dynamicly + offset = 0x80000000; + readsize = 512; # bytes ; ; @@ -25650,93 +23192,3 @@ part parent "16eb14" # 16eb32 mcuid = 383; signature = 0x1e 0x94 0x3e; ; - -#------------------------------------------------------------ -# Logic Green parts -#------------------------------------------------------------ - -part parent "m88" # lgt8f88p - desc = "LGT8F88P"; - id = "lgt8f88p"; - mcuid = 227; - signature = 0x1e 0x93 0x0f; - autobaud_sync = 0x1c; - - memory "lfuse" - initval = -1; - ; - - memory "hfuse" - initval = -1; - ; - - memory "efuse" - initval = -1; - bitmask = -1; - ; - - memory "lock" - initval = -1; - bitmask = -1; - ; -; - -#------------------------------------------------------------ -# LGT8F168P -#------------------------------------------------------------ - -part parent "m168" # lgt8f168p - desc = "LGT8F168P"; - id = "lgt8f168p"; - mcuid = 228; - signature = 0x1e 0x94 0x0b; - autobaud_sync = 0x1c; - - memory "lfuse" - initval = -1; - ; - - memory "hfuse" - initval = -1; - ; - - memory "efuse" - initval = -1; - bitmask = -1; - ; - - memory "lock" - initval = -1; - bitmask = -1; - ; -; - -#------------------------------------------------------------ -# LGT8F328P -#------------------------------------------------------------ - -part parent "m328" # lgt8f328p - desc = "LGT8F328P"; - id = "lgt8f328p"; - mcuid = 229; - signature = 0x1e 0x95 0x0f; - autobaud_sync = 0x1c; - - memory "lfuse" - initval = -1; - ; - - memory "hfuse" - initval = -1; - ; - - memory "efuse" - initval = -1; - bitmask = -1; - ; - - memory "lock" - initval = -1; - bitmask = -1; - ; -; From 96e92ba4704a5781adc4e75688dd568afe887bad Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sun, 14 Jul 2024 01:24:13 +0100 Subject: [PATCH 27/32] Extend prodsig and sernum to virtually all classic parts --- src/avrdude.1 | 10 +++++-- src/avrdude.conf.in | 69 +++++++++++++++++++++++++------------------- src/doc/avrdude.texi | 7 ++++- 3 files changed, 53 insertions(+), 33 deletions(-) diff --git a/src/avrdude.1 b/src/avrdude.1 index 71524ddc3..2f43e8af9 100644 --- a/src/avrdude.1 +++ b/src/avrdude.1 @@ -847,11 +847,17 @@ Low fuse byte .It lock Lock byte .It prodsig -Signature, calibration byte and serial number in a small read-only memory, +Signature, calibration byte(s) and serial number in a small read-only memory, which is only documented to be available for ATmega324PB, ATmega328PB, -ATtiny102 and ATtiny104; programmers may or may not be able to read this memory +ATtiny102 and ATtiny104; +.Nm +generally tries to make this memory available, also for parts where it is +not documented, but not all programmers may be able to read this memory .It sigrow Memory alias for prodsig +.It sernum +The serial number part of prodsig; owing to scarce documentation this may not +actually turn out to be a serial number or be readable by some programmers .It usersig Three extra flash pages for firmware settings; this memory is not erased during a chip erase. Only some classic parts, diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index 46531cc8e..d7478a49c 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -3784,10 +3784,25 @@ part parent ".classic-nocal" # .classic chip_erase = "1010.1100--1000.0000--0000.0000--0000.0000"; pgm_enable = "1010.1100--0101.0011--0000.0000--0000.0000"; + memory "prodsig" + size = 24; + read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; + ; + + memory "sigrow" + alias "prodsig"; + ; + memory "calibration" size = 1; read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; ; + + memory "sernum" + size = 10; + offset = 0xe; # Sub-region of prodsig + read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; + ; ; #------------------------------------------------------------ @@ -3859,6 +3874,10 @@ part parent ".classic" # t11 write = NULL; ; + memory "prodsig" + read = NULL; + ; + memory "signature" read = NULL; ; @@ -3867,6 +3886,10 @@ part parent ".classic" # t11 read = NULL; ; + memory "sernum" + read = NULL; + ; + memory "io" size = 64; offset = 0x0; @@ -6000,6 +6023,10 @@ part parent ".classic" # t28 write = NULL; ; + memory "prodsig" + read = NULL; + ; + memory "signature" read = NULL; ; @@ -6008,6 +6035,10 @@ part parent ".classic" # t28 read = NULL; ; + memory "sernum" + read = NULL; + ; + memory "io" size = 64; ; @@ -10457,21 +10488,6 @@ part parent "m324p" # m324pb bitmask = 0x0f; write = "1010.1100--1010.0100--xxxx.xxxx--1111.iiii"; ; - - memory "prodsig" - size = 24; - read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; - ; - - memory "sigrow" - alias "prodsig"; - ; - - memory "sernum" - size = 10; - offset = 0xe; # Sub-region of prodsig - read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; - ; ; #------------------------------------------------------------ @@ -12581,21 +12597,6 @@ part parent "m328" # m328pb bitmask = 0x0f; write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; ; - - memory "prodsig" - size = 24; - read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; - ; - - memory "sigrow" - alias "prodsig"; - ; - - memory "sernum" - size = 10; - offset = 0xe; # Sub-region of prodsig - read = "0 0 1 1 a0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a4 a3 a2 a1 o o o o o o o o"; - ; ; #------------------------------------------------------------ @@ -14576,6 +14577,10 @@ part parent ".classic" # m406 bitmask = 0x3f; ; + memory "prodsig" + read = NULL; + ; + memory "signature" read = NULL; ; @@ -14583,6 +14588,10 @@ part parent ".classic" # m406 memory "calibration" read = NULL; ; + + memory "sernum" + read = NULL; + ; ; #------------------------------------------------------------ diff --git a/src/doc/avrdude.texi b/src/doc/avrdude.texi index 82c2d66d6..3613631e8 100644 --- a/src/doc/avrdude.texi +++ b/src/doc/avrdude.texi @@ -892,9 +892,14 @@ Low fuse byte @item prodsig Signature, calibration byte and serial number in a small read-only memory, which is only documented to be available for ATmega324PB, ATmega328PB, -ATtiny102 and ATtiny104; programmers may or may not be able to read this memory +ATtiny102 and ATtiny104; AVRDUDE generally tries to make this memory +available, also for parts where it is not documented, but not all +programmers may be able to read this memory @item sigrow Memory alias for prodsig +@item sernum +The serial number part of prodsig; owing to scarce documentation this may not +actually turn out to be a serial number or be readable by some programmers @item usersig Three extra flash pages for firmware settings; this memory is not erased during a chip erase. Only some classic parts, From 44104df3e274597ebac153b051bf8fd9250f642d Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sun, 14 Jul 2024 15:46:24 +0100 Subject: [PATCH 28/32] Add missing space --- src/term.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/term.c b/src/term.c index 937c8ac29..9702267e9 100644 --- a/src/term.c +++ b/src/term.c @@ -966,7 +966,7 @@ static int cmd_erase(const PROGRAMMER *pgm, const AVRPART *p, int argc, const ch term_out("%s chip erase; discarded pending writes to flash%s\n", (pgm->prog_modes & PM_SPM)? "asking bootloader to perform": "performing", - avr_locate_bootrow(p)? ", EEPROM and bootrow": avr_locate_eeprom(p)? "and EEPROM": ""); + avr_locate_bootrow(p)? ", EEPROM and bootrow": avr_locate_eeprom(p)? " and EEPROM": ""); // Erase chip and clear cache int rc = pgm->chip_erase_cached(pgm, p); From d8836d3819b47078b620d7938a4cf714243024ad Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sun, 14 Jul 2024 19:40:27 +0100 Subject: [PATCH 29/32] Fix jtag3 access to prodsig sub-memories --- src/jtag3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jtag3.c b/src/jtag3.c index 854ccc704..76e68c381 100644 --- a/src/jtag3.c +++ b/src/jtag3.c @@ -2213,7 +2213,7 @@ static int jtag3_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM return -1; } } else if(mem_is_in_sigrow(mem)) { // sigrow submemories but not signature nor sigrow itself - cmd[3] = (p->prog_modes & PM_PDI)? MTYPE_SIGN_JTAG: MTYPE_PRODSIG; + cmd[3] = MTYPE_PRODSIG; AVRMEM *sigrow = avr_locate_sigrow(p); if(sigrow) addr += mem->offset - sigrow->offset; // Adjust offset for parent memory From 0c710432d27e8290c7f1baa89351f260f8fde94d Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sun, 14 Jul 2024 23:09:03 +0100 Subject: [PATCH 30/32] Update term command usage --- src/term.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/term.c b/src/term.c index 9702267e9..a25d63b15 100644 --- a/src/term.c +++ b/src/term.c @@ -733,7 +733,7 @@ static int cmd_backup(const PROGRAMMER *pgm, const AVRPART *p, int argc, const c "Notes:\n" " - Backup flushes the cache before reading memories\n" " - can be a comma separated list of known memories, all, etc or ALL\n" - " - ALL includes submemories, eg, boot in flash; all doesn't; etc is same as all\n" + " - ALL also includes sub-memories, eg, boot; all doesn't; etc is same as all\n" " - A leading - or \\ removes that memory from the list so far, eg, all,-bootrow\n" ); return -1; @@ -775,7 +775,7 @@ static int cmd_restore(const PROGRAMMER *pgm, const AVRPART *p, int argc, const " - Restore flushes the cache before writing memories\n" " - After writing memories restore resets the cache\n" " - can be a comma separated list of known memories, all, etc or ALL\n" - " - ALL includes submemories, eg, boot in flash; all doesn't; etc is same as all\n" + " - ALL also includes sub-memories, eg, boot; all doesn't; etc is same as all\n" " - A leading - or \\ removes that memory from the list so far, eg, all,-bootrow\n" " - Skips read-only memories in a list and, for bootloaders, also fuses and lock\n" " - Writing to single read-only memories only fails if the contents differs\n" @@ -818,7 +818,7 @@ static int cmd_verify(const PROGRAMMER *pgm, const AVRPART *p, int argc, const c "Notes:\n" " - Verify flushes the cache before verifying memories\n" " - can be a comma separated list of known memories, all, etc or ALL\n" - " - ALL includes submemories, eg, boot in flash; all doesn't; etc is same as all\n" + " - ALL also includes sub-memories, eg, boot; all doesn't; etc is same as all\n" " - A leading - or \\ removes that memory from the list so far, eg, all,-bootrow\n" ); return -1; From dbb1ceff1ac0cb2e72323954fc3dff83fd171cc4 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Sun, 14 Jul 2024 23:12:20 +0100 Subject: [PATCH 31/32] Fix jtag3 access to UPDI sigrow sub-memories --- src/jtag3.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/jtag3.c b/src/jtag3.c index 76e68c381..43ae6d5c5 100644 --- a/src/jtag3.c +++ b/src/jtag3.c @@ -2135,7 +2135,7 @@ static int jtag3_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM paddr_ptr = &PDATA(pgm)->flash_pageaddr; cache_ptr = PDATA(pgm)->flash_pagecache; } else if (mem_is_eeprom(mem)) { - if ( (pgm->flag & PGM_FL_IS_DW) || (p->prog_modes & PM_PDI) || (p->prog_modes & PM_UPDI) ) { + if ((pgm->flag & PGM_FL_IS_DW) || (p->prog_modes & (PM_PDI | PM_UPDI))) { cmd[3] = MTYPE_EEPROM; } else { cmd[3] = MTYPE_EEPROM_PAGE; @@ -2212,8 +2212,8 @@ static int jtag3_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM msg_error("address out of range for signature memory: %lu\n", addr); return -1; } - } else if(mem_is_in_sigrow(mem)) { // sigrow submemories but not signature nor sigrow itself - cmd[3] = MTYPE_PRODSIG; + } else if(mem_is_in_sigrow(mem)) { // sigrow sub-memories but not signature nor sigrow itself + cmd[3] = (p->prog_modes & PM_UPDI)? MTYPE_SIGN_JTAG: MTYPE_PRODSIG; AVRMEM *sigrow = avr_locate_sigrow(p); if(sigrow) addr += mem->offset - sigrow->offset; // Adjust offset for parent memory From ca4534af84a222db106e13058cdf4f0fbdbccd9b Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Mon, 15 Jul 2024 17:31:55 +0100 Subject: [PATCH 32/32] Remove unnecessary empty lines in avrdude.conf --- src/avrdude.conf.in | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index d7478a49c..8495e72d0 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -5127,8 +5127,6 @@ part parent "t44" # t44a "ATtiny44A-SSU: SOIC14, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", "ATtiny44A-SSUR: SOIC14N, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; mcuid = XVII + IV; # 21; - - ; #------------------------------------------------------------