From 52de5524029ba26d1879e8f0fa9d35140dd75c32 Mon Sep 17 00:00:00 2001 From: kalymos Date: Sat, 21 Mar 2026 14:15:15 +0100 Subject: [PATCH] refactor: update BoardDetection and serial debugging Debug: Fixed DEBUG_SERIAL_MONITOR Debug: BoardDetection --- PSNee/MCU.h | 9 +- PSNee/PSNee.ino | 103 +- PSNee/settings.h | 11 +- PSNeeCore-2.0.0/avr/avrdude.conf | 26371 +++++++++++++++-------------- 4 files changed, 13639 insertions(+), 12855 deletions(-) mode change 100755 => 100644 PSNeeCore-2.0.0/avr/avrdude.conf diff --git a/PSNee/MCU.h b/PSNee/MCU.h index d4a8163..4c8a172 100644 --- a/PSNee/MCU.h +++ b/PSNee/MCU.h @@ -163,7 +163,7 @@ (1 << PRTIM3) | // Timer 3 Off (1 << PRTIM4); // Timer 4 Off - PRR2 = (1 << PRTIM5); // Timer 5 Off (Spécifique au 128PB) + PRR2 = (1 << PRTIM5); // Timer 5 Off #else PRR = (1 << PRTWI) | // I2C Off @@ -183,7 +183,7 @@ TCCR3B = 0; TIMSK3 = 0; // Timer 3 (série PB) TCCR4B = 0; TIMSK4 = 0; // Timer 4 (série PB) #endif - + } #include #include @@ -192,7 +192,6 @@ #include #include - } // Main pin configuration @@ -275,7 +274,7 @@ #endif - // #if defined(PSNEE_DEBUG_SERIAL_MONITOR) + // #if defined(DEBUG_SERIAL_MONITOR) // #define DEBUG_PRINT(x) Serial.print(x) // #define DEBUG_PRINTHEX(x) Serial.print(x, HEX) // #define DEBUG_PRINTLN(x) Serial.println(x) @@ -499,7 +498,7 @@ #endif // --- Debug Serial (Software Serial) --- - #if defined(PSNEE_DEBUG_SERIAL_MONITOR) + #if defined(DEBUG_SERIAL_MONITOR) #include // SoftwareSerial(RX, TX): RX set to -1 (disabled), TX on PB3 // Note: Resource conflict if LED_RUN is also on PB3 diff --git a/PSNee/PSNee.ino b/PSNee/PSNee.ino index 054f29b..5271b82 100644 --- a/PSNee/PSNee.ino +++ b/PSNee/PSNee.ino @@ -9,7 +9,7 @@ * * SCPH model number // region code | region *--------------------------------------------------------------------------------------------------------------------*/ - #define SCPH_xxx1 // NTSC U/C | America. +// #define SCPH_xxx1 // NTSC U/C | America. // #define SCPH_xxx2 // PAL | Europ. // #define SCPH_xxx3 // NTSC J | Asia. // #define SCPH_xxxx // Universal @@ -46,7 +46,7 @@ // D13 for Arduino, ATtiny add a led between PB3 (pin 2) and gnd with a 1k resistor in series, // ATmega32U4 (Pro Micro) add a led between PB6 (pin 10) and gnd with a 1k resistor in series. -// #define DEBUG_SERIAL_MONITOR // Enables serial monitor output. + #define DEBUG_SERIAL_MONITOR // Enables serial monitor output. /****************************************************************************************************************** * Requires compilation with Arduino libs! @@ -90,7 +90,7 @@ * ATtiny | PSNee | ISP | * --------------------------------------------------- * Pin1 | | RESET | - * Pin2 | LED ^ serial | | serial only for PSNEE_DEBUG_SERIAL_MONITOR + * Pin2 | LED ^ serial | | serial only for DEBUG_SERIAL_MONITOR * Pin3 | WFCK | | * Pin4 | GND | GND | * Pin5 | SQCK | MOSI | @@ -117,7 +117,9 @@ uint8_t SUBQBuffer[12]; // Global buffer to store the 12-byte SUBQ channel data uint8_t hysteresis = 0; - +#if defined(DEBUG_SERIAL_MONITOR) + uint16_t global_window = 0; // Stores the remaining cycles from the detection window +#endif /******************************************************************************************************************* * Code section @@ -152,52 +154,62 @@ uint8_t hysteresis = 0; * *******************************************************************************************************************/ +/** + * FUNCTION : BoardDetection + * + * DESCRIPTION : + * Distinguishes motherboard generations (PU-7 through PU-22+) by analyzing + * the behavior of the WFCK signal. + * + * SIGNAL CHARACTERISTICS: + * - Legacy Boards (PU-7 to PU-20): WFCK acts as a static GATE signal. + * It remains HIGH (continuous) during the region-check window. + * - Modern Boards (PU-22 or newer): WFCK is an oscillating clock signal + * (Frequency-based). + * + * WFCK: __----------------------- // CONTINUOUS (PU-7 .. PU-20)(GATE) + * + * WFCK: __-_-_-_-_-_-_-_-_-_-_-_- // FREQUENCY (PU-22 or newer) + */ void BoardDetection() { - // Default state: 0 (Static/GATE mode for PU-7 to PU-20) - wfck_mode = 0; - uint8_t debounce = 100; - - /** - * INITIAL STABILIZATION DELAY (300ms) - * - PU-7/20: Voltage ramp-up takes ~54ms before stabilizing at a logic HIGH. - * - PU-22+: Clock oscillation (~7.3kHz) typically begins after ~297ms. - * This delay ensures all power-up transients and initial noise are bypassed. - */ - _delay_ms(300); - - // Define a sampling window to capture potential oscillations + wfck_mode = 0; // Default: Legacy (GATE) + uint8_t pulse_hits = 25; // We need to see 25 oscillations to confirm FREQUENCY mode uint16_t detectionWindow = 10000; - + _delay_ms(300); // Wait for WFCK to stabilize (High on Legacy, Oscillation on Modern) + while (--detectionWindow) { - /** - * DETECTION LOGIC: - * On legacy boards (PU-7/20), WFCK is now a steady HIGH. - * Detecting a LOW state indicates a potential clock cycle from a newer board. - */ - if (!PIN_WFCK_READ) { - // Software debounce to filter out micro-glitches or parasitic noise - while (--debounce); + /** + * LOGIC BASED ON YOUR ANALYSIS: + * If WFCK is "CONTINUOUS" (Legacy), it stays HIGH. PIN_WFCK_READ will always be 1. + * If WFCK is "FREQUENCY" (Modern), it will hit 0 (LOW) periodically. + */ + if (!PIN_WFCK_READ) { // Detect a LOW state (only possible in FREQUENCY mode) + + pulse_hits--; // Record one oscillation hit + + if (pulse_hits == 0) { + wfck_mode = 1; // Confirmed: FREQUENCY mode (PU-22 or newer) + #if defined(DEBUG_SERIAL_MONITOR) + global_window = detectionWindow; + #endif + return; // Exit as soon as we are sure + } /** - * VERIFICATION: - * If the signal remains LOW after the debounce, we confirm a genuine - * clock oscillation (WFCK). Legacy boards never transition to LOW - * once stabilized at HIGH during this phase. + * SYNC: Wait for the signal to go HIGH again. + * This ensures we count each pulse of the "FREQUENCY" signal only once. */ - if (!PIN_WFCK_READ) { - wfck_mode = 1; // Target confirmed: PU-22 or newer (Frequency mode) - return; + while (!PIN_WFCK_READ && detectionWindow > 0) { + detectionWindow--; } } } - - #if defined(PSNEE_DEBUG_SERIAL_MONITOR) - BoardDetectionLog(debounce, wfck_mode, INJECT_SCEx); - #endif + // If the window expires without seeing enough LOW pulses, it remains wfck_mode = 0 (GATE) } + /****************************************************************************************************************** * FUNCTION : CaptureSUBQ * @@ -240,7 +252,7 @@ void CaptureSUBQ(void) { } while (--bytesRemaining); // Efficient countdown for AVR binary size - #if defined(PSNEE_DEBUG_SERIAL_MONITOR) + #if defined(DEBUG_SERIAL_MONITOR) CaptureSUBQLog(SUBQBuffer); #endif } @@ -476,7 +488,7 @@ void PerformInjectionSequence(uint8_t injectSCEx) { #endif - #if defined(PSNEE_DEBUG_SERIAL_MONITOR) + #if defined(DEBUG_SERIAL_MONITOR) InjectLog(); #endif } @@ -501,9 +513,6 @@ void Init() { // Execute BIOS patching Bios_Patching(); - - cli(); - // #ifdef LED_RUN // PIN_LED_OFF; // #endif @@ -513,10 +522,10 @@ void Init() { PIN_SUBQ_INPUT; // --- Debug Interface Setup --- - #if defined(PSNEE_DEBUG_SERIAL_MONITOR) && defined(IS_ATTINY_FAMILY) - //pinMode(debugtx, OUTPUT); // software serial tx pin + #if defined(DEBUG_SERIAL_MONITOR) && defined(IS_ATTINY_FAMILY) + pinMode(debugtx, OUTPUT); // software serial tx pin mySerial.begin(115200); // 13,82 bytes in 12ms, max for softwareserial. (expected data: ~13 bytes / 12ms) // update: this is actually quicker - #elif defined(PSNEE_DEBUG_SERIAL_MONITOR) && !defined(IS_ATTINY_FAMILY) + #elif defined(DEBUG_SERIAL_MONITOR) && !defined(IS_ATTINY_FAMILY) Serial.begin(500000); // 60 bytes in 12ms (expected data: ~26 bytes / 12ms) // update: this is actually quicker #endif @@ -529,6 +538,10 @@ int main() { Init(); + #if defined(DEBUG_SERIAL_MONITOR) + BoardDetectionLog( global_window, wfck_mode, INJECT_SCEx); + #endif + while (1) { // 1. Timing Sync: Prevent reading the tail end of the previous SUBQ packet diff --git a/PSNee/settings.h b/PSNee/settings.h index b3cf605..c70d995 100644 --- a/PSNee/settings.h +++ b/PSNee/settings.h @@ -217,7 +217,7 @@ #if defined(DEBUG_SERIAL_MONITOR) extern uint8_t hysteresis; -void BoardDetectionLog (uint16_t debounce, uint8_t Wfck_mode, uint8_t region){ //Information about the MCU, and old or late console mode. +void BoardDetectionLog (uint16_t window_result, uint8_t Wfck_mode, uint8_t region){ //Information about the MCU, and old or late console mode. #if defined(IS_ATTINY_FAMILY) mySerial.print("m "); mySerial.println(Wfck_mode); @@ -228,11 +228,14 @@ void BoardDetectionLog (uint16_t debounce, uint8_t Wfck_mode, uint8_t region){ "PAL", // 2 "Universal" // 3 }; + Serial.println(" "); Serial.print(F(" MCU frequency: ")); Serial.print(F_CPU / 1000000L); Serial.println(F(" MHz")); - Serial.print(" debounce: "); Serial.println(debounce); + Serial.print(F(" Window remaining: ")); Serial.println(window_result); // Real-time diagnostic Serial.print(" wfck_mode: "); Serial.println(Wfck_mode); Serial.print(" region: "); Serial.print(regionNames[region]); + Serial.println(" "); #endif + } @@ -356,13 +359,13 @@ void InjectLog(){ // --- RESOURCE CONFLICT CHECK (ATtiny) --- #if defined(IS_ATTINY_FAMILY) && \ defined(LED_RUN) && \ - defined(PSNEE_DEBUG_SERIAL_MONITOR) + defined(DEBUG_SERIAL_MONITOR) #error "Resource conflict: LED_RUN and DEBUG_SERIAL are incompatible on ATtiny." #endif // --- Feature Status --- -#ifdef PSNEE_DEBUG_SERIAL_MONITOR +#ifdef DEBUG_SERIAL_MONITOR #pragma message "Feature: Serial Debug Monitor ENABLED" #endif diff --git a/PSNeeCore-2.0.0/avr/avrdude.conf b/PSNeeCore-2.0.0/avr/avrdude.conf old mode 100755 new mode 100644 index 1097b83..1f707ed --- a/PSNeeCore-2.0.0/avr/avrdude.conf +++ b/PSNeeCore-2.0.0/avr/avrdude.conf @@ -1,14 +1,16 @@ -# $Id$ -*- text -*- +# AVRDUDE Configuration File -*- text -*- # -# AVRDUDE Configuration File -# -# This file contains configuration data used by AVRDUDE which describes -# the programming hardware pinouts and also provides part definitions. -# AVRDUDE's "-C" command line option specifies the location of the -# configuration file. The "-c" option names the programmer configuration -# which must match one of the entry's "id" parameter. The "-p" option -# identifies which part AVRDUDE is going to be programming and must match -# one of the parts' "id" parameter. + +avrdude_conf_version = "8.0-arduino.1"; + +# This file contains AVRDUDE's default configuration data describing +# programming hardware pinouts and part definitions. Normally, it +# requires AVRDUDE be of the same or higher version than above string. +# AVRDUDE's -C command line option specifies the location of the +# configuration file. The -c option names the programmer configuration +# which must match one of the entry's id parameter. The -p option +# identifies which part AVRDUDE is going to be programming and must +# match one of the parts' id parameters. # # DO NOT MODIFY THIS FILE. Modifications will be overwritten the next # time a "make install" is run. For user-specific additions, use the @@ -21,23 +23,28 @@ # id = [, ... ] ; # are quoted strings # desc = ; # quoted string # type = ; # programmer type, quoted string -# # supported types can be listed by "-c ?type" +# # list known types with -c ?type # prog_modes = PM_ {| PM_} # interfaces, eg, PM_SPM|PM_PDI (1) -# extra_features = HAS_ {| HAS_} # extra features, eg, HAS_SUFFER|HAS_VTARG_ADJ (2) +# is_serialadapter = # programmer is also a serialadapter +# extra_features = HAS_ {| HAS_} # extra features, eg, HAS_SUFFER (2) # connection_type = parallel | serial | usb | spi # baudrate = ; # baudrate for avr910-programmer -# vcc = [, ... ] ; # pin number(s) +# vcc = [, ... ] ; # pin number(s) (3) # buff = [, ... ] ; # pin number(s) # reset = ; # pin number # sck = ; # pin number -# sdo = ; # pin number -# sdi = ; # pin number +# sdo|pico = ; # pin number +# sdi|poci = ; # pin number +# tck = ; # pin number +# tdi = ; # pin number +# tdo = ; # pin number +# tms = ; # pin number # errled = ; # pin number # rdyled = ; # pin number # pgmled = ; # pin number # vfyled = ; # pin number -# usbvid = ; # USB VID (Vendor ID) -# usbpid = [, ...] ; # USB PID (Product ID) (3) +# usbvid = ; # USB vendor ID +# usbpid = [, ...] ; # USB product ID (4) # usbdev = ; # USB interface or other device info # usbvendor = ; # USB Vendor Name # usbproduct = ; # USB Product Name @@ -45,8 +52,7 @@ # hvupdi_support = [, , ... ] ; # UPDI HV Variants Support # ; # -# # To invert a pin use = ~ -# # To invert a pin list (all pins get inverted) use ~ ( [, ... ] ) +# # Notes # # # # (1) The following program modes are known: # # - PM_SPM: Bootloaders, self-programming with SPM opcodes or NVM Controllers @@ -69,6 +75,7 @@ # # the behavior of the mEDBG programmer/debugger chip. See the Xplained Mini/Nano # # documentation for more information # # - HAS_VTARG_SWITCH: Programer has a programmable target power switch +# # - HAS_VTARG_READ: Programmer can read the target voltage # # - HAS_VTARG_ADJ: Programmer has an adjustable target power source that can # # be controlled with Avrdude # # - HAS_FOSC_ADJ: Programmer has a programable frequency generator that @@ -76,7 +83,20 @@ # # - HAS_VAREF_ADJ: Programmer has an adjustable analog reference voltage that # # can be controlled with Avrdude # # -# # (3) Not all programmer types can process a list of PIDs +# # (3) To invert the polarity of a pin use a tilde: ~ +# # To invert the polarity of all pins in a list use ~( [, ... ]) +# # +# # (4) Not all programmer types can process a list of PIDs +# +# serialadapter # same as programmer albeit only for usb parameters +# parent # optional serialadapter or programmer parent +# id = [, ... ] ; # are quoted strings +# desc = ; # quoted string +# baudrate = ; # optional default baudrate, eg, in .avrduderc +# usbvid = ; # USB vendor ID +# usbpid = [, ...] ; # list of USB product IDs +# usbsn = ; # USB Serial Number in per-user .avrduderc +# ; # # part # desc = ; # quoted string, the long part name, eg, "ATmega328p" @@ -85,20 +105,14 @@ # family_id = ; # quoted string, eg, "megaAVR" or "tinyAVR" # prog_modes = PM_ {| PM_} # interfaces, eg, PM_SPM|PM_ISP|PM_HVPP|PM_debugWIRE # mcuid = ; # unique id in 0..2039 for 8-bit AVRs +# archnum = ; # avr-gcc architecture number for the part # n_interrupts = ; # number of interrupts, used for vector bootloaders # n_page_erase = ; # if set, number of pages erased during SPM erase # n_boot_sections = ; # Number of boot sections # boot_section_size = ; # Size of (smallest) boot section, if any # hvupdi_variant = ; # numeric -1 (n/a) or 0..2 -# devicecode = ; # deprecated, use stk500_devcode # stk500_devcode = ; # numeric # avr910_devcode = ; # numeric -# has_jtag = ; # part has JTAG i/f (deprecated, use prog_modes) -# has_debugwire = ; # part has debugWire i/f (deprecated, use prog_modes) -# has_pdi = ; # part has PDI i/f (deprecated, use prog_modes) -# has_updi = ; # part has UPDI i/f (deprecated, use prog_modes) -# has_tpi = ; # part has TPI i/f (deprecated, use prog_modes) -# is_avr32 = ; # AVR32 part (deprecated, use prog_modes) # is_at90s1200 = ; # AT90S1200 part # signature = ; # signature bytes # usbpid = ; # DFU USB PID @@ -108,7 +122,7 @@ # # STK500 parameters (parallel programming IO lines) # pagel = ; # page load pin name in hex, eg, 0xD7 # bs2 = ; # byte select 2 pin name in hex, eg, 0xA0 -# serial = ; # can use serial downloading +# serial = ; # can use serial programming # parallel = ; # can use parallel programming # # STK500v2 parameters, to be taken from Atmel's ATDF files # timeout = ; @@ -155,14 +169,16 @@ # mcu_base = ; # MCU control block in ATxmega devices # nvm_base = ; # NVM controller in ATxmega devices # ocd_base = ; # OCD module in AVR8X/UPDI devices +# syscfg_base = ; # Chip revision ID in AVR8X/UPDI devices # ocdrev = ; # JTAGICE3 parameter from ATDF files # pgm_enable = ; # chip_erase = ; # # parameters for bootloaders # autobaud_sync = ; # autobaud detection byte, default 0x30 +# factory_fcpu = ; # F_CPU in Hz on reset and factory-set fuses # -# memory -# paged = ; # yes/no (flash only, do not use for EEPROM) +# memory +# paged = ; # yes/no (flash of classic parts only) # offset = ; # memory offset # size = ; # bytes # page_size = ; # bytes @@ -219,15 +235,13 @@ # ; # # NOTES: -# * 'devicecode' is the device code used by the STK500 (see codes -# listed below) -# * Not all memory types will implement all instructions +# * Not all memories will implement all instructions # * AVR Fuse bits and Lock bits are implemented as a type of memory -# * Example memory types are: +# * Example memories are: # "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high # fuse), "signature", "calibration", "lock" -# * The memory type specified on the avrdude command line must match -# one of the memory types defined for the specified chip +# * The memory specified on the avrdude command line must match +# one of the memories defined for the specified chip # * The pwroff_after_write flag causes avrdude to attempt to # power the device off and back on after an unsuccessful write to # the affected memory area if VCC programmer pins are defined. If @@ -290,7 +304,7 @@ # # # The following are STK500 part device codes to use for the -# "devicecode" field of the part. These came from Atmel's software +# stk500_devcode field of the part. These came from Atmel's software # section avr061.zip which accompanies the application note # AVR061 available from: # @@ -419,6 +433,7 @@ default_parallel = "/dev/parport0"; default_serial = "/dev/ttyS0"; default_spi = ""; +# default_baudrate = 115200; # default_bitclock = 2.5; default_linuxgpio = "gpiochip0"; allow_subshells = no; @@ -449,11 +464,34 @@ allow_subshells = no; # avrdude -c dryrun -p ATmega2560 -U flash:w:myapplication.hex:i # avrdude -c dryrun -p AVR64DB48 -Tconfig -programmer +programmer # dryrun id = "dryrun"; desc = "Emulates programming without a programmer"; type = "dryrun"; - prog_modes = PM_TPI | PM_ISP | PM_UPDI | PM_PDI; + prog_modes = PM_TPI | PM_ISP | PM_PDI | PM_UPDI | PM_HVSP | PM_HVPP | PM_aWire; +; + +#------------------------------------------------------------ +# dryboot +#------------------------------------------------------------ + +# Like -c dryrun the -c dryboot programmer only emulates programming, +# albeit for communicating to bootloaders, ie, without a physical +# programmer between the host and the target AVR part. AVRDUDE behaves +# slightly different when talking to a bootloader: Whilst for most classic +# parts the flash memory looks like NOR-memory, ie, cleared bits cannot be +# set and therefore programming requires a chip erase first, bootloaders +# do have the power of erasing a flash page (setting it to all 0xff) +# before writing a page. This requires AVRDUDE to behave differently when +# talking to a bootloader, which it recognises by the prog_modes = PM_SPM +# setting below. -c dryboot allows exploring these differences at an +# emulation level. + +programmer # dryboot + id = "dryboot"; + desc = "Emulates bootloader programming without the part"; + type = "dryrun"; + prog_modes = PM_SPM; ; #------------------------------------------------------------ @@ -463,9 +501,9 @@ programmer # http://wiring.org.co/ # Basically STK500v2 protocol, with some glue to trigger the bootloader -programmer +programmer # wiring id = "wiring"; - desc = "Wiring for bootloader using STK500 v2 protocol"; + desc = "Wiring bootloader using STK500 v2 protocol"; type = "wiring"; prog_modes = PM_SPM; connection_type = serial; @@ -482,9 +520,9 @@ programmer # bootloaders. Same as the stk500v1 except that it resets the attached # board and treats EEPROM as the optiboot bootloaders expect. -programmer +programmer # arduino id = "arduino"; - desc = "Arduino for bootloader using STK500 v1 protocol"; + desc = "Arduino bootloader using STK500 v1 protocol"; type = "arduino"; prog_modes = PM_SPM; connection_type = serial; @@ -498,7 +536,7 @@ programmer # - Reads/writes flash/EEPROM via the MCU bootloader and a serial connection # - Automatically resets an attached board via RTS/DTR into bootloader mode # - Implements urprotocol, a skeleton version of STK500v1 -# - Supports vector bootloaders by patching interrupt vectors during upload: +# - Supports vector bootloaders by patching interrupt vectors on flash writes # + Vector bootloaders run on all parts, no need for a HW boot section # + Can be much smaller than the smallest HW boot section of a part, eg, # 256 bytes for ATmega2560 (smallest HW boot section is 1024 bytes) @@ -507,13 +545,13 @@ programmer # - Provides a 4-byte metadata interface in top flash for # + Allowing applications to utilise unused flash similar to EEPROM # + Storing in top flash the file name and its last-modified date -# + Displaying file name and date of the last uploaded application +# + Displaying file name and date of the last programmed application # # See https://github.com/stefanrueger/urboot -programmer +programmer # urclock id = "urclock"; - desc = "Urclock programmer for urboot bootloaders using urprotocol"; + desc = "Urboot bootloaders using urprotocol"; type = "urclock"; prog_modes = PM_SPM; connection_type = serial; @@ -523,9 +561,15 @@ programmer # xbee #------------------------------------------------------------ -programmer +# The XBeeBoot bootloader provides XBee Series 2 Over-The-Air +# firmware update capability as well as supporting direct +# firmware update via the stk500v1 protocol. See +# https://github.com/davidsainty/xbeeboot +# for details. + +programmer # xbee id = "xbee"; - desc = "XBee for Series 2 Over-The-Air (XBeeBoot) bootloader using STK500 v1 protocol"; + desc = "XBeeBoot Over-The-Air bootloader (STK500 v1)"; type = "xbee"; prog_modes = PM_SPM; connection_type = serial; @@ -535,7 +579,10 @@ programmer # ft2232h #------------------------------------------------------------ -# Interfaces with the chips on these programmers: +# FTDI USB to serial converters can be used for ISP programming of +# classic AVRs, and quite a few programmers are based on this. The +# ft2232h programmer, named after the FTDI converter chip, +# interfaces with the chips on these programmers (and more): # - http://real.kiev.ua/old/avreal/en/adapters # - http://www.amontec.com/jtagkey.shtml and .../jtagkey-tiny.shtml # - http://www.olimex.com/dev/arm-usb-ocd.html, arm-usb-tiny.html @@ -544,21 +591,21 @@ programmer # - http://dangerousprototypes.com/docs/FT2232_breakout_board # - http://flashrom.org/FT2232SPI_Programmer # -# The drivers will look for a specific device and use the first one -# found. If you have mulitple devices, and they give out serial +# The programmer will look for a specific device and use the first +# one found. If you have multiple devices, and they give out serial # numbers, a different entry for each of them can be created in a -# persnonal ~/.avrduderc or avrdude.rc entry and the usbsn = "..."; +# per-user ~/.avrduderc or avrdude.rc entry and the usbsn = "..."; # field added to distinguish between them. # -# Note that the pin numbers for the main ISP signals (reset, sck, -# sdo, sdi) are fixed and cannot be changed, since they must match -# the way the Multi-Protocol Synchronous Serial Engine (MPSSE) of -# these FTDI ICs has been designed. +# Avrftdi-type programmers utilise the Multi-Protocol Synchronous Serial +# Engine (MPSSE) of the FTDI ICs, which determines the pin numbers for the +# main ISP signals (sck, sdo, sdi). The reset pin can differ, though. # -# See also https://ftdichip.com/wp-content/uploads/2020/07/DS_FT2232H.pdf +# Data sheet of the FT2232H chip: +# https://ftdichip.com/wp-content/uploads/2020/08/DS_FT2232H.pdf -programmer - id = "ft2232h", "avrftdi", "2232h"; +programmer # avrftdi + id = "avrftdi", "2232h"; desc = "FT2232H/D based generic programmer"; type = "avrftdi"; prog_modes = PM_TPI | PM_ISP; @@ -573,14 +620,26 @@ programmer sdi = 2; # AD2 (TDO) ; +#------------------------------------------------------------ +# ft2232h +#------------------------------------------------------------ + +# The ft2232h programmer is the same as above 2232h but it can be +# used to address the port of a particular board via -P ft2232h + +programmer parent "2232h" # ft2232h + id = "ft2232h"; + is_serialadapter = yes; +; + #------------------------------------------------------------ # 2232HIO #------------------------------------------------------------ -# This is an implementation of the above with a buffer IC (74AC244) and -# 4 LEDs directly attached, all active low. +# This is an implementation of the above 2232h with a buffer IC +# (74AC244) and 4 LEDs directly attached, all active low. -programmer parent "ft2232h" +programmer parent "2232h" # 2232hio id = "2232hio"; desc = "2232hio based on FT2232H with buffer and LEDs"; buff = ~4; @@ -598,7 +657,7 @@ programmer parent "ft2232h" # Tigard - FT2232H based multi-protocol tool for hardware hacking # https://github.com/tigard-tools/tigard -programmer parent "ft2232h" +programmer parent "2232h" # tigard id = "tigard"; desc = "Tigard interface board"; usbdev = "B"; @@ -614,7 +673,7 @@ programmer parent "ft2232h" # Adds a buffer and a LED indicating that the programming is in progress. # https://www.kanda.com/products/Kanda/AVRISP-U.html -programmer parent "ft2232h" +programmer parent "2232h" # avrisp-u id = "avrisp-u"; desc = "Kanda AVRISP-U"; usbsn = "AVR"; @@ -623,6 +682,28 @@ programmer parent "ft2232h" pgmled = ~10; ; +#------------------------------------------------------------ +# ft2232h_jtag +#------------------------------------------------------------ + +# Here a FTDI ft2232h chip is used for JTAG programming. + +programmer # ft2232h_jtag + id = "ft2232h_jtag"; + desc = "FT2232H based generic JTAG programmer"; + type = "avrftdi_jtag"; + prog_modes = PM_JTAG; + connection_type = usb; + usbvid = 0x0403; + usbpid = 0x6010; + usbdev = "A"; +# JTAG-signals - lower ADBUS-Nibble (default) + tck = 0; # AD0 (TCK) + tdi = 1; # AD1 (TDI) + tdo = 2; # AD2 (TDO) + tms = 3; # AD3 (TMS) +; + #------------------------------------------------------------ # ft4232h #------------------------------------------------------------ @@ -630,8 +711,18 @@ programmer parent "ft2232h" # The FT4232H can be treated as FT2232H but with a different USB # device ID of 0x6011 -programmer parent "ft2232h" - id = "ft4232h", "4232h"; +programmer parent "ft2232h" # ft4232h + id = "ft4232h"; + desc = "FT4232H based generic programmer"; + usbpid = 0x6011; +; + +#------------------------------------------------------------ +# 4232h +#------------------------------------------------------------ + +programmer parent "2232h" # 4232h + id = "4232h"; desc = "FT4232H based generic programmer"; usbpid = 0x6011; ; @@ -640,9 +731,9 @@ programmer parent "ft2232h" # jtagkey #------------------------------------------------------------ -programmer +programmer # jtagkey id = "jtagkey"; - desc = "Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2"; + desc = "Amontec JTAGKey/JTAGKey-Tiny/JTAGKey2"; type = "avrftdi"; prog_modes = PM_TPI | PM_ISP; connection_type = usb; @@ -652,24 +743,25 @@ programmer usbdev = "A"; buff = ~4; # ISP-signals => 20 - Pin connector on JTAGKey +# The colours are on the 20 pin breakout cable from Amontec reset = 3; # TMS 7 violet sck = 0; # TCK 9 white sdo = 1; # TDI 5 green sdi = 2; # TDO 13 orange # VTG VREF 1 brown with red tip # GND GND 20 black -# The colors are on the 20 pin breakout cable from Amontec ; #------------------------------------------------------------ # ft232h #------------------------------------------------------------ -programmer +programmer # ft232h id = "ft232h"; desc = "FT232H based generic programmer"; type = "avrftdi"; prog_modes = PM_TPI | PM_ISP; + is_serialadapter = yes; connection_type = usb; usbvid = 0x0403; usbpid = 0x6014; @@ -681,6 +773,26 @@ programmer sdi = 2; # AD2 (TDO) ; +#------------------------------------------------------------ +# ft232h_jtag +#------------------------------------------------------------ + +programmer # ft232h_jtag + id = "ft232h_jtag"; + desc = "FT232H based generic JTAG programmer"; + type = "avrftdi_jtag"; + prog_modes = PM_JTAG; + connection_type = usb; + usbvid = 0x0403; + usbpid = 0x6014; + usbdev = "A"; +# JTAG-signals + tck = 0; # AD0 (TCK) + tdi = 1; # AD1 (TDI) + tdo = 2; # AD2 (TDO) + tms = 3; # AD3 (TMS) +; + #------------------------------------------------------------ # um232h #------------------------------------------------------------ @@ -693,9 +805,10 @@ programmer # Use the -b flag to set the SPI clock rate eg -b 3750000 is the fastest I could get # a 16MHz Atmega1280 to program reliably. The 232H is conveniently 5V tolerant. -programmer parent "ft232h" +programmer parent "ft232h" # um232h id = "um232h"; desc = "UM232H module from FTDI"; + is_serialadapter = no; ; #------------------------------------------------------------ @@ -710,7 +823,7 @@ programmer parent "ft232h" # Use the -b flag to set the SPI clock rate eg -b 3750000 is the fastest I could get # a 16MHz Atmega1280 to program reliably. The 232H is conveniently 5V tolerant. -programmer parent "ft232h" +programmer parent "um232h" # c232hm id = "c232hm"; desc = "C232HM cable from FTDI"; ; @@ -725,7 +838,7 @@ programmer parent "ft232h" # sources call it O-Link or just have a look at ebay ... It is basically the same # entry as jtagkey with different usb ids. See www.100ask.net -programmer parent "jtagkey" +programmer parent "jtagkey" # o-link id = "o-link"; desc = "O-Link, OpenJTAG ARM JTAG USB"; usbvid = 0x1457; @@ -740,7 +853,7 @@ programmer parent "jtagkey" # http://wiki.openmoko.org/wiki/Debug_Board_v3 -programmer +programmer # openmoko id = "openmoko"; desc = "Openmoko debug board (v3)"; type = "avrftdi"; @@ -761,7 +874,7 @@ programmer # Only Rev. A boards. # Schematic and user manual: http://www.cs.put.poznan.pl/wswitala/download/pdf/811EVBK.pdf -programmer +programmer # lm3s811 id = "lm3s811"; desc = "Luminary Micro LM3S811 Eval Board (Rev. A)"; type = "avrftdi"; @@ -785,22 +898,38 @@ programmer # tumpa #------------------------------------------------------------ -# submitted as bug #46020 +# First SPI connector +# User manual: https://www.tiaowiki.com/w/TIAO_USB_Multi_Protocol_Adapter_User%27s_Manual -programmer +programmer parent "2232h" # tumpa id = "tumpa"; desc = "TIAO USB Multi-Protocol Adapter"; - type = "avrftdi"; - prog_modes = PM_TPI | PM_ISP; - connection_type = usb; - usbvid = 0x0403; usbpid = 0x8a98; - usbdev = "A"; usbvendor = "TIAO"; - reset = 3; # TMS 7 - sck = 0; # TCK 9 - sdo = 1; # TDI 5 - sdi = 2; # TDO 13 +; + +#------------------------------------------------------------ +# tumpa-b +#------------------------------------------------------------ + +# Second SPI connector + +programmer parent "tumpa" # tumpa-b + id = "tumpa-b"; + usbdev = "B"; +; + +#------------------------------------------------------------ +# tumpa_jtag +#------------------------------------------------------------ + +programmer parent "ft2232h_jtag" # tumpa_jtag + id = "tumpa_jtag"; + desc = "TIAO USB Multi-Protocol Adapter in JTAG mode"; + usbpid = 0x8a98; + usbvendor = "TIAO"; + buff = ~11; + reset = 4; # RST AD4 (Pin 15) ; #------------------------------------------------------------ @@ -828,9 +957,9 @@ programmer # * For TPI connection use resistors: TDO --[470R]-- TPIDATA --[470R]-- TDI. # * Powering target from JTAG pin 19 allows KT-LINK current measurement. -programmer +programmer # ktlink id = "ktlink"; - desc = "KT-LINK FT2232H interface with IO switching and voltage buffers"; + desc = "KT-LINK FT2232H: IO switching, voltage buffers"; type = "avrftdi"; prog_modes = PM_TPI | PM_ISP; connection_type = usb; @@ -852,7 +981,7 @@ programmer # Digilent JTAG HS2 programmer. FT232H-based dongle with buffers. # https://digilent.com/reference/_media/reference/programmers/jtag-hs2/jtag-hs2_rm.pdf -programmer +programmer # digilent-hs2 id = "digilent-hs2"; desc = "Digilent JTAG HS2 (MPSSE)"; type = "avrftdi"; @@ -875,7 +1004,7 @@ programmer # FT2232H based JTAG programmer. Requires a buff pin to be set. # https://www.tincantools.com/flyswatter2 -programmer +programmer # flyswatter2 id = "flyswatter2"; desc = "TinCan Tools Flyswatter 2"; type = "avrftdi"; @@ -899,7 +1028,14 @@ programmer # serialupdi #------------------------------------------------------------ -programmer +# The SerialUPDI programmer implementation is based on the +# Microchip pymcuprog utility. In a nutshell, this programmer +# consists of simple USB->UART adapter, diode and couple of +# resistors. It uses serial connection to provide UPDI interface. +# See https://github.com/microchip-pic-avr-tools/pymcuprog +# for details. + +programmer # serialupdi id = "serialupdi"; desc = "SerialUPDI"; type = "serialupdi"; @@ -908,13 +1044,33 @@ programmer hvupdi_support = 1; ; +#------------------------------------------------------------ +# serprog +#------------------------------------------------------------ + +# The Serprog programmer implementation allows programming +# with programmers using the serprog protocol from flashrom. +# See https://flashrom.org/supported_hw/supported_prog/serprog/overview.html +# and https://flashrom.org/supported_hw/supported_prog/serprog/serprog-protocol.html +# for details. + +programmer # serprog + id = "serprog"; + desc = "Program via the Serprog protocol from Flashrom"; + type = "serprog"; + prog_modes = PM_ISP; + connection_type = serial; +; + #------------------------------------------------------------ # avrisp #------------------------------------------------------------ -programmer +# The original RS232 based Atmel AVR ISP programmer + +programmer # avrisp id = "avrisp"; - desc = "Atmel AVR ISP"; + desc = "Serial Atmel AVR ISP using STK500"; type = "stk500"; prog_modes = PM_ISP; connection_type = serial; @@ -924,9 +1080,9 @@ programmer # avrispv2 #------------------------------------------------------------ -programmer +programmer # avrispv2 id = "avrispv2"; - desc = "Atmel AVR ISP v2"; + desc = "Serial Atmel AVR ISP using STK500v2"; type = "stk500v2"; prog_modes = PM_TPI | PM_ISP; connection_type = serial; @@ -936,22 +1092,44 @@ programmer # avrispmkII #------------------------------------------------------------ -programmer +# Atmel AVR ISP mkII programmer. See +# https://www.microchip.com/en-us/development-tool/atavrisp2 +# for details. + +programmer # avrispmkII id = "avrispmkII", "avrisp2"; - desc = "Atmel AVR ISP mkII"; + desc = "USB Atmel AVR ISP mkII"; type = "stk500v2"; prog_modes = PM_TPI | PM_ISP | PM_PDI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; + usbpid = 0x2104; ; #------------------------------------------------------------ # buspirate #------------------------------------------------------------ -programmer +# Bus Pirate in AVR programming mode (hardware v3 and v4). +# See http://dangerousprototypes.com/docs/Bus_Pirate +# for details. +# +# PIN ISP +# > 1 GND +# 2 (3.3V) +# 3 (5.0V) +# 4 +# 5 +# 6 (XTAL1) +# 7 SCK +# 8 SDO +# 9 RST +# 10 SDI + +programmer # buspirate id = "buspirate"; - desc = "The Bus Pirate"; + desc = "The Bus Pirate in AVR programming mode"; type = "buspirate"; prog_modes = PM_ISP; connection_type = serial; @@ -961,9 +1139,11 @@ programmer # buspirate_bb #------------------------------------------------------------ -programmer +# Bus pirate in bit banging mode (hardware v3 and v4). + +programmer # buspirate_bb id = "buspirate_bb"; - desc = "The Bus Pirate (bitbang interface, supports TPI)"; + desc = "The Bus Pirate in bitbang mode"; type = "buspirate_bb"; prog_modes = PM_TPI | PM_ISP; connection_type = serial; @@ -985,9 +1165,9 @@ programmer # by probing for it. Better use one of the entries # below instead. -programmer +programmer # stk500 id = "stk500"; - desc = "Atmel STK500"; + desc = "Atmel STK500 (probes v2 first then v1)"; type = "stk500generic"; prog_modes = PM_ISP; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ | HAS_FOSC_ADJ | HAS_VAREF_ADJ; @@ -998,9 +1178,13 @@ programmer # stk500v1 #------------------------------------------------------------ -programmer +# The original STK500 protocol. Used by the Arduino as ISP +# programmer and various bootloaders. +# See AVR061 for details. + +programmer # stk500v1 id = "stk500v1"; - desc = "Atmel STK500 version 1.x firmware"; + desc = "Atmel STK500 v1"; type = "stk500"; prog_modes = PM_ISP; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ | HAS_FOSC_ADJ | HAS_VAREF_ADJ; @@ -1013,20 +1197,28 @@ programmer # Not to be confused with arduinoISP, this is the same as `-c stk500v1` # but treats EEPROM r/w correctly for arduino_as_isp programmers +# See https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP/ +# for details. -programmer +programmer # arduino_as_isp id = "arduino_as_isp"; - desc = "Arduino board as programmer using arduino as ISP firmware"; + desc = "AVR as programmer with Arduino-as-ISP FW"; type = "stk500"; prog_modes = PM_ISP; connection_type = serial; + baudrate = 19200; ; #------------------------------------------------------------ # mib510 #------------------------------------------------------------ -programmer +# The MIB510 is a serial gateway that can program AVRs over +# ISP or TPI using the stk500v1 protocol. See +# http://www.cmt-gmbh.de/Produkte/WirelessSensorNetworks/MIB510.html +# for details. + +programmer # mib510 id = "mib510"; desc = "Crossbow MIB510 programming board"; type = "stk500"; @@ -1038,9 +1230,11 @@ programmer # stk500v2 #------------------------------------------------------------ -programmer +# Version 2 of the STK500 protocol. See AVR068 for details. + +programmer # stk500v2 id = "stk500v2", "scratchmonkey"; - desc = "Atmel STK500 version 2.x firmware"; + desc = "Atmel STK500 v2"; type = "stk500v2"; prog_modes = PM_TPI | PM_ISP; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ | HAS_FOSC_ADJ | HAS_VAREF_ADJ; @@ -1051,7 +1245,7 @@ programmer # stk500pp #------------------------------------------------------------ -programmer +programmer # stk500pp id = "stk500pp", "scratchmonkey_pp"; desc = "Atmel STK500 v2 in parallel programming mode"; type = "stk500pp"; @@ -1064,9 +1258,9 @@ programmer # stk500hvsp #------------------------------------------------------------ -programmer +programmer # stk500hvsp id = "stk500hvsp", "scratchmonkey_hvsp"; - desc = "Atmel STK500 v2 in high-voltage serial programming mode"; + desc = "Atmel STK500 v2 in HV serial programming mode"; type = "stk500hvsp"; prog_modes = PM_HVSP; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ | HAS_FOSC_ADJ | HAS_VAREF_ADJ; @@ -1077,46 +1271,59 @@ programmer # stk600 #------------------------------------------------------------ -programmer +# STK600 development board. See +# https://www.microchip.com/en-us/development-tool/atstk600 +# and AVR079 for details. + +programmer # stk600 id = "stk600"; desc = "Atmel STK600"; type = "stk600"; prog_modes = PM_TPI | PM_ISP | PM_PDI; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ | HAS_FOSC_ADJ | HAS_VAREF_ADJ; connection_type = usb; + usbvid = 0x03eb; + usbpid = 0x2106; ; #------------------------------------------------------------ # stk600pp #------------------------------------------------------------ -programmer +programmer # stk600pp id = "stk600pp"; desc = "Atmel STK600 in parallel programming mode"; type = "stk600pp"; prog_modes = PM_HVPP; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ | HAS_FOSC_ADJ | HAS_VAREF_ADJ; connection_type = usb; + usbvid = 0x03eb; + usbpid = 0x2106; ; #------------------------------------------------------------ # stk600hvsp #------------------------------------------------------------ -programmer +programmer # stk600hvsp id = "stk600hvsp"; - desc = "Atmel STK600 in high-voltage serial programming mode"; + desc = "Atmel STK600 in HV serial programming mode"; type = "stk600hvsp"; prog_modes = PM_HVSP; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ | HAS_FOSC_ADJ | HAS_VAREF_ADJ; connection_type = usb; + usbvid = 0x03eb; + usbpid = 0x2106; ; #------------------------------------------------------------ # avr910 #------------------------------------------------------------ -programmer +# The AVR910 is a programmer implementation based on the +# AVR910 application note. + +programmer # avr910 id = "avr910"; desc = "Atmel Low Cost Serial Programmer"; type = "avr910"; @@ -1128,12 +1335,20 @@ programmer # ft245r #------------------------------------------------------------ -programmer +# Ftdi_syncbb-type programmers utilise FTDI chips for programming +# in a bit-banging mode. In contrast to avrftdi-type programmers, +# the pin mapping to the main ISP signals (reset, sck, sdo, sdi) is +# somewhat arbitrary and will be determined by the actual routing +# of the FTDI IC pins to the ISP header of the physical programmer. + +programmer # ft245r id = "ft245r"; desc = "FT245R based generic programmer"; type = "ftdi_syncbb"; prog_modes = PM_TPI | PM_ISP; connection_type = usb; + usbvid = 0x0403; + usbpid = 0x6001; reset = 4; # D4 sck = 0; # D0 sdo = 2; # D2 @@ -1144,12 +1359,15 @@ programmer # ft232r #------------------------------------------------------------ -programmer +programmer # ft232r id = "ft232r"; desc = "FT232R based generic programmer"; type = "ftdi_syncbb"; prog_modes = PM_TPI | PM_ISP; + is_serialadapter = yes; connection_type = usb; + usbvid = 0x0403; # For use as serial adapter + usbpid = 0x6001; # " reset = 4; # DTR sck = 0; # TxD sdo = 2; # RTS @@ -1162,12 +1380,14 @@ programmer # see http://www.bitwizard.nl/wiki/index.php/FTDI_ATmega -programmer +programmer # bwmega id = "bwmega"; desc = "BitWizard ftdi_atmega builtin programmer"; type = "ftdi_syncbb"; prog_modes = PM_TPI | PM_ISP; connection_type = usb; + usbvid = 0x0403; + usbpid = 0x6001; reset = 7; # RI sck = 6; # DCD sdo = 3; # CTS @@ -1185,12 +1405,14 @@ programmer # Note that the -c diecimila avrdude.conf entry mentioned in above post # is the same as the -c arduino-ft232r entry here. -programmer +programmer # arduino-ft232r id = "arduino-ft232r", "diecimila"; desc = "Arduino: FT232R connected to ISP"; type = "ftdi_syncbb"; prog_modes = PM_TPI | PM_ISP; connection_type = usb; + usbvid = 0x0403; + usbpid = 0x6001; reset = 7; # RI X3(4) sck = 5; # DSR X3(2) sdo = 6; # DCD X3(3) @@ -1201,12 +1423,17 @@ programmer # tc2030 #------------------------------------------------------------ -programmer +# See https://www.tag-connect.com/product-category/products/cables/ftdi +# for details. + +programmer # tc2030 id = "tc2030"; desc = "Tag-Connect TC2030"; type = "ftdi_syncbb"; prog_modes = PM_TPI | PM_ISP; connection_type = usb; + usbvid = 0x0403; + usbpid = 0x6001; # FOR TPI devices: reset = 3; # CTS = D3 (wire to ~RESET) sck = 2; # RTS = D2 (wire to SCK) @@ -1225,12 +1452,14 @@ programmer # http://akizukidenshi.com/catalog/g/gP-07487/ # http://akizukidenshi.com/download/ds/akizuki/k6096_manual_20130816.pdf -programmer +programmer # uncompatino id = "uncompatino"; desc = "uncompatino with all pairs of pins shorted"; type = "ftdi_syncbb"; prog_modes = PM_TPI | PM_ISP; connection_type = usb; + usbvid = 0x0403; + usbpid = 0x6001; reset = 7; # ri sck = 5; # dsr sdo = 6; # dcd @@ -1257,12 +1486,14 @@ programmer # Except for VCC and GND, you can connect arbitrary pairs as long as the # following table is adjusted. -programmer +programmer # ttl232r id = "ttl232r"; desc = "FTDI TTL232R-5V with ICSP adapter"; type = "ftdi_syncbb"; prog_modes = PM_TPI | PM_ISP; connection_type = usb; + usbvid = 0x0403; + usbpid = 0x6001; reset = 0; # txd sck = 1; # rxd sdo = 3; # cts @@ -1297,7 +1528,7 @@ programmer # As above plus HID UART support, setting unique serial number and # AT89S51/AT89S52 support -programmer +programmer # usbasp id = "usbasp"; desc = "USBasp ISP and TPI programmer"; type = "usbasp"; @@ -1307,7 +1538,6 @@ programmer usbpid = 0x05dc; # Obdev's free shared PID usbvendor = "www.fischl.de"; usbproduct = "USBasp"; - # Old usbasp from fischl.de: # usbvid = 0x03EB; # ATMEL # usbpid = 0xC7B4; # (unoffical) USBasp @@ -1321,7 +1551,7 @@ programmer # http://www.nicai-systems.com/en/nibobee -programmer +programmer # nibobee id = "nibobee"; desc = "NIBObee"; type = "usbasp"; @@ -1337,7 +1567,7 @@ programmer # usbasp-clone #------------------------------------------------------------ -programmer +programmer # usbasp-clone id = "usbasp-clone"; desc = "Any usbasp clone with correct VID/PID"; type = "usbasp"; @@ -1358,7 +1588,7 @@ programmer # pins of the connector, and SDI (pin 1 of the 6-pin connector) # connects to TPIDATA. -programmer +programmer # usbtiny id = "usbtiny"; desc = "USBtiny simple USB programmer"; type = "usbtiny"; @@ -1374,7 +1604,7 @@ programmer # https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/gemma -programmer +programmer # arduino_gemma id = "arduino_gemma"; desc = "Arduino Gemma bootloader disguised as USBtiny"; type = "usbtiny"; @@ -1390,9 +1620,9 @@ programmer # https://github.com/adafruit/Adafruit-Trinket-Gemma-Bootloader -programmer +programmer # adafruit_gemma id = "adafruit_gemma"; - desc = "Adafruit Trinket Gemma bootloader disguised as USBtiny"; + desc = "Trinket Gemma bootloader disguised as USBtiny"; type = "usbtiny"; prog_modes = PM_SPM; connection_type = usb; @@ -1404,9 +1634,12 @@ programmer # arduinoisp #------------------------------------------------------------ -programmer +# Arduino LLC branded USBtiny programmer +# https://docs.arduino.cc/retired/boards/arduino-isp/ + +programmer # arduinoisp id = "arduinoisp"; - desc = "Arduino ISP Programmer"; + desc = "Arduino-branded USBtiny ISP Programmer"; type = "usbtiny"; prog_modes = PM_TPI | PM_ISP; connection_type = usb; @@ -1418,9 +1651,12 @@ programmer # arduinoisporg #------------------------------------------------------------ -programmer +# Identical to the Arduino LLC branded USBtiny programmer, +# but with a different USB VID. + +programmer # arduinoisporg id = "arduinoisporg"; - desc = "Arduino ISP Programmer"; + desc = "Arduino-branded USBtiny ISP Programmer"; type = "usbtiny"; prog_modes = PM_TPI | PM_ISP; connection_type = usb; @@ -1435,7 +1671,7 @@ programmer # Commercial version of USBtiny using a separate VID/PID from # http://www.eHaJo.de (closed from end of 2023) -programmer +programmer # ehajo-isp id = "ehajo-isp"; desc = "AVR ISP programmer from eHaJo.de"; type = "usbtiny"; @@ -1454,7 +1690,7 @@ programmer # # https://github.com/IowaScaledEngineering/ckt-avrprogrammer -programmer +programmer # iseavrprog id = "iseavrprog"; desc = "AVR ISP programmer from iascaled.com"; type = "usbtiny"; @@ -1468,9 +1704,15 @@ programmer # micronucleus #------------------------------------------------------------ -programmer +# Micronucleus is a bootloader designed for AVR ATtiny +# microcontrollers with a minimal usb interface and a +# strong emphasis on bootloader compactness. See +# https://github.com/micronucleus/micronucleus +# for details. + +programmer # micronucleus id = "micronucleus"; - desc = "Micronucleus for bootloader"; + desc = "Micronucleus bootloader"; type = "micronucleus"; prog_modes = PM_SPM; connection_type = usb; @@ -1482,9 +1724,13 @@ programmer # teensy #------------------------------------------------------------ -programmer +# Proprietary bootloader used on the AVR based PJRC Teensy boards. +# Can only write to memory, not read/verify. +# See https://www.pjrc.com/teensy/ for details. + +programmer # teensy id = "teensy"; - desc = "Teensy for bootloader"; + desc = "Teensy bootloader"; type = "teensy"; prog_modes = PM_SPM; connection_type = usb; @@ -1511,11 +1757,12 @@ programmer # GND -- GND # 5V -- Vcc/Vin (or disconnect if separately powered) -programmer +programmer # ch341a id = "ch341a"; - desc = "ch341a programmer (AVR must have minimum F_CPU of 6.8 MHz)"; + desc = "CH341A programmer: note AVR F_CPU > 6.8 MHz"; type = "ch341a"; prog_modes = PM_ISP; + is_serialadapter = yes; connection_type = usb; usbvid = 0x1a86; usbpid = 0x5512; @@ -1528,9 +1775,14 @@ programmer # butterfly #------------------------------------------------------------ -programmer +# Bootloader origininally designed around the AVR Butterfly +# development board. See +# https://www.microchip.com/en-us/development-tool/atavrbfly +# for details. + +programmer # butterfly id = "butterfly"; - desc = "Atmel for bootloader (Butterfly Development Board)"; + desc = "Atmel bootloader (Butterfly Development Board)"; type = "butterfly"; prog_modes = PM_SPM; connection_type = serial; @@ -1540,21 +1792,12 @@ programmer # avr109 #------------------------------------------------------------ -programmer - id = "avr109"; - desc = "Atmel for bootloader using AppNote AVR109"; - type = "butterfly"; - prog_modes = PM_SPM; - connection_type = serial; -; +# AVR109 "Butterfly" bootloader. +# See the AVR109 and AVR911 application notes for details. -#------------------------------------------------------------ -# avr911 -#------------------------------------------------------------ - -programmer - id = "avr911"; - desc = "Atmel for bootloader using AppNote AVR911 AVROSP"; +programmer # avr109 + id = "avr109", "avr911"; + desc = "Atmel bootloader (AVR109, AVR911)"; type = "butterfly"; prog_modes = PM_SPM; connection_type = serial; @@ -1566,9 +1809,9 @@ programmer # http://forum.mikrokopter.de -programmer +programmer # butterfly_mk id = "butterfly_mk", "mkbutterfly"; - desc = "Mikrokopter.de Butterfly for bootloader"; + desc = "Mikrokopter.de Butterfly bootloader"; type = "butterfly_mk"; prog_modes = PM_SPM; connection_type = serial; @@ -1578,9 +1821,16 @@ programmer # jtagmkI #------------------------------------------------------------ -programmer +# The original AVR JTAG ICE. It only supports a handful of +# chips (search for PM_JTAGmkI in this file), but can easily be +# DIY'ed. See doc2475, AVR060, and the following URLs for details: +# https://scienceprog.com/build-your-own-avr-jtagice-clone/ +# https://www.olimex.com/Products/AVR/Programmers/AVR-JTAG-USB-A/ +# https://www.electrodragon.com/product/avr-usb-jtag-ice-programmer/ + +programmer # jtagmkI id = "jtagmkI", "jtag1"; - desc = "Atmel JTAG ICE (mkI)"; + desc = "Atmel JTAG ICE mkI"; type = "jtagmki"; prog_modes = PM_JTAGmkI; extra_features = HAS_VTARG_READ; @@ -1592,7 +1842,7 @@ programmer # jtag1slow #------------------------------------------------------------ -programmer parent "jtag1" +programmer parent "jtag1" # jtag1slow id = "jtag1slow"; baudrate = 19200; ; @@ -1604,9 +1854,11 @@ programmer parent "jtag1" # The JTAG ICE mkII has both, serial and USB connectivity. As it is # mostly used through USB these days (AVR Studio 5 only supporting it # that way), we make connection_type = usb the default. Users are -# still free to use a serial port with the -P option. +# still free to use a serial port with the -P option. See AVR067 or +# https://www.microchip.com/en-us/development-tool/atjtagice2 +# for details. -programmer +programmer # jtagmkII id = "jtagmkII"; desc = "Atmel JTAG ICE mkII"; type = "jtagmkii"; @@ -1614,13 +1866,15 @@ programmer extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 19200; # default is 19200 + usbvid = 0x03eb; + usbpid = 0x2103; ; #------------------------------------------------------------ # jtag2slow #------------------------------------------------------------ -programmer parent "jtagmkII" +programmer parent "jtagmkII" # jtag2slow id = "jtag2slow"; ; @@ -1630,7 +1884,7 @@ programmer parent "jtagmkII" # JTAG ICE mkII @ 115200 Bd (and alias jtag2 the fast version) -programmer parent "jtag2slow" +programmer parent "jtag2slow" # jtag2fast id = "jtag2fast", "jtag2"; baudrate = 115200; ; @@ -1641,7 +1895,7 @@ programmer parent "jtag2slow" # JTAG ICE mkII in ISP mode -programmer +programmer # jtag2isp id = "jtag2isp"; desc = "Atmel JTAG ICE mkII in ISP mode"; type = "jtagmkii_isp"; @@ -1649,22 +1903,26 @@ programmer extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 115200; + usbvid = 0x03eb; + usbpid = 0x2103; ; #------------------------------------------------------------ # jtag2dw #------------------------------------------------------------ -# JTAG ICE mkII in debugWire mode +# JTAG ICE mkII in debugWIRE mode -programmer +programmer # jtag2dw id = "jtag2dw"; - desc = "Atmel JTAG ICE mkII in debugWire mode"; + desc = "Atmel JTAG ICE mkII in debugWIRE mode"; type = "jtagmkii_dw"; prog_modes = PM_debugWIRE; extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 115200; + usbvid = 0x03eb; + usbpid = 0x2103; ; #------------------------------------------------------------ @@ -1673,7 +1931,7 @@ programmer # JTAG ICE mkII in AVR32 mode -programmer +programmer # jtagmkII_avr32 id = "jtagmkII_avr32", "jtag2avr32"; desc = "Atmel JTAG ICE mkII in AVR32 mode"; type = "jtagmkii_avr32"; @@ -1681,6 +1939,8 @@ programmer extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 115200; + usbvid = 0x03eb; + usbpid = 0x2103; ; #------------------------------------------------------------ @@ -1689,7 +1949,7 @@ programmer # JTAG ICE mkII in PDI mode -programmer +programmer # jtag2pdi id = "jtag2pdi"; desc = "Atmel JTAG ICE mkII in PDI mode"; type = "jtagmkii_pdi"; @@ -1697,15 +1957,19 @@ programmer extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 115200; + usbvid = 0x03eb; + usbpid = 0x2103; ; #------------------------------------------------------------ # dragon_jtag #------------------------------------------------------------ -# AVR Dragon in JTAG mode +# AVR Dragon in JTAG mode. See +# https://www.microchip.com/en-us/development-tool/atavrdragon +# for details. -programmer +programmer # dragon_jtag id = "dragon_jtag"; desc = "Atmel AVR Dragon in JTAG mode"; type = "dragon_jtag"; @@ -1713,6 +1977,8 @@ programmer extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 115200; + usbvid = 0x03eb; + usbpid = 0x2107; ; #------------------------------------------------------------ @@ -1721,7 +1987,7 @@ programmer # AVR Dragon in ISP mode -programmer +programmer # dragon_isp id = "dragon_isp"; desc = "Atmel AVR Dragon in ISP mode"; type = "dragon_isp"; @@ -1729,6 +1995,8 @@ programmer extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 115200; + usbvid = 0x03eb; + usbpid = 0x2107; ; #------------------------------------------------------------ @@ -1737,7 +2005,7 @@ programmer # AVR Dragon in PP mode -programmer +programmer # dragon_pp id = "dragon_pp"; desc = "Atmel AVR Dragon in PP mode"; type = "dragon_pp"; @@ -1745,6 +2013,8 @@ programmer extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 115200; + usbvid = 0x03eb; + usbpid = 0x2107; ; #------------------------------------------------------------ @@ -1753,7 +2023,7 @@ programmer # AVR Dragon in HVSP mode -programmer +programmer # dragon_hvsp id = "dragon_hvsp"; desc = "Atmel AVR Dragon in HVSP mode"; type = "dragon_hvsp"; @@ -1761,22 +2031,26 @@ programmer extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 115200; + usbvid = 0x03eb; + usbpid = 0x2107; ; #------------------------------------------------------------ # dragon_dw #------------------------------------------------------------ -# AVR Dragon in debugWire mode +# AVR Dragon in debugWIRE mode -programmer +programmer # dragon_dw id = "dragon_dw"; - desc = "Atmel AVR Dragon in debugWire mode"; + desc = "Atmel AVR Dragon in debugWIRE mode"; type = "dragon_dw"; prog_modes = PM_debugWIRE; extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 115200; + usbvid = 0x03eb; + usbpid = 0x2107; ; #------------------------------------------------------------ @@ -1785,7 +2059,7 @@ programmer # AVR Dragon in PDI mode -programmer +programmer # dragon_pdi id = "dragon_pdi"; desc = "Atmel AVR Dragon in PDI mode"; type = "dragon_pdi"; @@ -1793,19 +2067,36 @@ programmer extra_features = HAS_VTARG_READ; connection_type = usb; baudrate = 115200; + usbvid = 0x03eb; + usbpid = 0x2107; ; #------------------------------------------------------------ # jtag3 #------------------------------------------------------------ -programmer +# Atmel JTAGICE3 programmer. See +# https://www.microchip.com/en-us/development-tool/atjtagice3 +# for details. +# +# The JTAGICE3 supports the following programming modes +# using different programmer names: +# +# Interface: Programmer name: +# JTAG jtag3 +# PDI jtag3pdi +# UPDI jtag3updi +# debugWIRE jtag3dw +# ISP jtag3isp + +programmer # jtag3 id = "jtag3"; desc = "Atmel AVR JTAGICE3 in JTAG mode"; type = "jtagice3"; prog_modes = PM_JTAG | PM_XMEGAJTAG | PM_AVR32JTAG; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2110, 0x2140; ; @@ -1813,13 +2104,14 @@ programmer # jtag3pdi #------------------------------------------------------------ -programmer +programmer # jtag3pdi id = "jtag3pdi"; desc = "Atmel AVR JTAGICE3 in PDI mode"; type = "jtagice3_pdi"; prog_modes = PM_PDI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2110, 0x2140; ; @@ -1827,13 +2119,14 @@ programmer # jtag3updi #------------------------------------------------------------ -programmer +programmer # jtag3updi id = "jtag3updi"; desc = "Atmel AVR JTAGICE3 in UPDI mode"; type = "jtagice3_updi"; prog_modes = PM_UPDI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2110, 0x2140; hvupdi_support = 1; ; @@ -1842,13 +2135,14 @@ programmer # jtag3dw #------------------------------------------------------------ -programmer +programmer # jtag3dw id = "jtag3dw"; desc = "Atmel AVR JTAGICE3 in debugWIRE mode"; type = "jtagice3_dw"; prog_modes = PM_debugWIRE; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2110, 0x2140; ; @@ -1856,26 +2150,40 @@ programmer # jtag3isp #------------------------------------------------------------ -programmer +programmer # jtag3isp id = "jtag3isp"; desc = "Atmel AVR JTAGICE3 in ISP mode"; type = "jtagice3_isp"; prog_modes = PM_ISP; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2110, 0x2140; ; #------------------------------------------------------------ -# xplainedpro +# xplainedpro / xplainedpro_jtag #------------------------------------------------------------ -programmer - id = "xplainedpro"; - desc = "Atmel AVR XplainedPro in JTAG mode"; +# On-board EDBG based programmer found on various AVR based +# Microchip Xplained Pro boards + +# Different Xplained Pro boards uses different programming +# interfaces. These are the ones available: +# +# Interface: Programmer name: +# JTAG xplainedpro, xplainedpro_jtag +# PDI xplainedpro_pdi +# UPDI xplainedpro_updi + +programmer # xplainedpro + id = "xplainedpro", "xplainedpro_jtag"; + desc = "Atmel XplainedPro in JTAG mode"; type = "jtagice3"; prog_modes = PM_JTAG | PM_XMEGAJTAG | PM_AVR32JTAG; + extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2111; ; @@ -1883,12 +2191,14 @@ programmer # xplainedpro_pdi #------------------------------------------------------------ -programmer +programmer # xplainedpro_pdi id = "xplainedpro_pdi"; - desc = "Atmel AVR XplainedPro in PDI mode"; + desc = "Atmel XplainedPro in PDI mode"; type = "jtagice3_pdi"; prog_modes = PM_PDI; + extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2111; hvupdi_support = 1; ; @@ -1897,12 +2207,14 @@ programmer # xplainedpro_updi #------------------------------------------------------------ -programmer +programmer # xplainedpro_updi id = "xplainedpro_updi"; - desc = "Atmel AVR XplainedPro in UPDI mode"; + desc = "Atmel XplainedPro in UPDI mode"; type = "jtagice3_updi"; prog_modes = PM_UPDI; + extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2111; hvupdi_support = 1; ; @@ -1911,13 +2223,31 @@ programmer # xplainedmini / xplainedmini_isp #------------------------------------------------------------ -programmer +# On-board mEDBG based programmer found on AVR based +# Microchip Xplained Mini/Nano boards +# +# Different Xplained Mini/Nano boards uses different +# programming interfaces. These are the ones available: +# +# Interface: Programmer name: +# ISP xplainedmini, xplainedmini_isp +# debugWIRE xplainedmini_dw +# UPDI xplainedmini_updi +# TPI xplainedmini_tpi +# +# Some Xplained Mini boards has a programmable target voltage +# switch that can be controlled using the -xvtarg_switch flag. +# By modifying the SUFFER register using the -xsuffer flag, +# certain programmer safety features can be enabled or disabled. + +programmer # xplainedmini id = "xplainedmini", "xplainedmini_isp"; - desc = "Atmel AVR XplainedMini in ISP mode"; + desc = "Atmel XplainedMini in ISP mode"; type = "jtagice3_isp"; prog_modes = PM_ISP; extra_features = HAS_SUFFER | HAS_VTARG_SWITCH; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2145; ; @@ -1925,13 +2255,19 @@ programmer # xplainedmini_dw #------------------------------------------------------------ -programmer +# The Xplained Mini debugWIRE interface may be finicky, +# and usually require the mEDBG chip to drive the XTAL1 +# pin on the target to keep the debugWIRE interface +# in sync + +programmer # xplainedmini_dw id = "xplainedmini_dw"; - desc = "Atmel AVR XplainedMini in debugWIRE mode"; + desc = "Atmel XplainedMini in debugWIRE mode"; type = "jtagice3_dw"; prog_modes = PM_debugWIRE; extra_features = HAS_SUFFER | HAS_VTARG_SWITCH; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2145; ; @@ -1939,13 +2275,17 @@ programmer # xplainedmini_updi #------------------------------------------------------------ -programmer +# Note that the on-board programmer only support the +# megaAVR-0 and tinyAVR-0/1/2 chip families. + +programmer # xplainedmini_updi id = "xplainedmini_updi"; - desc = "Atmel AVR XplainedMini in UPDI mode"; + desc = "Atmel XplainedMini in UPDI mode"; type = "jtagice3_updi"; prog_modes = PM_UPDI; extra_features = HAS_SUFFER | HAS_VTARG_SWITCH; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2145; hvupdi_support = 1; ; @@ -1954,12 +2294,13 @@ programmer # xplainedmini_tpi #------------------------------------------------------------ -programmer +programmer # xplainedmini_tpi id = "xplainedmini_tpi"; - desc = "Atmel AVR XplainedMini in TPI mode"; + desc = "Atmel XplainedMini in TPI mode"; type = "jtagice3_tpi"; prog_modes = PM_TPI; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2145; ; @@ -1967,13 +2308,28 @@ programmer # atmelice / atmelice_jtag #------------------------------------------------------------ -programmer +# Atmel-ICE programmer. See +# https://www.microchip.com/en-us/development-tool/atatmel-ice +# for details. +# +# The Atmel-ICE supports the following programming modes +# using different programmer names: +# +# Interface: Programmer name: +# JTAG atmelice, atmelice_jtag +# PDI atmelice_pdi +# UPDI atmelice_updi +# debugWIRE atmelice_dw +# ISP atmelice_isp + +programmer # atmelice id = "atmelice", "atmelice_jtag"; - desc = "Atmel-ICE (ARM/AVR) in JTAG mode"; + desc = "Atmel-ICE in JTAG mode"; type = "jtagice3"; prog_modes = PM_JTAG | PM_XMEGAJTAG | PM_AVR32JTAG; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2141; ; @@ -1981,13 +2337,14 @@ programmer # atmelice_pdi #------------------------------------------------------------ -programmer +programmer # atmelice_pdi id = "atmelice_pdi"; - desc = "Atmel-ICE (ARM/AVR) in PDI mode"; + desc = "Atmel-ICE in PDI mode"; type = "jtagice3_pdi"; prog_modes = PM_PDI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2141; ; @@ -1995,13 +2352,14 @@ programmer # atmelice_updi #------------------------------------------------------------ -programmer +programmer # atmelice_updi id = "atmelice_updi"; - desc = "Atmel-ICE (ARM/AVR) in UPDI mode"; + desc = "Atmel-ICE in UPDI mode"; type = "jtagice3_updi"; prog_modes = PM_UPDI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2141; hvupdi_support = 1; ; @@ -2010,13 +2368,14 @@ programmer # atmelice_dw #------------------------------------------------------------ -programmer +programmer # atmelice_dw id = "atmelice_dw"; - desc = "Atmel-ICE (ARM/AVR) in debugWIRE mode"; + desc = "Atmel-ICE in debugWIRE mode"; type = "jtagice3_dw"; prog_modes = PM_debugWIRE; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2141; ; @@ -2024,13 +2383,14 @@ programmer # atmelice_isp #------------------------------------------------------------ -programmer +programmer # atmelice_isp id = "atmelice_isp"; - desc = "Atmel-ICE (ARM/AVR) in ISP mode"; + desc = "Atmel-ICE in ISP mode"; type = "jtagice3_isp"; prog_modes = PM_ISP; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2141; ; @@ -2038,13 +2398,14 @@ programmer # atmelice_tpi #------------------------------------------------------------ -programmer +programmer # atmelice_tpi id = "atmelice_tpi"; - desc = "Atmel-ICE (ARM/AVR) in TPI mode"; + desc = "Atmel-ICE in TPI mode"; type = "jtagice3_tpi"; prog_modes = PM_TPI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2141; ; @@ -2052,13 +2413,33 @@ programmer # powerdebugger / powerdebugger_jtag #------------------------------------------------------------ -programmer +# Microchip Power Debugger. See +# https://www.microchip.com/en-us/development-tool/atpowerdebugger +# for details. +# +# The Power Debugger supports the following programming modes +# using different programmer names: +# +# Interface: Programmer name: +# JTAG powerdebugger, powerdebugger_jtag +# PDI powerdebugger_pdi +# UPDI powerdebugger_updi +# debugWIRE powerdebugger_dw +# ISP powerdebugger_isp +# +# The Power Debugger has a programmable voltage source and +# can read the target voltage of the connected device. +# It also has two independent current measurement channels. +# All this can be utilized using the Avrdude terminal mode. + +programmer # powerdebugger id = "powerdebugger", "powerdebugger_jtag"; - desc = "Atmel PowerDebugger (ARM/AVR) in JTAG mode"; + desc = "Atmel PowerDebugger in JTAG mode"; type = "jtagice3"; prog_modes = PM_JTAG | PM_XMEGAJTAG | PM_AVR32JTAG; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2144; ; @@ -2066,13 +2447,14 @@ programmer # powerdebugger_pdi #------------------------------------------------------------ -programmer +programmer # powerdebugger_pdi id = "powerdebugger_pdi"; - desc = "Atmel PowerDebugger (ARM/AVR) in PDI mode"; + desc = "Atmel PowerDebugger in PDI mode"; type = "jtagice3_pdi"; prog_modes = PM_PDI; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2144; ; @@ -2080,13 +2462,14 @@ programmer # powerdebugger_updi #------------------------------------------------------------ -programmer +programmer # powerdebugger_updi id = "powerdebugger_updi"; - desc = "Atmel PowerDebugger (ARM/AVR) in UPDI mode"; + desc = "Atmel PowerDebugger in UPDI mode"; type = "jtagice3_updi"; prog_modes = PM_UPDI; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2144; hvupdi_support = 0, 1; ; @@ -2095,13 +2478,14 @@ programmer # powerdebugger_dw #------------------------------------------------------------ -programmer +programmer # powerdebugger_dw id = "powerdebugger_dw"; - desc = "Atmel PowerDebugger (ARM/AVR) in debugWire mode"; + desc = "Atmel PowerDebugger in debugWire mode"; type = "jtagice3_dw"; prog_modes = PM_debugWIRE; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2144; ; @@ -2109,13 +2493,14 @@ programmer # powerdebugger_isp #------------------------------------------------------------ -programmer +programmer # powerdebugger_isp id = "powerdebugger_isp"; - desc = "Atmel PowerDebugger (ARM/AVR) in ISP mode"; + desc = "Atmel PowerDebugger in ISP mode"; type = "jtagice3_isp"; prog_modes = PM_ISP; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2144; ; @@ -2123,13 +2508,14 @@ programmer # powerdebugger_tpi #------------------------------------------------------------ -programmer +programmer # powerdebugger_tpi id = "powerdebugger_tpi"; - desc = "Atmel PowerDebugger (ARM/AVR) in TPI mode"; + desc = "Atmel PowerDebugger in TPI mode"; type = "jtagice3_tpi"; prog_modes = PM_TPI; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2144; ; @@ -2137,13 +2523,45 @@ programmer # pickit4 / pickit4_jtag #------------------------------------------------------------ -programmer +# Microchip PICkit 4. For details see +# https://www.microchip.com/en-us/development-tool/pg164140 +# +# The PICkit 4 supports the following programming modes +# using different programmer names: +# +# Interface: Programmer name: +# JTAG pickit4, pickit4_jtag +# PDI pickit4_pdi +# UPDI pickit4_updi +# debugWIRE pickit4_dw +# ISP pickit4_isp +# +# The pinout is identical to the MPLAB SNAP, but different +# from other Microchip branded AVR programmers, and would +# usually require an adapter or custom wiring if your target +# board has a standard 6 or 10-pin programming connector. +# +# PIN JTAG PDI UPDI DW ISP UART* +# > 1 +# 2 VCC VCC VCC VCC VCC VCC +# 3 GND GND GND GND GND GND +# 4 TDO DATA UPDI SDI +# 5 TCK SCK +# 6 RST SCK dW RST +# 7 TDI SDO TX (target) +# 8 TMS RX (target) +# +# * The PICkit4 can also be used as a USB to UART +# interface for simple serial debugging. + +programmer # pickit4 id = "pickit4", "pickit4_jtag"; desc = "MPLAB(R) PICkit 4 in JTAG mode"; type = "jtagice3"; prog_modes = PM_JTAG | PM_XMEGAJTAG; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2177, 0x2178, 0x2179; ; @@ -2151,13 +2569,14 @@ programmer # pickit4_updi #------------------------------------------------------------ -programmer +programmer # pickit4_updi id = "pickit4_updi"; desc = "MPLAB(R) PICkit 4 in UPDI mode"; type = "jtagice3_updi"; prog_modes = PM_UPDI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2177, 0x2178, 0x2179; hvupdi_support = 0, 1, 2; ; @@ -2166,13 +2585,14 @@ programmer # pickit4_pdi #------------------------------------------------------------ -programmer +programmer # pickit4_pdi id = "pickit4_pdi"; desc = "MPLAB(R) PICkit 4 in PDI mode"; type = "jtagice3_pdi"; prog_modes = PM_PDI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2177, 0x2178, 0x2179; ; @@ -2180,13 +2600,17 @@ programmer # pickit4_isp #------------------------------------------------------------ -programmer +# Due to hardware limitations, the PICkit 4 can only +# reach an ISP clock speed of about 330 kHz + +programmer # pickit4_isp id = "pickit4_isp"; desc = "MPLAB(R) PICkit 4 in ISP mode"; type = "jtagice3_isp"; prog_modes = PM_ISP; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2177, 0x2178, 0x2179; ; @@ -2194,27 +2618,99 @@ programmer # pickit4_tpi #------------------------------------------------------------ -programmer +programmer # pickit4_tpi id = "pickit4_tpi"; desc = "MPLAB(R) PICkit 4 in TPI mode"; type = "jtagice3_tpi"; prog_modes = PM_TPI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2177, 0x2178, 0x2179; ; + +# Microchip PICkit 5. For details, see +# https://www.microchip.com/en-us/development-tool/PG164150 +# +# Currently -c pickit5 only supports UPDI programming +# +# PIN UPDI +# > 1 !RST(*) +# 2 VCC +# 3 GND +# 4 UPDI(*) +# 5 +# 6 +# 7 +# 8 +# +# (*): The PICkit5 can generate a High-Voltage (12V) Pulse on this pins +# to restore the UPDI Pin functionality, if it was changed through fuses. +# AVRDUDE automatically selects the correct pin, if the HV pulse is +# enabled through the '-x hvupdi' flag. + +#------------------------------------------------------------ +# pickit5 /pickit5_updi +#------------------------------------------------------------ + +programmer # pickit5_updi + id = "pickit5_updi"; + desc = "MPLAB(R) PICkit 5, PICkit 4 and SNAP (PIC)"; + type = "pickit5_updi"; + prog_modes = PM_UPDI; + extra_features = HAS_VTARG_READ; + connection_type = usb; + baudrate = 200000; # UPDI default clock + usbvid = 0x04d8; + usbpid = 0x9036, 0x9012, 0x9018; # PK5, PK4 (pic mode), snap (pic mode) + hvupdi_support = 0, 1, 2; +; + #------------------------------------------------------------ # snap /snap_jtag #------------------------------------------------------------ -programmer +# Microchip MPLAB SNAP. See +# https://www.microchip.com/en-us/development-tool/pg164100 +# for details. +# +# The MPLAB SNAP supports the following programming modes +# using different programmer names: +# +# Interface: Programmer name: +# JTAG snap, snap_jtag +# PDI snap_pdi +# UPDI snap_updi +# debugWIRE snap_dw +# ISP snap_isp +# +# The pinout is identical to the PICkit 4, but different +# from other Microchip branded AVR programmers, and would +# usually require an adapter or custom wiring if your target +# board has a standard 6 or 10-pin programming connector. +# +# PIN JTAG PDI UPDI DW ISP UART* +# > 1 +# 2 VCC VCC VCC VCC VCC VCC +# 3 GND GND GND GND GND GND +# 4 TDO DATA UPDI SDI +# 5 TCK SCK +# 6 RST SCK dW RST +# 7 TDI SDO TX (target) +# 8 TMS RX (target) +# +# * The MPLAB SNAP can also be used as a USB to UART +# interface for simple serial debugging. + +programmer # snap id = "snap", "snap_jtag"; - desc = "MPLAB(R) Snap in JTAG mode"; + desc = "MPLAB(R) SNAP in JTAG mode"; type = "jtagice3"; prog_modes = PM_JTAG | PM_XMEGAJTAG; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2180, 0x217f, 0x2181; ; @@ -2222,13 +2718,18 @@ programmer # snap_updi #------------------------------------------------------------ -programmer +# Note that certain MPLAB SNAP programmer needs a hardware +# modification to be used as a UPDI programmer. +# See the Microchip ETN #36 for details. + +programmer # snap_updi id = "snap_updi"; desc = "MPLAB(R) SNAP in UPDI mode"; type = "jtagice3_updi"; prog_modes = PM_UPDI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2180, 0x217f, 0x2181; hvupdi_support = 1; ; @@ -2237,13 +2738,14 @@ programmer # snap_pdi #------------------------------------------------------------ -programmer +programmer # snap_pdi id = "snap_pdi"; desc = "MPLAB(R) SNAP in PDI mode"; type = "jtagice3_pdi"; prog_modes = PM_PDI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2180, 0x217f, 0x2181; ; @@ -2251,13 +2753,17 @@ programmer # snap_isp #------------------------------------------------------------ -programmer +# Due to hardware limitations, the MPLAB SNAP can only +# reach an ISP clock speed of about 330 kHz + +programmer # snap_isp id = "snap_isp"; desc = "MPLAB(R) SNAP in ISP mode"; type = "jtagice3_isp"; prog_modes = PM_ISP; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2180, 0x217f, 0x2181; ; @@ -2265,13 +2771,14 @@ programmer # snap_tpi #------------------------------------------------------------ -programmer +programmer # snap_tpi id = "snap_tpi"; desc = "MPLAB(R) SNAP in TPI mode"; type = "jtagice3_tpi"; prog_modes = PM_TPI; extra_features = HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2180, 0x217f, 0x2181; ; @@ -2279,13 +2786,21 @@ programmer # pkobn_updi #------------------------------------------------------------ -programmer +# Microchip PICkit On-Board Nano is the name of the nEDBG +# based programmer/debugger that's found on AVR based +# Curiosity Nano boards. +# +# These boards can read and adjust the target voltage supply +# and can be done in the Avrdude terminal mode. + +programmer # pkobn_updi id = "pkobn_updi"; desc = "Curiosity nano (nEDBG) in UPDI mode"; type = "jtagice3_updi"; prog_modes = PM_UPDI; extra_features = HAS_VTARG_ADJ | HAS_VTARG_READ; connection_type = usb; + usbvid = 0x03eb; usbpid = 0x2175; hvupdi_support = 1; ; @@ -2294,7 +2809,11 @@ programmer # pavr #------------------------------------------------------------ -programmer +# AVR910 based programmer. See +# https://web.archive.org/web/20040803005703/http://avr1.org/pavr/pavr.html +# for details. + +programmer # pavr id = "pavr"; desc = "Jason Kyle's pAVR Serial Programmer"; type = "avr910"; @@ -2306,36 +2825,61 @@ programmer # pickit2 #------------------------------------------------------------ -programmer +# Microchip PICkit 2. See +# https://www.microchip.com/en-us/development-tool/pg164120 +# for details. +# +# PIN ISP +# > 1 RST +# 2 VCC +# 3 GND +# 4 SDI +# 5 SCK +# 6 SDO + +programmer # pickit2 id = "pickit2"; - desc = "MicroChip's PICkit2 Programmer"; + desc = "Microchip PICkit 2 programmer in ISP mode"; type = "pickit2"; prog_modes = PM_ISP; connection_type = usb; + usbvid = 0x04d8; + usbpid = 0x0033; ; #------------------------------------------------------------ # flip1 #------------------------------------------------------------ -programmer +# The Atmel "Flexible in-system programmer" (FLIP v1) is a +# USB DFU bootloader designed for 8-bit AVRs with a native +# USB interface. +# See doc7618 for more information. + +programmer # flip1 id = "flip1"; - desc = "FLIP for bootloader using USB DFU protocol version 1 (doc7618)"; + desc = "FLIP bootloader using USB DFU v1 (doc7618)"; type = "flip1"; prog_modes = PM_SPM; connection_type = usb; + usbvid = 0x03eb; ; #------------------------------------------------------------ # flip2 #------------------------------------------------------------ -programmer +# The Atmel "Flexible in-system programmer" (FLIP v2) is a +# USB DFU bootloader designed for AVR XMEGA and AVR32. +# See AVR4023 for more information. + +programmer # flip2 id = "flip2"; - desc = "FLIP for bootloader using USB DFU protocol version 2 (AVR4023)"; + desc = "FLIP bootloader using USB DFU v2 (AVR4023)"; type = "flip2"; prog_modes = PM_SPM; connection_type = usb; + usbvid = 0x03eb; ; #------------------------------------------------------------ @@ -2362,9 +2906,9 @@ programmer # serial ponyprog design (dasa2 in uisp) # reset=!txd sck=rts sdo=dtr sdi=cts -programmer +programmer # ponyser id = "ponyser"; - desc = "design ponyprog serial, reset=!txd sck=rts sdo=dtr sdi=cts"; + desc = "ponyprog serial: reset=!txd sck=rts sdo=dtr sdi=cts"; type = "serbb"; prog_modes = PM_TPI | PM_ISP; connection_type = serial; @@ -2381,7 +2925,7 @@ programmer # Serial port adapter http://www.lancos.com/siprogsch.html # Same as above, different name -programmer parent "ponyser" +programmer parent "ponyser" # siprog id = "siprog"; desc = "Lancos SI-Prog (same as ponyser)"; ; @@ -2393,9 +2937,9 @@ programmer parent "ponyser" # unknown (dasa in uisp) # reset=rts sck=dtr sdo=txd sdi=cts -programmer +programmer # dasa id = "dasa"; - desc = "serial port banging, reset=rts sck=dtr sdo=txd sdi=cts"; + desc = "serial port: reset=rts sck=dtr sdo=txd sdi=cts"; type = "serbb"; prog_modes = PM_TPI | PM_ISP; connection_type = serial; @@ -2412,9 +2956,9 @@ programmer # unknown (dasa3 in uisp) # reset=!dtr sck=rts sdo=txd sdi=cts -programmer +programmer # dasa3 id = "dasa3"; - desc = "serial port banging, reset=!dtr sck=rts sdo=txd sdi=cts"; + desc = "serial port: reset=!dtr sck=rts sdo=txd sdi=cts"; type = "serbb"; prog_modes = PM_TPI | PM_ISP; connection_type = serial; @@ -2431,9 +2975,9 @@ programmer # C2N232i (jumper configuration "auto") # reset=dtr sck=!rts sdo=!txd sdi=!cts -programmer +programmer # c2n232i id = "c2n232i"; - desc = "serial port banging, reset=dtr sck=!rts sdo=!txd sdi=!cts"; + desc = "serial port: reset=dtr sck=!rts sdo=!txd sdi=!cts"; type = "serbb"; prog_modes = PM_TPI | PM_ISP; connection_type = serial; @@ -2447,11 +2991,17 @@ programmer # jtag2updi #------------------------------------------------------------ -# JTAG2UPDI # https://github.com/ElTangas/jtag2updi +# Original source for the jtag2updi project +# +# https://github.com/askn37/jtag2updi +# Enhanced firmware with better device support +# +# https://github.com/arduino/ArduinoCore-megaavr/tree/master/firmwares/MuxTO +# Arduino Nano Every (jtag2updi with 1200 baud touch, -r) -programmer - id = "jtag2updi"; +programmer # jtag2updi + id = "jtag2updi", "nanoevery"; desc = "JTAGv2 to UPDI bridge"; type = "jtagmkii_updi"; prog_modes = PM_UPDI; @@ -2460,17 +3010,549 @@ programmer hvupdi_support = 1; ; +# +# SERIAL ADAPTER DEFINITIONS +# + +# A serialadapter is a programmer that has only USB parameters defined; it +# can be used for a -P [:] port +# specification instead of the created serial port. Per-user serialadapter +# definitions in ~/.avrduderc or avrdude.rc files can add a serial number +# to assign a particular board a specific id and default baud rate: +# +# serialadapter parent "ft232r" +# id = "bike-shed-door"; +# usbsn = "0123456789"; +# baudrate = 250000; +# ; +# +# This is particularly useful for programming via a bootloader as it allows +# specifying the port as -P bike-shed-door rather than having to figure out +# which serial port name the operating system has assigned to the plugged in +# bike-shed-door board at runtime. Note that each programmer that defines +# usbpid and sets is_serialadapter = yes can also be utilised as a +# serialadapter. + +#------------------------------------------------------------ +# ch340 +#------------------------------------------------------------ + +serialadapter # ch340 + id = "ch340"; + desc = "WCH CH340 USB to serial adapter"; + usbvid = 0x1a86; + usbpid = 0x7523; +; + +#------------------------------------------------------------ +# ch342 +#------------------------------------------------------------ + +# Dual serial port chip +# https://www.wch-ic.com/products/CH342.html + +serialadapter # ch342 + id = "ch342"; + desc = "WCH CH342 USB to serial adapter"; + usbvid = 0x1a86; + usbpid = 0x55d2; +; + +#------------------------------------------------------------ +# ch343 +#------------------------------------------------------------ + +# CH343 doc https://www.wch-ic.com/downloads/CH343DS1_PDF.html + +serialadapter # ch343 + id = "ch343"; + desc = "WCH CH343 USB to serial adapter"; + usbvid = 0x1a86; + usbpid = 0x55d3; +; + +#------------------------------------------------------------ +# ch344 +#------------------------------------------------------------ + +# Quad serial port chip +# https://www.wch-ic.com/products/CH344.html + +serialadapter # ch344 + id = "ch344"; + desc = "WCH CH344 USB to serial adapter"; + usbvid = 0x1a86; + usbpid = 0x55d5; +; + +#------------------------------------------------------------ +# ch347 +#------------------------------------------------------------ + +# Multipurpose interface chip +# https://www.wch-ic.com/products/CH347.html + +serialadapter # ch347 + id = "ch347"; + desc = "WCH CH347 USB to serial adapter"; + usbvid = 0x1a86; + usbpid = 0x55da, 0x55db, 0x55dd, 0x55de; +; + +#------------------------------------------------------------ +# ch9102 +#------------------------------------------------------------ + +serialadapter # ch9102 + id = "ch9102"; + desc = "WCH CH9102 USB to serial adapter"; + usbvid = 0x1a86; + usbpid = 0x55d4; +; + +#------------------------------------------------------------ +# ch9103 +#------------------------------------------------------------ + +# Dual serial port chip +# https://www.wch-ic.com/products/CH9103.html + +serialadapter # ch9103 + id = "ch9103"; + desc = "WCH CH9103 USB to serial adapter"; + usbvid = 0x1a86; + usbpid = 0x55d7; +; + +#------------------------------------------------------------ +# cp210x +#------------------------------------------------------------ + +serialadapter # cp210x + id = "cp210x"; + desc = "Silabs CP210x USB to serial adapter"; + usbvid = 0x10c4; + usbpid = 0xea60, 0xea70, 0xea71; +; + +#------------------------------------------------------------ +# ft231x / ft234x / ft230x +#------------------------------------------------------------ + +serialadapter # ft231x + id = "ft231x", "ft234x", "ft230x"; + desc = "FTDI FT23X series USB to serial adapter"; + usbvid = 0x0403; + usbpid = 0x6015; +; + +#------------------------------------------------------------ +# pl2303 +#------------------------------------------------------------ + +serialadapter # pl2303 + id = "pl2303"; + desc = "Profilic PL2303 USB to serial adapter"; + usbvid = 0x067b; + usbpid = 0x2303, 0x2304, 0x23a3, 0x23b3, 0x23c3, 0x23d3, 0x23e3, 0x23f3; +; + # # PART DEFINITIONS # +#------------------------------------------------------------ +# Common values for reduced core tinys (4/5/9/10/20/40) +#------------------------------------------------------------ + +part # .reduced_core_tiny + desc = "Common values for reduced core tinys"; + id = ".reduced_core_tiny"; + prog_modes = PM_TPI; + archnum = 100; + + memory "fuse" + size = 1; + page_size = 16; + initval = 0xff; + bitmask = 0x07; + offset = 0x3f40; + blocksize = 4; + ; + + memory "lockbits" + size = 1; + page_size = 16; + initval = 0xff; + bitmask = 0x03; + offset = 0x3f00; + ; + + memory "signature" + size = 3; + page_size = 16; + offset = 0x3fc0; + ; + + memory "calibration" + size = 1; + page_size = 16; + offset = 0x3f80; + ; + + memory "sram" + size = 32; + offset = 0x40; + ; +; + +#------------------------------------------------------------ +# ATtiny4 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" # t4 + desc = "ATtiny4"; + id = "t4"; + 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; + + memory "flash" + size = 512; + page_size = 16; + offset = 0x4000; + blocksize = 128; + ; + + memory "io" + size = 64; + ; +; + +#------------------------------------------------------------ +# ATtiny5 +#------------------------------------------------------------ + +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; +; + +#------------------------------------------------------------ +# 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; + ; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# ATtiny20 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" # t20 + desc = "ATtiny20"; + id = "t20"; + 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; + + memory "flash" + size = 2048; + page_size = 16; + n_word_writes = 2; + offset = 0x4000; + blocksize = 128; + ; + + memory "fuse" + bitmask = 0x77; + n_word_writes = 2; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 128; + ; +; + +#------------------------------------------------------------ +# 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 "fuse" + bitmask = 0x77; + n_word_writes = 4; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 256; + ; +; + +#------------------------------------------------------------ +# ATtiny102 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" # t102 + desc = "ATtiny102"; + id = "t102"; + 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; + + 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; + ; +; + +#------------------------------------------------------------ +# ATtiny104 +#------------------------------------------------------------ + +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; + + 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; + archnum = 2; + + 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 "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"; + ; +; + #------------------------------------------------------------ # ATtiny11 #------------------------------------------------------------ # This is an HVSP-only device. -part +part parent ".classic" # t11 desc = "ATtiny11"; id = "t11"; variants = @@ -2488,6 +3570,7 @@ part "ATtiny11L-2SU: SOIC8, Fmax=2 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]"; prog_modes = PM_HVSP; mcuid = 8; + archnum = 1; n_interrupts = 5; stk500_devcode = 0x11; chip_erase_delay = 20000; @@ -2510,13 +3593,9 @@ part programfusepolltimeout = 25; programlockpolltimeout = 25; synchcycles = 6; - - memory "eeprom" - size = 64; - delay = 5; - blocksize = 64; - readsize = 256; - ; + factory_fcpu = 1200000; + chip_erase = NULL; + pgm_enable = NULL; memory "flash" size = 1024; @@ -2532,17 +3611,35 @@ part ; memory "lock" - size = 1; - initval = 0xff; bitmask = 0x06; + read = NULL; + write = NULL; + ; + + memory "prodsig" + read = NULL; ; memory "signature" - size = 3; + read = NULL; ; memory "calibration" - size = 1; + read = NULL; + ; + + memory "sernum" + read = NULL; + ; + + memory "io" + size = 64; + offset = 0x0; + ; + + memory "sram" + size = 32; + offset = 0x60; ; ; @@ -2550,7 +3647,7 @@ part # ATtiny12 #------------------------------------------------------------ -part +part parent "t11" # t12 desc = "ATtiny12"; id = "t12"; variants = @@ -2567,9 +3664,8 @@ part n_interrupts = 6; stk500_devcode = 0x12; avr910_devcode = 0x55; - chip_erase_delay = 20000; signature = 0x1e 0x90 0x05; - timeout = 200; + serial = yes; stabdelay = 100; cmdexedelay = 25; synchloops = 32; @@ -2577,22 +3673,6 @@ part 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; chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; @@ -2610,14 +3690,11 @@ part ; memory "flash" - size = 1024; min_write_delay = 4500; max_write_delay = 20000; readback = 0xff 0x00; mode = 0x04; delay = 10; - 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"; @@ -2625,8 +3702,8 @@ part ; memory "fuse" - size = 1; initval = 0x52; + bitmask = -1; min_write_delay = 9000; max_write_delay = 9000; read = "0101.0000--xxxx.xxxx--xxxx.xxxx--oooo.oooo"; @@ -2634,31 +3711,228 @@ part ; 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 "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"; + ; + 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"; ; + + memory "sernum" + 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"; + ; +; + +#------------------------------------------------------------ +# ATtiny15 +#------------------------------------------------------------ + +part parent "t11" # t15 + desc = "ATtiny15"; + id = "t15"; + 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; + serial = yes; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + 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 = 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"; + ; + + memory "flash" + 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"; + write_hi = "0100.1000--xxxx.xxxa--aaaa.aaaa--iiii.iiii"; + ; + + memory "fuse" + 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" + 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 "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"; + ; + + memory "signature" + read = "0011.0000--xxxx.xxxx--0000.00aa--oooo.oooo"; + ; + + memory "calibration" + read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; + ; + + memory "sernum" + 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"; + ; +; + +#------------------------------------------------------------ +# ATtiny22 +#------------------------------------------------------------ + +part parent ".classic-nocal" # 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]"; + 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; + 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; + 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"; + ; + + memory "flash" + size = 2048; + 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"; + ; + + memory "fuse" + size = 1; + 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" + 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; + ; + + memory "sram" + size = 128; + offset = 0x60; + ; ; #------------------------------------------------------------ # ATtiny13 #------------------------------------------------------------ -part +part parent ".classic" # t13 desc = "ATtiny13"; id = "t13"; variants = @@ -2688,6 +3962,7 @@ part "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; + archnum = 25; n_interrupts = 10; stk500_devcode = 0x14; chip_erase_delay = 4000; @@ -2726,8 +4001,7 @@ part spmcr = 0x57; eecr = 0x3c; ocdrev = 0; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + factory_fcpu = 1200000; memory "eeprom" size = 64; @@ -2782,31 +4056,31 @@ part ; 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 = 2; read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 64; + offset = 0x60; + ; ; #------------------------------------------------------------ # ATtiny13A #------------------------------------------------------------ -part parent "t13" +part parent "t13" # t13a desc = "ATtiny13A"; id = "t13a"; variants = @@ -2834,5198 +4108,181 @@ part parent "t13" ; #------------------------------------------------------------ -# ATtiny15 +# ATtiny25 #------------------------------------------------------------ -part - desc = "ATtiny15"; - id = "t15"; +part parent "t13" # t25 + desc = "ATtiny25"; + id = "t25"; 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; - 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; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - synchcycles = 6; - hvspcmdexedelay = 5; - 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"; - ; - - memory "flash" - size = 1024; - min_write_delay = 4100; - max_write_delay = 4100; - readback = 0xff 0x00; - mode = 0x04; - delay = 10; - 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"; - ; - - 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--0000.00aa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# AT89S51 -#------------------------------------------------------------ - -# Nonstandard part -# - Tested with -c avrisp -# - USBASP programmers may require different firmware - -part - 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 "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 "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"; - ; -; - -#------------------------------------------------------------ -# AT89S52 -#------------------------------------------------------------ - -part parent "89S51" - 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; - ; -; - -#------------------------------------------------------------ -# AT90S1200 -#------------------------------------------------------------ - -part - desc = "AT90S1200"; - id = "1200"; - 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; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 1; - pollvalue = 0xff; - 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; - chip_erase = "1010.1100--1000.0000--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; - mode = 0x04; - delay = 20; - blocksize = 32; - 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; - 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 = 0xdf; - bitmask = 0x21; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x06; - min_write_delay = 9000; - max_write_delay = 20000; - write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# AT90S4414 -#------------------------------------------------------------ - -part - desc = "AT90S4414"; - id = "4414"; - 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; - 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, 0x01; - hventerstabdelay = 100; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 1; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback = 0x80 0x7f; - 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"; - ; - - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback = 0x7f 0x7f; - 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"; - ; - - memory "fuse" - size = 1; - initval = 0xdf; - bitmask = 0x21; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x06; - min_write_delay = 9000; - max_write_delay = 9000; - write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# AT90S2313 -#------------------------------------------------------------ - -part - desc = "AT90S2313"; - id = "2313"; - 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; + "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 = 20000; - signature = 0x1e 0x91 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; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 1; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 128; - min_write_delay = 4000; - max_write_delay = 9000; - readback = 0x80 0x7f; - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - ; - - memory "flash" - 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--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; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x06; - min_write_delay = 9000; - max_write_delay = 9000; - write = "1010.1100--111x.xiix--xxxx.xxxx--xxxx.xxxx"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# AT90S2333 -#------------------------------------------------------------ - -part -##### WARNING: No XML file for device 'AT90S2333'! ##### - 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; - 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; - chip_erase = "1010.1100--1000.0000--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 = 128; - readsize = 256; - read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; - ; - - 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"; - ; - - memory "fuse" - size = 1; - 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; - 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 "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# AT90S2343 (also AT90S2323 and ATtiny22) -#------------------------------------------------------------ - -part - desc = "AT90S2343"; - id = "2343"; - 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; - 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"; - ; - - memory "flash" - size = 2048; - 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"; - ; - - memory "fuse" - size = 1; - initval = 0xde; - 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 = 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"; - ; -; - -#------------------------------------------------------------ -# AT90S2323 -#------------------------------------------------------------ - -part parent "2343" - 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" - 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" - 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 -#------------------------------------------------------------ - -part - desc = "AT90S8515"; - id = "8515"; - 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; - 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"; - ; - - memory "flash" - size = 8192; - min_write_delay = 4000; - 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; - initval = 0xdf; - bitmask = 0x21; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x06; - min_write_delay = 9000; - max_write_delay = 9000; - write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# AT90S8535 -#------------------------------------------------------------ - -part - desc = "AT90S8535"; - id = "8535"; - 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; - 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; - 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; - 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"; - ; - - memory "flash" - size = 8192; - 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"; - write_lo = "0100.0000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; - write_hi = "0100.1000--xxxx.aaaa--aaaa.aaaa--iiii.iiii"; - ; - - memory "fuse" - 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"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x06; - 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"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# AT90S4434 -#------------------------------------------------------------ - -# No XML file for device AT90S4434, so parenting off AT90S8535 -# with which it shares the datasheet. - -part parent "8535" - desc = "AT90S4434"; - id = "4434"; - 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; - - 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" - max_write_delay = 20000; - ; - - memory "lock" - max_write_delay = 20000; - ; -; - -#------------------------------------------------------------ -# ATmega103 -#------------------------------------------------------------ - -part - desc = "ATmega103"; - id = "m103"; - 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; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - 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; - hventerstabdelay = 100; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - programfusepulsewidth = 2; - programlockpolltimeout = 10; - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega64 -#------------------------------------------------------------ - -part - 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; + chip_erase_delay = 4500; + signature = 0x1e 0x91 0x08; 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; - eecr = 0x3c; - ocdrev = 2; - 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; - 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"; - ; - - memory "flash" - paged = yes; - size = 0x10000; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback = 0xff 0x00; - mode = 0x21; - delay = 10; - blocksize = 128; - 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"; - ; - - 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 "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"; - ; - - 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"; - ; - - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega64A -#------------------------------------------------------------ - -part parent "m64" - 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 - 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; - 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; - 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; - 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"; - ; - - 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"; - ; - - 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 "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"; - ; - - 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"; - ; - - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega128A -#------------------------------------------------------------ - -part parent "m128" - desc = "ATmega128A"; - id = "m128a"; - 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; -; - -#------------------------------------------------------------ -# AT90CAN128 -#------------------------------------------------------------ - -part - desc = "AT90CAN128"; - id = "c128"; - 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; - 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, 0x01; - hventerstabdelay = 100; - latchcycles = 6; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - rampz = 0x3b; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 4096; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; - mode = 0x41; - delay = 20; - blocksize = 8; - 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"; - ; - - memory "flash" - paged = yes; - size = 0x20000; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - 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--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 = 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 = 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--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# AT90CAN64 -#------------------------------------------------------------ - -part - 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]"; - 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; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; -# avr910_devcode = 0x43; - signature = 0x1e 0x96 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, 0x01; - hventerstabdelay = 100; - latchcycles = 6; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - chip_erase = "1010.1100--100x.xxxx--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; - delay = 20; - blocksize = 8; - 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"; - ; - - 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--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 = 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 = 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--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# AT90CAN32 -#------------------------------------------------------------ - -part - 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 = 1024; - stk500_devcode = 0xb3; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; -# avr910_devcode = 0x43; - signature = 0x1e 0x95 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, 0x01; - hventerstabdelay = 100; - latchcycles = 6; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - 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 = 8; - min_write_delay = 9000; - max_write_delay = 9000; - mode = 0x41; - delay = 20; - blocksize = 8; - 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"; - ; - - memory "flash" - paged = yes; - size = 0x8000; - page_size = 256; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - 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--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 = 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 = 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--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega16 -#------------------------------------------------------------ - -part - desc = "ATmega16"; - id = "m16"; - 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; - 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 = 0x31; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 2; - 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 = 9000; - max_write_delay = 9000; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - 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.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; - readback = 0xff 0x00; - mode = 0x21; - 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--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 = 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 "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"; - ; - - 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--000x.xxxx--0000.00aa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega16A -#------------------------------------------------------------ - -part parent "m16" - 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; -; - -#------------------------------------------------------------ -# ATmega324P -#------------------------------------------------------------ - -part - 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]"; - 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; - 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; - 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 = 9000; - max_write_delay = 9000; - 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"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--00xx.xaaa--aaaa.aa00--xxxx.xxxx"; - ; - - 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--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 = 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--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 "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega164P -#------------------------------------------------------------ - -part parent "m324p" - 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; - ; -; - -#------------------------------------------------------------ -# ATmega164PA -#------------------------------------------------------------ - -part parent "m164p" - 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" - 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" - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega324PA -#------------------------------------------------------------ - -part parent "m324p" - 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" - 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 -#------------------------------------------------------------ - -part - desc = "ATmega644"; - id = "m644"; - 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; - 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 0x96 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, 0x02; - hventerstabdelay = 100; - latchcycles = 6; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - chip_erase = "1010.1100--100x.xxxx--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; - delay = 10; - blocksize = 8; - 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"; - ; - - 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--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 "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--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 "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega644A -#------------------------------------------------------------ - -part parent "m644" - 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" - 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 -#------------------------------------------------------------ - -part parent "m644" - 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; -; - -#------------------------------------------------------------ -# ATmega1284 -#------------------------------------------------------------ - -part - 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]"; - 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; - 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; - ocdrev = 3; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - size = 4096; - page_size = 8; - min_write_delay = 9000; - max_write_delay = 9000; - 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"; - ; - - memory "flash" - paged = yes; - size = 0x20000; - page_size = 256; - num_pages = 512; - 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"; - ; - - 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--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 "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega1284P -#------------------------------------------------------------ - -part parent "m1284" - desc = "ATmega1284P"; - id = "m1284p"; - 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; -; - -#------------------------------------------------------------ -# ATmega162 -#------------------------------------------------------------ - -part - 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; - 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 = 9000; - max_write_delay = 9000; - 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"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--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 = 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--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 = 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 = 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"; - ; - - memory "efuse" - size = 1; - initval = 0xff; - 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--111i.iii1"; - ; - - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega163 -#------------------------------------------------------------ - -part - desc = "ATmega163"; - id = "m163"; - 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; - 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; - 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 = 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"; - ; - - 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"; - ; - - 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"; - ; - - 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" - size = 1; - initval = 0xff; - 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"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega169 -#------------------------------------------------------------ - -part - desc = "ATmega169"; - id = "m169"; - 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]"; - 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; - 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; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 2; - 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; - 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"; - 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; - readback = 0xff 0xff; - mode = 0x41; - 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--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" - size = 1; - initval = 0x62; - min_write_delay = 2000; - max_write_delay = 2000; - 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 = 2000; - max_write_delay = 2000; - 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 = 2000; - max_write_delay = 2000; - 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 = 2000; - max_write_delay = 2000; - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega169A -#------------------------------------------------------------ - -part parent "m169" - 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" - readback = 0x00 0x00; - ; - - memory "flash" - readback = 0x00 0x00; - delay = 10; - ; -; - -#------------------------------------------------------------ -# ATmega169P -#------------------------------------------------------------ - -part parent "m169" - 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" - readback = 0x00 0x00; - ; - - memory "flash" - readback = 0x00 0x00; - delay = 10; - ; -; - -#------------------------------------------------------------ -# ATmega169PA -#------------------------------------------------------------ - -part parent "m169" - 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" - readback = 0x00 0x00; - ; - - memory "flash" - readback = 0x00 0x00; - delay = 10; - ; -; - -#------------------------------------------------------------ -# ATmega329 -#------------------------------------------------------------ - -part - 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; - n_interrupts = 23; - 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; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x95 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 = 6; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - 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 = 10; - blocksize = 4; - readsize = 256; - read = "1010.0000--xxxx.xxaa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.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 "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--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" - 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 = 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 = 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"; - ; -; - -#------------------------------------------------------------ -# ATmega329A -#------------------------------------------------------------ - -part parent "m329" - 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; -; - -#------------------------------------------------------------ -# ATmega329P -#------------------------------------------------------------ - -part parent "m329" - 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; -; - -#------------------------------------------------------------ -# ATmega329PA -#------------------------------------------------------------ - -part parent "m329" - 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; -; - -#------------------------------------------------------------ -# ATmega3290 -#------------------------------------------------------------ - -part parent "m329" - 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" - 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; -; - -#------------------------------------------------------------ -# ATmega3290P -#------------------------------------------------------------ - -part parent "m329" - 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; -; - -#------------------------------------------------------------ -# ATmega3290PA -#------------------------------------------------------------ - -part parent "m329" - 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; -; - -#------------------------------------------------------------ -# ATmega649 -#------------------------------------------------------------ - -part - desc = "ATmega649"; - id = "m649"; - 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; - 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; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - 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; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - 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; - delay = 10; - 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"; - ; - - 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 = 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"; - ; - - 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 = 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 = 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"; - ; -; - -#------------------------------------------------------------ -# ATmega649A -#------------------------------------------------------------ - -part parent "m649" - 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; -; - -#------------------------------------------------------------ -# ATmega649P -#------------------------------------------------------------ - -part parent "m649" - 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; -; - -#------------------------------------------------------------ -# ATmega6490 -#------------------------------------------------------------ - -part parent "m649" - 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; -; - -#------------------------------------------------------------ -# ATmega6490A -#------------------------------------------------------------ - -part parent "m649" - 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; -; - -#------------------------------------------------------------ -# ATmega6490P -#------------------------------------------------------------ - -part parent "m649" - 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; -; - -#------------------------------------------------------------ -# ATmega32 -#------------------------------------------------------------ - -part - desc = "ATmega32"; - id = "m32"; - 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; - n_boot_sections = 4; - boot_section_size = 512; - stk500_devcode = 0x91; - avr910_devcode = 0x72; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x95 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 = 0x31; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 2; - 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; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 64; - readsize = 256; - 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.xxaa--aaaa.aa00--xxxx.xxxx"; - ; - - memory "flash" - paged = yes; - size = 0x8000; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback = 0xff 0x00; - mode = 0x21; - delay = 10; - 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"; - ; - - 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 "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"; - ; - - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega161 -#------------------------------------------------------------ - -part - desc = "ATmega161"; - id = "m161"; - 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; - boot_section_size = 1024; - stk500_devcode = 0x80; - avr910_devcode = 0x60; - chip_erase_delay = 28000; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x94 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; - chiperasepolltimeout = 30; - programfusepolltimeout = 2; - programlockpolltimeout = 2; - 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 = 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" - 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"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega32A -#------------------------------------------------------------ - -part parent "m32" - 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; -; - -#------------------------------------------------------------ -# ATmega8 -#------------------------------------------------------------ - -part - desc = "ATmega8"; - id = "m8"; - 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; - n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x70; - avr910_devcode = 0x76; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xc2; - signature = 0x1e 0x93 0x07; - reset = io; - 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 = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 20; - programfusepolltimeout = 10; - programlockpolltimeout = 10; - 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 = 9000; - max_write_delay = 9000; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxxa--aaaa.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; - 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"; - ; - - 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 "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"; - ; -; - -#------------------------------------------------------------ -# ATmega8A -#------------------------------------------------------------ - -part parent "m8" - desc = "ATmega8A"; - id = "m8a"; - 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 - 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]"; - 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; - pagel = 0xd7; - bs2 = 0xa0; - signature = 0x1e 0x93 0x06; - 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; - 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 = 9000; - max_write_delay = 9000; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxxa--aaaa.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; - 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"; - ; - - 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 "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"; - ; -; - -#------------------------------------------------------------ -# ATmega8535 -#------------------------------------------------------------ - -part - desc = "ATmega8535"; - id = "m8535"; - 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]"; - 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; - 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; - 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 = 9000; - max_write_delay = 9000; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; - write = "1100.0000--00xx.xxxa--aaaa.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; - 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 = 2000; - max_write_delay = 2000; - 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 = 2000; - max_write_delay = 2000; - read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; - write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; - ; - - memory "lock" - 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"; - ; - - 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"; - ; -; - -#------------------------------------------------------------ -# ATtiny26 -#------------------------------------------------------------ - -part - desc = "ATtiny26"; - id = "t26"; - 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; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - 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; - hventerstabdelay = 100; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 20; - programfusepolltimeout = 10; - programlockpolltimeout = 10; - 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 = 9000; - readback = 0xff 0xff; - mode = 0x04; - delay = 20; - blocksize = 64; - readsize = 256; - read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; - write = "1100.0000--xxxx.xxxx--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; - 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"; - ; - - memory "hfuse" - size = 1; - 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--xxxi.iiii"; - ; - - memory "lock" - size = 1; - initval = 0xff; - bitmask = 0x03; - 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"; - ; -; - -#------------------------------------------------------------ -# ATtiny261 -#------------------------------------------------------------ - -part - desc = "ATtiny261"; - id = "t261"; - 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; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - 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; - flash_instr = 0xb4, 0x00, 0x10; + flash_instr = 0xb4, 0x02, 0x12; eeprom_instr = 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xbc, 0x00, 0xb4, 0x00, 0xba, 0x0d, 0xbb, 0xbc, + 0xbc, 0x02, 0xb4, 0x02, 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 = 0x20; - spmcr = 0x57; - eecr = 0x3c; + idr = 0x22; ocdrev = 1; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + factory_fcpu = 1000000; memory "eeprom" size = 128; - page_size = 4; - num_pages = 32; - min_write_delay = 4000; - max_write_delay = 4000; - mode = 0x41; - delay = 10; - blocksize = 4; - 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"; + 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 "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--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"; + 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" - 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"; + min_write_delay = 9000; + max_write_delay = 9000; ; 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"; + bitmask = -1; + min_write_delay = 9000; + max_write_delay = 9000; ; memory "efuse" size = 1; initval = 0xff; bitmask = 0x01; - 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.xxxi"; ; 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"; + min_write_delay = 9000; + max_write_delay = 9000; ; - 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"; + memory "sram" + size = 128; ; ; #------------------------------------------------------------ -# ATtiny261A +# ATtiny45 #------------------------------------------------------------ -part parent "t261" - desc = "ATtiny261A"; - id = "t261a"; +part parent "t13" # t45 + desc = "ATtiny45"; + id = "t45"; 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; -; - -#------------------------------------------------------------ -# ATtiny461 -#------------------------------------------------------------ - -part - 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]"; - 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; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - 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; - 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 = 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; - 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; - num_pages = 64; - min_write_delay = 4000; - max_write_delay = 4000; - mode = 0x41; - delay = 10; - blocksize = 4; - 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"; - ; - - 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--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"; - ; - - 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 = 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"; - ; - - 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"; - ; -; - -#------------------------------------------------------------ -# ATtiny461A -#------------------------------------------------------------ - -part parent "t461" - 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 - 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]"; - 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; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - pollindex = 3; - 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; - 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 = 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; - 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 = 4000; - max_write_delay = 4000; - mode = 0x41; - delay = 10; - 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"; - ; - - 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--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"; - ; - - 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 = 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"; - ; - - 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"; - ; -; - -#------------------------------------------------------------ -# ATtiny861A -#------------------------------------------------------------ - -part parent "t861" - 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; -; - -#------------------------------------------------------------ -# ATtiny28 -#------------------------------------------------------------ - -# This is an HVPP-only device. - -part - desc = "ATtiny28"; - id = "t28"; - 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; - 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; - - memory "flash" - size = 2048; - page_size = 2; - delay = 5; - readsize = 256; - ; - - memory "fuse" - size = 1; - initval = 0x12; - bitmask = 0x1f; - ; - - memory "lock" - size = 1; - initval = 0x06; - bitmask = 0x06; - ; - - memory "signature" - size = 3; - ; - - memory "calibration" - size = 1; - ; -; - -#------------------------------------------------------------ -# ATmega48 -#------------------------------------------------------------ - -part - desc = "ATmega48"; - id = "m48"; - 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; - pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x92 0x05; + "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; - 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; + flash_instr = 0xb4, 0x02, 0x12; 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; + 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; + idr = 0x22; ocdrev = 1; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + factory_fcpu = 1000000; memory "eeprom" size = 256; - page_size = 4; - min_write_delay = 3600; - max_write_delay = 3600; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; + max_write_delay = 4500; 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 = 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"; @@ -8034,1181 +4291,94 @@ part ; 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"; + min_write_delay = 9000; + max_write_delay = 9000; ; 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"; + bitmask = -1; + min_write_delay = 9000; + max_write_delay = 9000; ; memory "efuse" size = 1; initval = 0xff; bitmask = 0x01; - 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.xxxi"; ; 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"; + min_write_delay = 9000; + max_write_delay = 9000; ; - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega48A -#------------------------------------------------------------ - -part parent "m48" - 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 -#------------------------------------------------------------ - -part parent "m48" - desc = "ATmega48P"; - id = "m48p"; - 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; -; - -#------------------------------------------------------------ -# ATmega48PA -#------------------------------------------------------------ - -part parent "m48" - 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; -; - -#------------------------------------------------------------ -# ATmega48PB -#------------------------------------------------------------ - -part parent "m48" - 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; -; - -#------------------------------------------------------------ -# ATmega88 -#------------------------------------------------------------ - -part - 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]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 79; - n_interrupts = 26; - n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x73; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x93 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, 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; - 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 = 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 "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--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; - 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 = 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"; - ; -; - -#------------------------------------------------------------ -# ATmega88A -#------------------------------------------------------------ - -part parent "m88" - 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" - 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" - 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" - 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 -#------------------------------------------------------------ - -part - 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]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 99; - n_interrupts = 26; - n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x86; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x94 0x06; - 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; - 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 = 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 "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--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 = 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 = 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"; - ; -; - -#------------------------------------------------------------ -# ATmega168A -#------------------------------------------------------------ - -part parent "m168" - 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; -; - -#------------------------------------------------------------ -# ATmega168P -#------------------------------------------------------------ - -part parent "m168" - 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" - 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" - 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 - 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; - n_boot_sections = 4; - boot_section_size = 256; - stk500_devcode = 0x86; - chip_erase_delay = 15000; - pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x93 0x14; - 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; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" + memory "sram" 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 "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--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 = 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 = 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 = 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"; ; ; #------------------------------------------------------------ -# ATtiny828R +# ATtiny85 #------------------------------------------------------------ -part parent "t828" - desc = "ATtiny828R"; - id = "t828r"; +part parent "t13" # t85 + desc = "ATtiny85"; + id = "t85"; 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; -; - -#------------------------------------------------------------ -# ATtiny87 -#------------------------------------------------------------ - -part - desc = "ATtiny87"; - id = "t87"; - 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; + "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 = 15000; - pagel = 0xb3; - bs2 = 0xb2; - signature = 0x1e 0x93 0x87; + chip_erase_delay = 4500; + signature = 0x1e 0x93 0x0b; 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; + flash_instr = 0xb4, 0x02, 0x12; 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; + 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x02, 0xb4, 0x02, 0xba, 0x0d, 0xbb, 0xbc, + 0x99, 0xe1, 0xbb, 0xac; + idr = 0x22; ocdrev = 1; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + factory_fcpu = 1000000; 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"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; + 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" - 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--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"; - ; - - 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.000a--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATtiny167 -#------------------------------------------------------------ - -part - desc = "ATtiny167"; - id = "t167"; - 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; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - 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; - 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 "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--0000.0000--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; - ; - - # ATtiny167 has signature bytes 0x1E 0x94 0x87 - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATtiny48 -#------------------------------------------------------------ - -part - 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; - 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; - 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 = 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; + num_pages = 128; 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"; @@ -9217,1400 +4387,35 @@ part ; 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"; + initval = 0x62; + min_write_delay = 9000; + max_write_delay = 9000; ; 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"; + bitmask = -1; + min_write_delay = 9000; + max_write_delay = 9000; ; 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--1111.111i"; - ; - - 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"; - ; -; - -#------------------------------------------------------------ -# ATtiny88 -#------------------------------------------------------------ - -part - 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]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 28; - n_interrupts = 20; - stk500_devcode = 0x73; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x93 0x11; - 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; - 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 = 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 = 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--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 = 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 "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 = 0xff; - bitmask = 0x01; - 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.xxxi"; ; 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"; + min_write_delay = 9000; + max_write_delay = 9000; ; - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega328 -#------------------------------------------------------------ - -part - desc = "ATmega328"; - id = "m328"; - 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; - n_boot_sections = 4; - boot_section_size = 512; - stk500_devcode = 0x86; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xc2; -# avr910_devcode = 0x??; - signature = 0x1e 0x95 0x14; - 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; - 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 = 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 "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 = 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 = 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"; - ; -; - -#------------------------------------------------------------ -# ATmega328P -#------------------------------------------------------------ - -part parent "m328" - desc = "ATmega328P"; - id = "m328p"; - 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; -; - -#------------------------------------------------------------ -# ATmega328PB -#------------------------------------------------------------ - -part parent "m328" - 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" - initval = 0xf7; - bitmask = 0x0f; - write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; - ; -; - -#------------------------------------------------------------ -# ATmega64M1 -#------------------------------------------------------------ - -part - 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]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 76; - n_interrupts = 31; - n_boot_sections = 4; - 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; - 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; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - 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"; - loadpage_lo = "1100.0001--0000.0000--0000.0aaa--iiii.iiii"; - writepage = "1100.0010--0000.0aaa--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.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega32M1 -#------------------------------------------------------------ - -part parent "m64m1" - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega16M1 -#------------------------------------------------------------ - -part parent "m32m1" - 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" + memory "sram" 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"; - ; -; - -#------------------------------------------------------------ -# ATmega32C1 -#------------------------------------------------------------ - -part parent "m32m1" - 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 -#------------------------------------------------------------ - -part parent "m64m1" - 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; - signature = 0x1e 0x96 0x86; -; - -#------------------------------------------------------------ -# ATA5505 -#------------------------------------------------------------ - -part parent "t167" - 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]"; - 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"; - ; - - memory "calibration" - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATA6612C -#------------------------------------------------------------ - -part parent "m88" - 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"; - ; - - memory "calibration" - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATA6613C -#------------------------------------------------------------ - -part parent "m168" - 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"; - ; - - memory "calibration" - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATA6614Q -#------------------------------------------------------------ - -part parent "m328" - 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"; - ; - - memory "calibration" - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATA6616C -#------------------------------------------------------------ - -part parent "t87" - 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"; - ; - - memory "calibration" - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATA6617C -#------------------------------------------------------------ - -part parent "t167" - 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"; - ; - - memory "calibration" - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATA664251 -#------------------------------------------------------------ - -part parent "t167" - 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"; - ; - - memory "calibration" - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega16HVA -#------------------------------------------------------------ - -part - 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; - 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.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega8HVA -#------------------------------------------------------------ - -part parent "m16hva" - 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 - 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; - 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.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega16HVBrevB -#------------------------------------------------------------ - -part parent "m16hvb" - 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" - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega32HVBrevB -#------------------------------------------------------------ - -part parent "m32hvb" - 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 - 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; - 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.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega32HVE2 -#------------------------------------------------------------ - -part parent "m64hve2" - 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; - signature = 0x1e 0x95 0x13; - - memory "flash" - size = 0x8000; - num_pages = 256; ; ; @@ -10618,7 +4423,7 @@ part parent "m64hve2" # ATtiny2313 #------------------------------------------------------------ -part +part parent ".classic" # t2313 desc = "ATtiny2313"; id = "t2313"; variants = @@ -10635,6 +4440,7 @@ part "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; + archnum = 25; n_interrupts = 19; stk500_devcode = 0x23; # Use the ATtiny26 devcode: @@ -10677,8 +4483,6 @@ part spmcr = 0x57; eecr = 0x3c; ocdrev = 0; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 128; @@ -10745,19 +4549,9 @@ part ; 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. @@ -10767,13 +4561,22 @@ part size = 2; read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 128; + offset = 0x60; + ; ; #------------------------------------------------------------ # ATtiny2313A #------------------------------------------------------------ -part parent "t2313" +part parent "t2313" # t2313a desc = "ATtiny2313A"; id = "t2313a"; variants = @@ -10798,7 +4601,7 @@ part parent "t2313" # ATtiny4313 #------------------------------------------------------------ -part +part parent "t2313" # t4313 desc = "ATtiny4313"; id = "t4313"; variants = @@ -10810,16 +4613,67 @@ part "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; + idr = 0x27; + + memory "eeprom" + 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" + size = 4096; + 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 "lfuse" + initval = 0x62; + ; + + memory "sram" + size = 256; + ; +; + +#------------------------------------------------------------ +# ATtiny24 +#------------------------------------------------------------ + +part parent ".classic" # t24 + desc = "ATtiny24"; + id = "t24"; + 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; + archnum = 25; + 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; @@ -10830,52 +4684,52 @@ part 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; + 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, 0xfe, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, - 0xba, 0x0f, 0xb2, 0x0f, 0xba, 0x0d, 0xbb, 0xbc, + 0xbb, 0xff, 0xbb, 0xee, 0xbb, 0xcc, 0xb2, 0x0d, + 0xbc, 0x07, 0xb4, 0x07, 0xba, 0x0d, 0xbb, 0xbc, 0x99, 0xe1, 0xbb, 0xac; hventerstabdelay = 100; - latchcycles = 5; + latchcycles = 1; togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; + 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 = 0; - 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 = 256; + size = 128; page_size = 4; min_write_delay = 4000; max_write_delay = 4500; mode = 0x41; - delay = 6; + delay = 10; 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--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--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxxx--xaaa.aa00--xxxx.xxxx"; ; memory "flash" paged = yes; - size = 4096; - page_size = 64; + size = 2048; + page_size = 32; num_pages = 64; min_write_delay = 4500; max_write_delay = 4500; @@ -10883,11 +4737,11 @@ part 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"; + 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" @@ -10919,24 +4773,1999 @@ part ; 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"; + write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; ; - # ATtiny4313 has signature bytes 0x1E 0x92 0x0D - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "io" + size = 64; + ; + + memory "sram" + size = 128; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# ATtiny24A +#------------------------------------------------------------ + +part parent "t24" # t24a + desc = "ATtiny24A"; + id = "t24a"; + 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; +; + +#------------------------------------------------------------ +# 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 = 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" + 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 "sram" + size = 256; + ; +; + +#------------------------------------------------------------ +# ATtiny44A +#------------------------------------------------------------ + +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; +; + +#------------------------------------------------------------ +# 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 "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 = 512; + ; +; + +#------------------------------------------------------------ +# ATtiny84A +#------------------------------------------------------------ + +part parent "t84" # t84a + desc = "ATtiny84A"; + id = "t84a"; + 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; +; + +#------------------------------------------------------------ +# ATtiny441 +#------------------------------------------------------------ + +part parent ".classic" # t441 + desc = "ATtiny441"; + id = "t441"; + 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; + mcuid = 32; + archnum = 25; + 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; + 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 = 25; + resetdelayms = 1; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + synchcycles = 6; + idr = 0x27; + spmcr = 0x57; + eecr = 0x3c; + ocdrev = 1; + + 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"; + ; + + memory "flash" + paged = yes; + size = 4096; + page_size = 16; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 10; + blocksize = 16; + 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--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"; + 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 = 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--iiii.iiii"; + ; + + memory "lock" + bitmask = 0x03; + min_write_delay = 9000; + max_write_delay = 9000; + write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; + ; + + memory "sram" + size = 256; + ; +; + +#------------------------------------------------------------ +# 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 "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 = 512; + ; +; + +#------------------------------------------------------------ +# ATtiny26 +#------------------------------------------------------------ + +part parent ".classic" # t26 + desc = "ATtiny26"; + id = "t26"; + 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; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + pollindex = 3; + 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; + hventerstabdelay = 100; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 20; + programfusepolltimeout = 10; + programlockpolltimeout = 10; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback = 0xff 0xff; + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--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; + 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"; + ; + + memory "hfuse" + size = 1; + 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--xxxi.iiii"; + ; + + memory "lock" + bitmask = 0x03; + 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 "calibration" - size = 2; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; + size = 4; + read = "0011.1000--xxxx.xxxx--0000.00aa--oooo.oooo"; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 128; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# ATtiny261 +#------------------------------------------------------------ + +part parent ".classic" # t261 + desc = "ATtiny261"; + id = "t261"; + 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; + archnum = 25; + 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; + synchloops = 32; + pollindex = 3; + 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; + 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 = 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; + + memory "eeprom" + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; + mode = 0x41; + delay = 10; + blocksize = 4; + 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; + 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"; + ; + + 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"; + ; + + memory "lock" + 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 = 64; + ; + + memory "sram" + size = 128; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# ATtiny261A +#------------------------------------------------------------ + +part parent "t261" # t261a + desc = "ATtiny261A"; + id = "t261a"; + 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; +; + +#------------------------------------------------------------ +# 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; + archnum = 25; + 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; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + spmcr = 0x57; + eecr = 0x3f; + ocdrev = 1; + + 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; + 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 = 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 "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 = 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--1111.111i"; + ; + + memory "lock" + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "sram" + size = 256; + ; +; + +#------------------------------------------------------------ +# 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 = 512; + ; +; + +#------------------------------------------------------------ +# ATtiny28 +#------------------------------------------------------------ + +# This is an HVPP-only device. + +part parent ".classic" # t28 + desc = "ATtiny28"; + id = "t28"; + 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; + archnum = 1; + 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 "prodsig" + read = NULL; + ; + + memory "signature" + read = NULL; + ; + + memory "calibration" + read = NULL; + ; + + memory "sernum" + read = NULL; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 32; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# ATtiny43U +#------------------------------------------------------------ + +part parent ".classic" # t43u + desc = "ATtiny43U"; + id = "t43u"; + 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; + archnum = 25; + 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; + 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 = 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 = 20; + resetdelayms = 1; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x27; + spmcr = 0x57; + eecr = 0x3c; + ocdrev = 1; + + memory "eeprom" + size = 64; + page_size = 4; + num_pages = 16; + min_write_delay = 4000; + max_write_delay = 4500; + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + 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.xxxx--00aa.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 = 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"; + ; + + 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 = 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"; + ; + + memory "lock" + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 256; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# ATtiny828 +#------------------------------------------------------------ + +part parent ".classic" # 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; + archnum = 25; + n_interrupts = 26; + n_boot_sections = 4; + boot_section_size = 256; + stk500_devcode = 0x86; + chip_erase_delay = 15000; + pagel = 0xd7; + bs2 = 0xc2; +# avr910_devcode = 0x??; + signature = 0x1e 0x93 0x14; + 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; + + 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 "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--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 = 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 = 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 = 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" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "sram" + size = 512; + ; +; + +#------------------------------------------------------------ +# ATtiny828R +#------------------------------------------------------------ + +part parent "t828" # t828r + desc = "ATtiny828R"; + id = "t828r"; + 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; +; + +#------------------------------------------------------------ +# ATtiny87 +#------------------------------------------------------------ + +part parent ".classic" # t87 + desc = "ATtiny87"; + id = "t87"; + 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; + archnum = 25; + 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; + 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 = 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"; + 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 = 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"; + ; + + 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" + bitmask = 0x03; + min_write_delay = 9000; + max_write_delay = 9000; + write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; + ; + + memory "sram" + size = 512; + ; +; + +#------------------------------------------------------------ +# ATtiny167 +#------------------------------------------------------------ + +part parent "t87" # t167 + desc = "ATtiny167"; + id = "t167"; + 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]"; + mcuid = 29; + archnum = 35; + signature = 0x1e 0x94 0x87; + + memory "flash" + size = 0x4000; + num_pages = 128; + writepage = "0100.1100--000a.aaaa--aaxx.xxxx--xxxx.xxxx"; + ; +; + +#------------------------------------------------------------ +# ATtiny1634 +#------------------------------------------------------------ + +part parent ".classic" # 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; + archnum = 35; + 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; + + 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 "flash" + paged = yes; + 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"; + ; + + 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 "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 = 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 "lock" + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + write = "1010.1100--111x.xxxx--xxxx.xxxx--1111.11ii"; + ; + + memory "sram" + size = 1024; + ; +; + +#------------------------------------------------------------ +# ATtiny1634R +#------------------------------------------------------------ + +part parent "t1634" # t1634r + desc = "ATtiny1634R"; + id = "t1634r"; + 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; +; + +#------------------------------------------------------------ +# 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; + archnum = 5; + 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; + 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, 0x01; + hventerstabdelay = 100; + latchcycles = 6; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + spmcr = 0x57; + eecr = 0x3f; + ocdrev = 3; + + memory "eeprom" + size = 1024; + page_size = 8; + min_write_delay = 9000; + max_write_delay = 9000; + mode = 0x41; + delay = 20; + blocksize = 8; + 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"; + ; + + memory "flash" + paged = yes; + size = 0x8000; + page_size = 256; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + 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--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 = 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 = 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; + ; +; + +#------------------------------------------------------------ +# 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 "flash" + size = 0x10000; + num_pages = 256; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# AT90CAN128 +#------------------------------------------------------------ + +part parent "c32" # c128 + desc = "AT90CAN128"; + id = "c128"; + 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; + archnum = 51; +# 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; + archnum = 4; + n_interrupts = 20; + n_boot_sections = 4; + boot_section_size = 256; + chip_erase_delay = 9000; + pagel = 0xe2; + bs2 = 0xd6; + signature = 0x1e 0x93 0x88; + 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; + + 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 = 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" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; + ; + + memory "sram" + size = 256; + ; +; + +#------------------------------------------------------------ +# AT90PWM161 +#------------------------------------------------------------ + +part parent "pwm81" # 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]"; + mcuid = 177; + archnum = 5; + signature = 0x1e 0x94 0x8b; + + memory "flash" + 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 "sram" + size = 1024; ; ; @@ -10944,7 +6773,7 @@ part # AT90PWM1 #------------------------------------------------------------ -part +part parent ".classic" # pwm1 desc = "AT90PWM1"; id = "pwm1"; variants = @@ -10954,6 +6783,7 @@ part "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; + archnum = 4; n_interrupts = 32; n_boot_sections = 4; boot_section_size = 256; @@ -10995,8 +6825,6 @@ part spmcr = 0x57; eecr = 0x3f; ocdrev = 1; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 512; @@ -11060,23 +6888,14 @@ part ; 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.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "sram" + size = 512; ; ; @@ -11084,7 +6903,7 @@ part # AT90PWM2 #------------------------------------------------------------ -part +part parent ".classic" # pwm2 desc = "AT90PWM2"; id = "pwm2"; variants = @@ -11093,6 +6912,7 @@ part "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; + archnum = 4; n_interrupts = 32; n_boot_sections = 4; boot_section_size = 256; @@ -11133,8 +6953,6 @@ part programlockpolltimeout = 5; spmcr = 0x57; eecr = 0x3f; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 512; @@ -11200,53 +7018,13 @@ part ; 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"; - ; -; - -#------------------------------------------------------------ -# AT90PWM3 -#------------------------------------------------------------ - -# Completely identical to AT90PWM2 (including the signature!) - -part parent "pwm2" - 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 "sram" + size = 512; ; ; @@ -11255,7 +7033,7 @@ part parent "pwm2" #------------------------------------------------------------ # Same as AT90PWM2 but different signature. -part parent "pwm2" +part parent "pwm2" # pwm2b desc = "AT90PWM2B"; id = "pwm2b"; variants = @@ -11279,13 +7057,61 @@ part parent "pwm2" ; ; +#------------------------------------------------------------ +# AT90PWM3 +#------------------------------------------------------------ + +# Completely identical to AT90PWM2 (including the signature!) + +part parent "pwm1" # 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; + stk500_devcode = 0x65; + pagel = 0xd8; + signature = 0x1e 0x93 0x81; + + memory "eeprom" + min_write_delay = 4000; + max_write_delay = 4500; + ; + + memory "lfuse" + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + min_write_delay = 9000; + max_write_delay = 9000; + ; + + 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 "lock" + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; + ; +; + #------------------------------------------------------------ # AT90PWM3B #------------------------------------------------------------ # Completely identical to AT90PWM2B (including the signature!) -part parent "pwm2b" +part parent "pwm3" # pwm3b desc = "AT90PWM3B"; id = "pwm3b"; variants = @@ -11293,30 +7119,32 @@ part parent "pwm2b" "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; ; #------------------------------------------------------------ -# AT90PWM161 +# AT90PWM216 #------------------------------------------------------------ +# Completely identical to AT90PWM316 (including the signature!) -part - desc = "AT90PWM161"; - id = "pwm161"; +part parent ".classic" # pwm216 + desc = "AT90PWM216"; + id = "pwm216"; 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]"; + "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 = 177; - n_interrupts = 20; + mcuid = 179; + archnum = 5; + n_interrupts = 32; n_boot_sections = 4; - boot_section_size = 256; + boot_section_size = 512; + stk500_devcode = 0x65; chip_erase_delay = 9000; - pagel = 0xe2; - bs2 = 0xd6; - signature = 0x1e 0x94 0x8b; + pagel = 0xd8; + bs2 = 0xe2; + signature = 0x1e 0x94 0x83; reset = io; timeout = 200; stabdelay = 100; @@ -11328,10 +7156,10 @@ part 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; + 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, @@ -11349,24 +7177,22 @@ part programlockpolltimeout = 5; idr = 0x31; spmcr = 0x57; - eecr = 0x3c; + eecr = 0x3f; ocdrev = 1; - 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; + min_write_delay = 4000; + max_write_delay = 4500; 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"; + 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--0000.000a--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxxa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" @@ -11380,86 +7206,49 @@ part 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"; + 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 = 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 = 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; - 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--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"; + min_write_delay = 9000; + max_write_delay = 9000; ; - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# AT90PWM81 -#------------------------------------------------------------ - -part parent "pwm161" - 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 = 1024; ; ; @@ -11469,7 +7258,7 @@ part parent "pwm161" # Similar to AT90PWM3B, but with 16 kiB flash, 512 B EEPROM, and 1024 B SRAM. -part parent "pwm3b" +part parent "pwm216" # pwm316 desc = "AT90PWM316"; id = "pwm316"; variants = @@ -11477,2277 +7266,13 @@ part parent "pwm3b" "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"; - ; -; - -#------------------------------------------------------------ -# AT90PWM216 -#------------------------------------------------------------ -# Completely identical to AT90PWM316 (including the signature!) - -part parent "pwm316" - 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 - 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; - 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"; - ; - - 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--11ii.iiii"; - ; - - # ATtiny25 has signature bytes 0x1E 0x91 0x08 - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATtiny45 -#------------------------------------------------------------ - -part - desc = "ATtiny45"; - id = "t45"; - 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; - 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; - 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 = 5; - 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 = 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"; - ; - - 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--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 = 1; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATtiny85 -#------------------------------------------------------------ - -part - desc = "ATtiny85"; - id = "t85"; - 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; - 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; - 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; - mode = 0x41; - delay = 5; - 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; - 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"; - ; - - 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--11ii.iiii"; - ; - - # ATtiny85 has signature bytes 0x1E 0x93 0x08 - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega640 -#------------------------------------------------------------ -# Almost same as ATmega1280, except for different memory sizes - -part - 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 = 0xa0; - signature = 0x1e 0x96 0x08; - 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; - 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; - 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"; - ; - - 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--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; - 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"; - ; - - 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--xxxx.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega1280 -#------------------------------------------------------------ - -part - desc = "ATmega1280"; - id = "m1280"; - 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]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 138; - 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 0x97 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; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x31; - rampz = 0x3b; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - 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; - 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"; - ; - - memory "flash" - paged = yes; - size = 0x20000; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - 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"; - writepage = "0100.1100--aaaa.aaaa--axxx.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 = 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"; - ; - - 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--xxxx.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega1281 -#------------------------------------------------------------ -# Identical to ATmega1280 - -part parent "m1280" - 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; -; - -#------------------------------------------------------------ -# ATmega2560 -#------------------------------------------------------------ - -part - 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]"; - 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; - 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; - 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"; - ; - - memory "flash" - paged = yes; - size = 0x40000; - page_size = 256; - num_pages = 1024; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - 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"; - ; - - 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"; - ; - - 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--xxxx.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega2561 -#------------------------------------------------------------ - -part parent "m2560" - 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; - signature = 0x1e 0x98 0x02; -; - -#------------------------------------------------------------ -# ATmega128RFA1 -#------------------------------------------------------------ -# Identical to ATmega2561 but half the ROM - -part parent "m2561" - 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]"; - 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; - - memory "eeprom" - min_write_delay = 13000; - max_write_delay = 13000; - delay = 50; - ; - - memory "flash" - size = 0x20000; - num_pages = 512; - delay = 50; - load_ext_addr = NULL; - ; - - 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; - ; - - memory "lock" - min_write_delay = 4500; - max_write_delay = 4500; - ; -; - -#------------------------------------------------------------ -# ATmega256RFR2 -#------------------------------------------------------------ - -part parent "m128rfa1" - 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; - n_interrupts = 77; - signature = 0x1e 0xa8 0x02; - chiperasepolltimeout = 20; - 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; - load_ext_addr = "0100.1101--0000.0000--0000.000a--0000.0000"; - ; - - memory "efuse" - initval = 0xfe; - ; - - ##### - # 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; - ; -; - -#------------------------------------------------------------ -# ATmega128RFR2 -#------------------------------------------------------------ - -part parent "m256rfr2" - desc = "ATmega128RFR2"; - id = "m128rfr2"; - 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; - ; - - memory "flash" - size = 0x20000; - num_pages = 512; - load_ext_addr = NULL; - ; -; - -#------------------------------------------------------------ -# ATmega64RFR2 -#------------------------------------------------------------ - -part parent "m128rfr2" - desc = "ATmega64RFR2"; - id = "m64rfr2"; - 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; - - 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"; - ; - - memory "flash" - size = 0x10000; - 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"; - ; -; - -#------------------------------------------------------------ -# ATmega2564RFR2 -#------------------------------------------------------------ - -part parent "m256rfr2" - 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; -; - -#------------------------------------------------------------ -# ATmega1284RFR2 -#------------------------------------------------------------ - -part parent "m128rfr2" - 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; -; - -#------------------------------------------------------------ -# ATmega644RFR2 -#------------------------------------------------------------ - -part parent "m64rfr2" - desc = "ATmega644RFR2"; - id = "m644rfr2"; - 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; -; - -#------------------------------------------------------------ -# ATtiny24 -#------------------------------------------------------------ - -part - desc = "ATtiny24"; - id = "t24"; - 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; - 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; - 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 = 10; - 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"; - ; - - 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"; - ; - - # 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.000a--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATtiny24A -#------------------------------------------------------------ - -part parent "t24" - desc = "ATtiny24A"; - id = "t24a"; - 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; -; - -#------------------------------------------------------------ -# ATtiny44 -#------------------------------------------------------------ - -part - 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]"; - 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; - 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"; - ; - - 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"; - ; - - 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--0000.0000--oooo.oooo"; - write = "1010.1100--111x.xxxx--xxxx.xxxx--xxxx.xxii"; - ; - - # ATtiny44 has signature bytes 0x1E 0x92 0x07 - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATtiny44A -#------------------------------------------------------------ - -part parent "t44" - 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; -; - -#------------------------------------------------------------ -# ATtiny84 -#------------------------------------------------------------ - -part - 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; - 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; - 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; - 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"; - ; - - 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"; - ; - - # ATtiny84 has signature bytes 0x1E 0x93 0x0C - memory "signature" - size = 3; - read = "0011.0000--000x.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.000a--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATtiny84A -#------------------------------------------------------------ - -part parent "t84" - desc = "ATtiny84A"; - id = "t84a"; - 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; -; - -#------------------------------------------------------------ -# ATtiny441 -#------------------------------------------------------------ - -part parent "t44" - desc = "ATtiny441"; - id = "t441"; - 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; - - memory "flash" - page_size = 16; - 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"; - ; - - memory "lfuse" - bitmask = 0xdf; - ; - - memory "efuse" - bitmask = 0xff; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; - ; -; - -#------------------------------------------------------------ -# ATtiny841 -#------------------------------------------------------------ - -part parent "t84" - 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; - n_interrupts = 30; - n_page_erase = 4; - signature = 0x1e 0x93 0x15; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvspcmdexedelay = 0; - - 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"; - ; - - memory "lfuse" - bitmask = 0xdf; - ; - - memory "efuse" - bitmask = 0xff; - write = "1010.1100--1010.0100--xxxx.xxxx--iiii.iiii"; - ; -; - -#------------------------------------------------------------ -# ATtiny43U -#------------------------------------------------------------ - -part - desc = "ATtiny43U"; - id = "t43u"; - 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; - 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 = 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 = 20; - resetdelayms = 1; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepolltimeout = 10; - programfusepolltimeout = 5; - programlockpolltimeout = 5; - idr = 0x27; - spmcr = 0x57; - eecr = 0x3c; - ocdrev = 1; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; - - memory "eeprom" - paged = yes; - size = 64; - page_size = 4; - num_pages = 16; - min_write_delay = 4000; - max_write_delay = 4500; - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - 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.xxxx--00aa.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 = 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"; - ; - - 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 = 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"; - ; - - 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.000a--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega16u4 -#------------------------------------------------------------ - -part - desc = "ATmega16U4"; - id = "m16u4"; - 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]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; - mcuid = 57; - 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 0x94 0x88; - usbpid = 0x2ff4; - 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; - 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"; - ; - - 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"; - ; - - 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 "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 = 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"; - ; - - 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"; - ; - - memory "signature" - size = 3; - read = "0011.0000--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; - ; -; - -#------------------------------------------------------------ -# ATmega32u4 -#------------------------------------------------------------ - -part - desc = "ATmega32U4"; - id = "m32u4"; - 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]"; - 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; - 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; - 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; - 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"; - ; - - memory "flash" - paged = yes; - size = 0x8000; - page_size = 128; - 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"; - ; - - 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 "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 = 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"; - ; - - 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--xxxx.xxxx--0000.0000--oooo.oooo"; - ; ; #------------------------------------------------------------ # AT90USB646 #------------------------------------------------------------ -part +part parent ".classic" # usb646 desc = "AT90USB646"; id = "usb646"; variants = @@ -13758,6 +7283,7 @@ part "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; + archnum = 5; n_interrupts = 38; n_boot_sections = 4; boot_section_size = 1024; @@ -13797,8 +7323,6 @@ part spmcr = 0x57; eecr = 0x3f; ocdrev = 3; - chip_erase = "1010.1100--1000.0000--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 2048; @@ -13862,23 +7386,13 @@ part ; 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--xxxx.xxxx--0000.0000--oooo.oooo"; + memory "sram" + size = 4096; ; ; @@ -13887,7 +7401,7 @@ part #------------------------------------------------------------ # identical to AT90USB646 -part parent "usb646" +part parent "usb646" # usb647 desc = "AT90USB647"; id = "usb647"; variants = @@ -13903,7 +7417,7 @@ part parent "usb646" # AT90USB1286 #------------------------------------------------------------ -part +part parent "usb646" # usb1286 desc = "AT90USB1286"; id = "usb1286"; variants = @@ -13912,130 +7426,33 @@ part "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; + archnum = 51; signature = 0x1e 0x97 0x82; usbpid = 0x2ffb; - 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; rampz = 0x3b; - spmcr = 0x57; - eecr = 0x3f; - ocdrev = 3; - 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; - 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"; ; memory "flash" - paged = yes; size = 0x20000; - page_size = 256; num_pages = 512; - 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--xxxx.xxxx--xxxx.xxaa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--xxxx.xxxx--0000.0000--oooo.oooo"; + memory "sram" + size = 8192; ; ; @@ -14044,7 +7461,7 @@ part #------------------------------------------------------------ # identical to AT90USB1286 -part parent "usb1286" +part parent "usb646" # usb1287 desc = "AT90USB1287"; id = "usb1287"; variants = @@ -14054,148 +7471,32 @@ part parent "usb1286" "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; -; - -#------------------------------------------------------------ -# AT90USB162 -#------------------------------------------------------------ - -part - 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]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 178; - n_interrupts = 29; - n_boot_sections = 4; - boot_section_size = 512; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xc6; - signature = 0x1e 0x94 0x82; - usbpid = 0x2ffa; - 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; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; + archnum = 51; + signature = 0x1e 0x97 0x82; + usbpid = 0x2ffb; + rampz = 0x3b; memory "eeprom" - size = 512; - page_size = 4; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - 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"; - loadpage_lo = "1100.0001--0000.0000--0000.00aa--iiii.iiii"; - writepage = "1100.0010--0000.aaaa--aaaa.aa00--xxxx.xxxx"; + 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" - 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; + 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"; - 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 = 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"; + writepage = "0100.1100--aaaa.aaaa--axxx.xxxx--xxxx.xxxx"; ; 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"; + initval = 0x99; ; - 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" - 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 "sram" + size = 8192; ; ; @@ -14203,7 +7504,7 @@ part # AT90USB82 #------------------------------------------------------------ -part +part parent ".classic" # usb82 desc = "AT90USB82"; id = "usb82"; variants = @@ -14212,6 +7513,7 @@ part "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; + archnum = 35; n_interrupts = 29; n_boot_sections = 4; boot_section_size = 512; @@ -14254,8 +7556,6 @@ part spmcr = 0x57; eecr = 0x3f; ocdrev = 1; - chip_erase = "1010.1100--100x.xxxx--xxxx.xxxx--xxxx.xxxx"; - pgm_enable = "1010.1100--0101.0011--xxxx.xxxx--xxxx.xxxx"; memory "eeprom" size = 512; @@ -14320,49 +7620,178 @@ part ; 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 "sram" + size = 512; ; ; #------------------------------------------------------------ -# ATmega32U2 +# AT90USB162 #------------------------------------------------------------ -part - desc = "ATmega32U2"; - id = "m32u2"; +part parent "usb82" # usb162 + desc = "AT90USB162"; + id = "usb162"; 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]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 64; - n_interrupts = 29; - n_boot_sections = 4; - boot_section_size = 512; - chip_erase_delay = 9000; + "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; + ; +; + +#------------------------------------------------------------ +# AT90S1200 +#------------------------------------------------------------ + +part parent ".classic-nocal" # 1200 + desc = "AT90S1200"; + id = "1200"; + 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; + archnum = 1; + n_interrupts = 4; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + chip_erase_delay = 20000; pagel = 0xd7; - bs2 = 0xc6; - signature = 0x1e 0x95 0x8a; - usbpid = 0x2ff0; - reset = io; + bs2 = 0xa0; + signature = 0x1e 0x90 0x01; + is_at90s1200 = yes; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 1; + pollvalue = 0xff; + 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"; + + memory "eeprom" + size = 64; + min_write_delay = 4000; + max_write_delay = 9000; + readback = 0x00 0xff; + mode = 0x04; + delay = 20; + blocksize = 32; + 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; + 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 = 0xdf; + bitmask = 0x21; + ; + + memory "lock" + 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; + ; + + memory "sram" + size = 32; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# AT90S2313 +#------------------------------------------------------------ + +part parent ".classic-nocal" # 2313 + desc = "AT90S2313"; + id = "2313"; + 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; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -14371,140 +7800,747 @@ part 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; + 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"; + + memory "eeprom" + size = 128; + min_write_delay = 4000; + max_write_delay = 9000; + readback = 0x80 0x7f; + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + read = "1010.0000--xxxx.xxxx--xaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--xaaa.aaaa--iiii.iiii"; + ; + + memory "flash" + 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--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; + ; + + memory "lock" + 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; + ; + + memory "sram" + size = 128; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# AT90S2323 +#------------------------------------------------------------ + +part parent ".classic-nocal" # 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]"; + 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; + 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; + 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; - num_pages = 256; + 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"; + ; + + memory "flash" + size = 2048; + 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"; + ; + + memory "fuse" + size = 1; + initval = 0xde; + 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" + 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; + ; + + memory "sram" + size = 128; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# AT90S2343 (also AT90S2323 and ATtiny22) +#------------------------------------------------------------ + +part parent "2323" # 2343 + desc = "AT90S2343"; + id = "2343"; + 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]"; + 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; + 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"; + + 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"; + ; + + 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"; + ; + + memory "fuse" + size = 1; + 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" + 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; + ; + + memory "sram" + size = 128; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# 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; + ; +; + +#------------------------------------------------------------ +# AT90S4414 +#------------------------------------------------------------ + +part parent ".classic-nocal" # 4414 + desc = "AT90S4414"; + id = "4414"; + 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; + 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, 0x01; + 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"; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0x80 0x7f; + 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"; + ; + + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0x7f 0x7f; + 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"; + ; + + memory "fuse" + size = 1; + initval = 0xdf; + bitmask = 0x21; + ; + + memory "lock" + bitmask = 0x06; min_write_delay = 9000; max_write_delay = 9000; - mode = 0x41; - delay = 20; - blocksize = 4; + read = NULL; + write = "1010.1100--1111.1ii1--xxxx.xxxx--xxxx.xxxx"; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 256; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# AT90S8515 +#------------------------------------------------------------ + +part parent "4414" # 8515 + desc = "AT90S8515"; + id = "8515"; + variants = + "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; + ; +; + +#------------------------------------------------------------ +# AT90S4434 +#------------------------------------------------------------ + +part parent ".classic-nocal" # 4434 + desc = "AT90S4434"; + id = "4434"; + 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]"; + 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; + 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"; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback = 0x00 0xff; + mode = 0x04; + delay = 12; + blocksize = 128; readsize = 256; - 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"; + read = "1010.0000--xxxx.xxxx--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.xxxx--aaaa.aaaa--iiii.iiii"; + ; + + memory "flash" + 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.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" + 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" + 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; + ; + + memory "sram" + size = 256; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# AT90S8535 +#------------------------------------------------------------ + +part parent "4434" # 8535 + desc = "AT90S8535"; + id = "8535"; + 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]"; + 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; + ; +; + +#------------------------------------------------------------ +# ATmega103 +#------------------------------------------------------------ + +part parent ".classic-nocal" # m103 + desc = "ATmega103"; + id = "m103"; + 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; + archnum = 31; + 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, 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; + 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 = 0x8000; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - mode = 0x41; - delay = 6; - blocksize = 128; + 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--xxaa.aaaa--iiii.iiii"; - loadpage_hi = "0100.1000--xxxx.xxxx--xxaa.aaaa--iiii.iiii"; - writepage = "0100.1100--aaaa.aaaa--aaxx.xxxx--xxxx.xxxx"; + 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" + memory "fuse" size = 1; - initval = 0x5e; + initval = 0xdf; + bitmask = 0x2b; 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 = 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"; + 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 = 0x3f; + bitmask = 0x06; 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"; + 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--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "io" + size = 64; ; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + memory "sram" + size = 4000; + offset = 0x60; ; ; #------------------------------------------------------------ -# ATmega16U2 +# ATmega161 #------------------------------------------------------------ -part - desc = "ATmega16U2"; - id = "m16u2"; +part parent ".classic-nocal" # m161 + desc = "ATmega161"; + id = "m161"; 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]"; - prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; - mcuid = 56; - n_interrupts = 29; - n_boot_sections = 4; - boot_section_size = 512; - chip_erase_delay = 9000; + "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; + archnum = 5; + n_interrupts = 21; + n_boot_sections = 1; + boot_section_size = 1024; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + chip_erase_delay = 28000; pagel = 0xd7; - bs2 = 0xc6; - signature = 0x1e 0x94 0x89; - usbpid = 0x2fef; - reset = io; + bs2 = 0xa0; + signature = 0x1e 0x94 0x01; timeout = 200; stabdelay = 100; cmdexedelay = 25; @@ -14513,48 +8549,173 @@ part 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 = 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"; + + memory "eeprom" + 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; + archnum = 5; + 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 = 0x31; + idr = 0x04; spmcr = 0x57; - eecr = 0x3f; - ocdrev = 1; - 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; - num_pages = 128; min_write_delay = 9000; max_write_delay = 9000; 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--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--0000.aaaa--aaaa.aa00--xxxx.xxxx"; + writepage = "1100.0010--00xx.xxaa--aaaa.aa00--xxxx.xxxx"; ; memory "flash" @@ -14565,21 +8726,263 @@ part 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--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 = 0x5e; + initval = 0x62; + 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 = 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"; + ; + + memory "efuse" + size = 1; + initval = 0xff; + 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--111i.iii1"; + ; + + memory "lock" + bitmask = 0x3f; + min_write_delay = 16000; + max_write_delay = 16000; + ; + + memory "sram" + size = 1024; + ; +; + +#------------------------------------------------------------ +# ATmega163 +#------------------------------------------------------------ + +part parent ".classic" # m163 + desc = "ATmega163"; + id = "m163"; + 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; + archnum = 5; + 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; + + 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"; + ; + + 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"; + ; + + 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"; + ; + + 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; + ; +; + +#------------------------------------------------------------ +# ATmega8515 +#------------------------------------------------------------ + +part parent ".classic" # 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP; + mcuid = 160; + archnum = 4; + n_interrupts = 17; + n_boot_sections = 4; + boot_section_size = 256; + stk500_devcode = 0x63; + avr910_devcode = 0x3a; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + signature = 0x1e 0x93 0x06; + 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; + + memory "eeprom" + size = 512; min_write_delay = 9000; max_write_delay = 9000; + readback = 0xff 0xff; + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxxa--aaaa.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; + 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"; ; @@ -14587,65 +8990,747 @@ part 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"; - ; - 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"; + min_write_delay = 4500; + max_write_delay = 4500; ; 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 = 64; + ; + + memory "sram" + size = 512; + offset = 0x60; ; ; #------------------------------------------------------------ -# ATmega8U2 +# ATmega8535 #------------------------------------------------------------ -part - desc = "ATmega8U2"; - id = "m8u2"; +part parent ".classic" # m8535 + desc = "ATmega8535"; + id = "m8535"; variants = - "ATmega8U2-AU: LQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8U2-AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8U2-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", - "ATmega8U2-MUR: VQFN32, 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 = 48; - n_interrupts = 29; + "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; + archnum = 4; + n_interrupts = 21; n_boot_sections = 4; - boot_section_size = 512; + boot_section_size = 256; + stk500_devcode = 0x64; + avr910_devcode = 0x69; chip_erase_delay = 9000; pagel = 0xd7; - bs2 = 0xc6; - signature = 0x1e 0x93 0x89; - usbpid = 0x2fee; + bs2 = 0xa0; + signature = 0x1e 0x93 0x08; + 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; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback = 0xff 0xff; + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxxa--aaaa.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; + 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"; + ; + + 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 "lock" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 4; + read = "0011.1000--00xx.xxxx--0000.00aa--oooo.oooo"; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 512; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# ATmega8 +#------------------------------------------------------------ + +part parent ".classic" # m8 + desc = "ATmega8"; + id = "m8"; + 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; + archnum = 4; + n_interrupts = 19; + n_boot_sections = 4; + boot_section_size = 256; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xc2; + signature = 0x1e 0x93 0x07; + reset = io; + 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 = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepolltimeout = 20; + programfusepolltimeout = 10; + programlockpolltimeout = 10; + + memory "eeprom" + size = 512; + page_size = 4; + min_write_delay = 9000; + max_write_delay = 9000; + readback = 0xff 0xff; + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + read = "1010.0000--00xx.xxxa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--00xx.xxxa--aaaa.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; + 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"; + ; + + 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 "lock" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 4; + read = "0011.1000--00xx.xxxx--0000.00aa--oooo.oooo"; + ; + + memory "io" + size = 64; + ; + + memory "sram" + size = 1024; + offset = 0x60; + ; +; + +#------------------------------------------------------------ +# ATmega8A +#------------------------------------------------------------ + +part parent "m8" # m8a + desc = "ATmega8A"; + id = "m8a"; + 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; +; + +#------------------------------------------------------------ +# ATmega16 +#------------------------------------------------------------ + +part parent "m8" # m16 + desc = "ATmega16"; + id = "m16"; + 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; + archnum = 5; + 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 = 0x3c; + ocdrev = 2; + + memory "eeprom" + 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.xxaa--aaaa.aa00--xxxx.xxxx"; + ; + + memory "flash" + size = 0x4000; + 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--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" + initval = 0x99; + ; +; + +#------------------------------------------------------------ +# ATmega16A +#------------------------------------------------------------ + +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; +; + +#------------------------------------------------------------ +# ATmega32 +#------------------------------------------------------------ + +part parent "m8" # m32 + desc = "ATmega32"; + id = "m32"; + 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; + archnum = 5; + 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 = 0x3c; + ocdrev = 2; + + memory "eeprom" + 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.xxaa--aaaa.aa00--xxxx.xxxx"; + ; + + memory "flash" + size = 0x8000; + page_size = 128; + 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" + initval = 0x99; + ; + + memory "sram" + size = 2048; + ; +; + +#------------------------------------------------------------ +# ATmega32A +#------------------------------------------------------------ + +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; +; + +#------------------------------------------------------------ +# ATmega64 +#------------------------------------------------------------ + +part parent "m8" # 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; + archnum = 5; + 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 = 0x22; + spmcr = 0x68; + eecr = 0x3c; + ocdrev = 2; + + memory "eeprom" + size = 2048; + page_size = 8; + blocksize = 64; + read = "1010.0000--xxxx.aaaa--aaaa.aaaa--oooo.oooo"; + write = "1100.0000--xxxx.aaaa--aaaa.aaaa--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" + initval = 0x99; + ; + + 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"; + ; + + memory "io" + size = 224; + ; + + memory "sram" + size = 4096; + offset = 0x100; + ; +; + +#------------------------------------------------------------ +# 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; + archnum = 51; + 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; + 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; + ; + + memory "sram" + size = 4096; + offset = 0x100; + ; +; + +#------------------------------------------------------------ +# ATmega128A +#------------------------------------------------------------ + +part parent "m128" # m128a + desc = "ATmega128A"; + id = "m128a"; + 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; +; + +#------------------------------------------------------------ +# 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; + archnum = 5; + 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 0x96 0x08; reset = io; timeout = 200; stabdelay = 100; @@ -14661,11 +9746,6 @@ part 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; @@ -14679,47 +9759,44 @@ part idr = 0x31; spmcr = 0x57; eecr = 0x3f; - ocdrev = 1; - 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 = 512; - page_size = 4; - num_pages = 128; + 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--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"; + 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 = 128; - num_pages = 64; + size = 0x10000; + page_size = 256; + num_pages = 256; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 6; - blocksize = 128; + 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--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--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; + initval = 0x62; min_write_delay = 9000; max_write_delay = 9000; read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; @@ -14728,7 +9805,7 @@ part memory "hfuse" size = 1; - initval = 0xd9; + initval = 0x99; min_write_delay = 9000; max_write_delay = 9000; read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; @@ -14737,65 +9814,1308 @@ part memory "efuse" size = 1; - initval = 0xf4; - bitmask = 0x0f; + 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--iiii.iiii"; + 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--000x.xxxx--xxxx.xxaa--oooo.oooo"; + memory "io" + size = 480; ; - memory "calibration" - size = 1; - read = "0011.1000--000x.xxxx--0000.0000--oooo.oooo"; + memory "sram" + size = 8192; + offset = 0x200; ; ; #------------------------------------------------------------ -# ATmega165P +# ATmega1280 #------------------------------------------------------------ -part - desc = "ATmega165P"; - id = "m165p"; +part parent "m640" # m1280 + desc = "ATmega1280"; + id = "m1280"; 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]"; + "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; + archnum = 51; + 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; + archnum = 51; + 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; + archnum = 6; + 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; + archnum = 6; + 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 = 97; + mcuid = 93; + archnum = 5; + n_interrupts = 31; + n_boot_sections = 4; + boot_section_size = 256; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + chip_erase_delay = 55000; + pagel = 0xd7; + bs2 = 0xa0; + signature = 0x1e 0x94 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, 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; + + 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--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.xaaa--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--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 = 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--1111.1iii"; + ; + + memory "lock" + bitmask = 0x3f; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "sram" + size = 1024; + ; +; + +#------------------------------------------------------------ +# 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; + ; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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"; + ; +; + +#------------------------------------------------------------ +# ATmega644 +#------------------------------------------------------------ + +part parent "m164p" # m644 + desc = "ATmega644"; + id = "m644"; + 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]"; + mcuid = 127; + n_interrupts = 28; + boot_section_size = 1024; + 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, 0x02; + latchcycles = 6; + + memory "eeprom" + size = 2048; + page_size = 8; + delay = 10; + blocksize = 8; + 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 "flash" + size = 0x10000; + page_size = 256; + num_pages = 256; + blocksize = 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"; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# ATmega644PA +#------------------------------------------------------------ + +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; +; + +#------------------------------------------------------------ +# ATmega1284 +#------------------------------------------------------------ + +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; + archnum = 51; + 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 "flash" + size = 0x20000; + page_size = 256; + num_pages = 512; + 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 = 0x4000; + ; +; + +#------------------------------------------------------------ +# ATmega1284P +#------------------------------------------------------------ + +part parent "m1284" # m1284p + desc = "ATmega1284P"; + id = "m1284p"; + 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; +; + +#------------------------------------------------------------ +# 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; + archnum = 51; + 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; + 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; + rampz = 0x3b; + spmcr = 0x57; + eecr = 0x3f; + eind = 0x5c; + ocdrev = 3; + + memory "eeprom" + size = 4096; + page_size = 8; + min_write_delay = 13000; + max_write_delay = 13000; + mode = 0x41; + delay = 50; + 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"; + ; + + memory "flash" + paged = yes; + size = 0x20000; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 50; + 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 = 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 = 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 = 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" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "io" + size = 480; + ; + + memory "sram" + size = 0x4000; + offset = 0x200; + ; +; + +#------------------------------------------------------------ +# ATmega644RFR2 +#------------------------------------------------------------ + +part parent ".classic" # m644rfr2 + desc = "ATmega644RFR2"; + id = "m644rfr2"; + 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 131; + archnum = 5; + 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; + 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 = 20; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + rampz = 0x3b; + spmcr = 0x57; + eecr = 0x3f; + eind = 0x5c; + ocdrev = 3; + + memory "eeprom" + size = 2048; + page_size = 8; + min_write_delay = 13000; + max_write_delay = 13000; + mode = 0x41; + delay = 50; + 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"; + writepage = "1100.0010--00xx.xaaa--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 = 50; + 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--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 = 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 = 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 = 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.xiii"; + ; + + memory "lock" + 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; + archnum = 51; + 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"; + ; + + memory "sram" + size = 0x4000; + ; +; + +#------------------------------------------------------------ +# 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; + archnum = 6; + 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 "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; + ; +; + +#------------------------------------------------------------ +# ATmega64RFR2 +#------------------------------------------------------------ + +part parent ".classic" # m64rfr2 + desc = "ATmega64RFR2"; + id = "m64rfr2"; + 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 78; + archnum = 5; + 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 0x02; + 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 = 20; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + rampz = 0x3b; + spmcr = 0x57; + eecr = 0x3f; + eind = 0x5c; + ocdrev = 3; + + memory "eeprom" + size = 2048; + page_size = 8; + min_write_delay = 13000; + max_write_delay = 13000; + mode = 0x41; + delay = 50; + 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"; + writepage = "1100.0010--00xx.xaaa--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 = 50; + 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--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 = 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 = 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 = 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.xiii"; + ; + + memory "lock" + 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; + ; +; + +#------------------------------------------------------------ +# ATmega128RFR2 +#------------------------------------------------------------ + +part parent "m64rfr2" # m128rfr2 + desc = "ATmega128RFR2"; + id = "m128rfr2"; + 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; + archnum = 51; + 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; + archnum = 6; + 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 = 95; + archnum = 5; n_interrupts = 22; n_boot_sections = 4; boot_section_size = 256; -# stk500_devcode = 0x??; -# avr910_devcode = 0x??; chip_erase_delay = 9000; pagel = 0xd7; bs2 = 0xa0; @@ -14826,15 +11146,13 @@ part spmcr = 0x57; eecr = 0x3f; ocdrev = 3; - 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; @@ -14892,23 +11210,44 @@ part ; 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 "sram" + size = 1024; ; +; - memory "calibration" - size = 1; - read = "0011.1000--0000.0000--xxxx.xxxx--oooo.oooo"; +#------------------------------------------------------------ +# ATmega165P +#------------------------------------------------------------ + +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 "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; ; ; @@ -14916,7 +11255,7 @@ part # ATmega165A #------------------------------------------------------------ -part parent "m165p" +part parent "m165" # m165a desc = "ATmega165A"; id = "m165a"; variants = @@ -14927,30 +11266,10 @@ part parent "m165p" "ATmega165A-MUR: TQFP64, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; mcuid = 96; signature = 0x1e 0x94 0x10; -; - -#------------------------------------------------------------ -# ATmega165 -#------------------------------------------------------------ - -part parent "m165p" - 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]"; - mcuid = 95; memory "eeprom" - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 3600; + max_write_delay = 3600; ; ; @@ -14958,7 +11277,7 @@ part parent "m165p" # ATmega165PA #------------------------------------------------------------ -part parent "m165p" +part parent "m165" # m165pa desc = "ATmega165PA"; id = "m165pa"; variants = @@ -14969,13 +11288,18 @@ part parent "m165p" "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" + min_write_delay = 3600; + max_write_delay = 3600; + ; ; #------------------------------------------------------------ # ATmega325 #------------------------------------------------------------ -part +part parent "m165" # m325 desc = "ATmega325"; id = "m325"; variants = @@ -14988,18 +11312,472 @@ part "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; - 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; - bs2 = 0xa0; signature = 0x1e 0x95 0x05; + + memory "eeprom" + 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 = 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 = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + min_write_delay = 9000; + max_write_delay = 9000; + ; + + 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 = 2048; + ; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# ATmega3250 +#------------------------------------------------------------ + +part parent "m165" # 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; + boot_section_size = 512; + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x06; + + memory "eeprom" + 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 = 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 = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + min_write_delay = 9000; + max_write_delay = 9000; + ; + + 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 = 2048; + ; +; + +#------------------------------------------------------------ +# ATmega3250P +#------------------------------------------------------------ + +part parent "m3250" # 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; + 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 = 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 = 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" + 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; + ; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# ATmega6450 +#------------------------------------------------------------ + +part parent "m165" # m6450 + desc = "ATmega6450"; + id = "m6450"; + 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; + boot_section_size = 1024; + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x06; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + + memory "eeprom" + 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 = 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" + 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; + ; +; + +#------------------------------------------------------------ +# ATmega6450P +#------------------------------------------------------------ + +part parent "m6450" # m6450p + desc = "ATmega6450P"; + id = "m6450p"; + 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; + signature = 0x1e 0x96 0x0e; +; + +#------------------------------------------------------------ +# ATmega6450A +#------------------------------------------------------------ + +part parent "m6450" # 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; +; + +#------------------------------------------------------------ +# ATmega48 +#------------------------------------------------------------ + +part parent ".classic" # m48 + desc = "ATmega48"; + id = "m48"; + 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; + archnum = 4; + 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; @@ -15015,8 +11793,16 @@ part 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; @@ -15025,17 +11811,1515 @@ part idr = 0x31; spmcr = 0x57; eecr = 0x3f; + ocdrev = 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.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 = 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"; + ; + + 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 = 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"; + ; + + memory "lock" + bitmask = 0x03; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "sram" + size = 512; + ; +; + +#------------------------------------------------------------ +# ATmega48P +#------------------------------------------------------------ + +part parent "m48" # m48p + desc = "ATmega48P"; + id = "m48p"; + 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; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# ATmega48PA +#------------------------------------------------------------ + +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; +; + +#------------------------------------------------------------ +# ATmega88 +#------------------------------------------------------------ + +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 "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 "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 "efuse" + initval = 0xf9; + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + ; + + memory "lock" + bitmask = 0x3f; + ; + + memory "sram" + size = 1024; + ; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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; + archnum = 5; + 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; + 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 = 0x4000; + page_size = 128; + num_pages = 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"; + ; + + memory "efuse" + initval = 0xf9; + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + ; + + memory "lock" + bitmask = 0x3f; + ; + + memory "sram" + size = 1024; + ; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# ATmega328 +#------------------------------------------------------------ + +part parent "m48" # m328 + desc = "ATmega328"; + id = "m328"; + 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]"; + mcuid = 118; + archnum = 5; + 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" + size = 0x8000; + page_size = 128; + num_pages = 256; + 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 "hfuse" + initval = 0xd9; + ; + + memory "efuse" + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + ; + + memory "lock" + bitmask = 0x3f; + ; + + memory "sram" + size = 2048; + ; +; + +#------------------------------------------------------------ +# ATmega328P +#------------------------------------------------------------ + +part parent "m328" # m328p + desc = "ATmega328P"; + id = "m328p"; + 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; +; + +#------------------------------------------------------------ +# ATmega48PB +#------------------------------------------------------------ + +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" + initval = 0xf7; + bitmask = 0x0f; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.iiii"; + ; +; + +#------------------------------------------------------------ +# ATmega169 +#------------------------------------------------------------ + +part parent ".classic" # m169 + desc = "ATmega169"; + id = "m169"; + 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG | PM_JTAGmkI; + mcuid = 104; + archnum = 5; + 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; + 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; + chiperasepolltimeout = 10; + programfusepolltimeout = 5; + programlockpolltimeout = 5; + idr = 0x31; + spmcr = 0x57; + eecr = 0x3f; + ocdrev = 2; + + memory "eeprom" + size = 512; + page_size = 4; + min_write_delay = 9000; + max_write_delay = 9000; + 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"; + 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; + readback = 0xff 0xff; + mode = 0x41; + 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--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" + 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 = 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 = 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.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; - chip_erase = "1010.1100--1000.0000--0000.0000--0000.0000"; - pgm_enable = "1010.1100--0101.0011--0000.0000--0000.0000"; + + 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 "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; +; + +#------------------------------------------------------------ +# 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; + ; +; + +#------------------------------------------------------------ +# 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 "m169" # 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 150; + n_interrupts = 25; + boot_section_size = 512; + stk500_devcode = 0x00; + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x04; + 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; + ; +; + +#------------------------------------------------------------ +# ATmega3290P +#------------------------------------------------------------ + +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 "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; +; + +#------------------------------------------------------------ +# ATmega3290A +#------------------------------------------------------------ + +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; + ; +; + +#------------------------------------------------------------ +# 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; + ; +; + +#------------------------------------------------------------ +# ATmega649 +#------------------------------------------------------------ + +part parent "m169" # m649 + desc = "ATmega649"; + id = "m649"; + 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; + 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; + resetdelay = 15; + ocdrev = 3; + + memory "eeprom" + 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.0aaa--iiii.iiii"; + writepage = "1100.0010--00xx.xaaa--aaaa.a000--xxxx.xxxx"; + ; + + memory "flash" + size = 0x10000; + page_size = 256; + num_pages = 256; + 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 "efuse" + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# ATmega649P +#------------------------------------------------------------ + +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 "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; +; + +#------------------------------------------------------------ +# ATmega649A +#------------------------------------------------------------ + +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 "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; +; + +#------------------------------------------------------------ +# ATmega6490 +#------------------------------------------------------------ + +part parent "m169" # 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG; + mcuid = 157; + n_interrupts = 25; + boot_section_size = 1024; + stk500_devcode = 0x00; + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x04; + reset = io; + resetdelay = 15; + ocdrev = 3; + + memory "eeprom" + 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.0aaa--iiii.iiii"; + writepage = "1100.0010--00xx.xaaa--aaaa.a000--xxxx.xxxx"; + ; + + memory "flash" + size = 0x10000; + page_size = 256; + num_pages = 256; + 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 "efuse" + bitmask = 0x07; + write = "1010.1100--1010.0100--xxxx.xxxx--xxxx.xiii"; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# ATmega6490P +#------------------------------------------------------------ + +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 "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; +; + +#------------------------------------------------------------ +# ATmega6490A +#------------------------------------------------------------ + +part parent "m6490" # 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; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; +; + +#------------------------------------------------------------ +# ATmega8HVA +#------------------------------------------------------------ + +part parent ".classic" # 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; + mcuid = 47; + archnum = 4; + n_interrupts = 21; + chip_erase_delay = 4000; + signature = 0x1e 0x93 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; + + 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 = 8192; + page_size = 128; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + 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 "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" + 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 = 512; + ; +; + +#------------------------------------------------------------ +# ATmega16HVA +#------------------------------------------------------------ + +part parent "m8hva" # 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]"; + mcuid = 51; + archnum = 5; + 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"; + ; +; + +#------------------------------------------------------------ +# ATmega32HVE2 +#------------------------------------------------------------ + +part parent ".classic" # 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE; + mcuid = 379; + archnum = 5; + n_interrupts = 25; + n_boot_sections = 4; + boot_section_size = 512; + chip_erase_delay = 4000; + signature = 0x1e 0x95 0x13; + 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; memory "eeprom" size = 1024; page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; + min_write_delay = 4000; + max_write_delay = 4000; mode = 0x41; - delay = 10; + delay = 20; blocksize = 4; readsize = 256; read = "1010.0000--0000.00aa--aaaa.aaaa--oooo.oooo"; @@ -15057,146 +13341,840 @@ part 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"; + 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" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# ATmega64HVE2 +#------------------------------------------------------------ + +part parent ".classic" # 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; + archnum = 5; + 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; + + 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" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# ATmega16HVB +#------------------------------------------------------------ + +part parent ".classic" # 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; + archnum = 5; + 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; + + 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" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; + ; + + memory "sram" + size = 1024; + ; +; + +#------------------------------------------------------------ +# 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; +; + +#------------------------------------------------------------ +# 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 = 54; + archnum = 5; + n_interrupts = 31; + n_boot_sections = 4; + boot_section_size = 512; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xe2; + signature = 0x1e 0x94 0x84; + 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; + + memory "eeprom" + size = 512; + page_size = 4; + min_write_delay = 3600; + max_write_delay = 3600; + 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 = 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"; + 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; - read = "0101.1000--0000.1000--0000.0000--oooo.oooo"; - write = "1010.1100--1010.1000--0000.0000--iiii.iiii"; + 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 = 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"; + 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" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; + ; + + memory "sram" + size = 1024; + ; +; + +#------------------------------------------------------------ +# 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 "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; + ; +; + +#------------------------------------------------------------ +# 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; + ; +; + +#------------------------------------------------------------ +# ATmega8U2 +#------------------------------------------------------------ + +part parent ".classic" # m8u2 + desc = "ATmega8U2"; + id = "m8u2"; + variants = + "ATmega8U2-AU: LQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8U2-AUR: TQFP32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8U2-MU: QFN32, Fmax=16 MHz, T=[-40 C, 85 C], Vcc=[2.7 V, 5.5 V]", + "ATmega8U2-MUR: VQFN32, 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 = 48; + archnum = 35; + n_interrupts = 29; + n_boot_sections = 4; + boot_section_size = 512; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xc6; + signature = 0x1e 0x93 0x89; + usbpid = 0x2fee; + 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; + + memory "eeprom" + size = 512; + page_size = 4; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + 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"; + 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 = 128; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + mode = 0x41; + delay = 6; + 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"; + ; + + memory "lfuse" size = 1; - initval = 0xff; + 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 = 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"; + ; + + memory "lock" 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"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; + memory "sram" + size = 512; ; ; #------------------------------------------------------------ -# ATmega325A +# ATmega16U2 #------------------------------------------------------------ -part parent "m325" - desc = "ATmega325A"; - id = "m325a"; +part parent "m8u2" # m16u2 + desc = "ATmega16U2"; + id = "m16u2"; 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; + "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; + ; ; #------------------------------------------------------------ -# ATmega325P +# ATmega32U2 #------------------------------------------------------------ -part parent "m325" - desc = "ATmega325P"; - id = "m325p"; +part parent "m8u2" # m32u2 + desc = "ATmega32U2"; + id = "m32u2"; 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; + "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 "eeprom" + size = 1024; + num_pages = 256; + ; + + memory "flash" + size = 0x8000; + num_pages = 256; + ; + + memory "sram" + size = 1024; + ; ; #------------------------------------------------------------ -# ATmega325PA +# ATmega16u4 #------------------------------------------------------------ -part parent "m325" - desc = "ATmega325PA"; - id = "m325pa"; +part parent ".classic" # m16u4 + desc = "ATmega16U4"; + id = "m16u4"; 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 -#------------------------------------------------------------ - -part - 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]"; + "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 = 132; - n_interrupts = 22; + mcuid = 57; + archnum = 5; + n_interrupts = 43; n_boot_sections = 4; - boot_section_size = 1024; -# stk500_devcode = 0x??; # No STK500v1 support? -# avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; + boot_section_size = 512; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; chip_erase_delay = 9000; pagel = 0xd7; bs2 = 0xa0; - signature = 0x1e 0x96 0x05; + signature = 0x1e 0x94 0x88; + usbpid = 0x2ff4; reset = io; timeout = 200; stabdelay = 100; @@ -15214,7 +14192,6 @@ part 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; latchcycles = 5; - togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; hvleavestabdelay = 15; @@ -15226,49 +14203,47 @@ part spmcr = 0x57; eecr = 0x3f; ocdrev = 3; - chip_erase = "1010.1100--1000.0000--0000.0000--0000.0000"; - pgm_enable = "1010.1100--0101.0011--0000.0000--0000.0000"; memory "eeprom" - size = 2048; - page_size = 8; + size = 512; + page_size = 4; min_write_delay = 9000; max_write_delay = 9000; 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--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"; ; memory "flash" paged = yes; - size = 0x10000; - page_size = 256; - num_pages = 256; + size = 0x4000; + page_size = 128; + num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; mode = 0x41; - delay = 10; + delay = 6; 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--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--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; + initval = 0x52; 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"; + read = "0101.0000--0000.0000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.0000--xxxx.xxxx--iiii.iiii"; ; memory "hfuse" @@ -15276,616 +14251,1052 @@ part 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"; + read = "0101.1000--0000.1000--xxxx.xxxx--oooo.oooo"; + write = "1010.1100--1010.1000--xxxx.xxxx--iiii.iiii"; + ; + + 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"; + ; + + memory "lock" + bitmask = 0x3f; + min_write_delay = 9000; + max_write_delay = 9000; + read = "0101.1000--0000.0000--xxxx.xxxx--00oo.oooo"; + ; + + memory "sram" + size = 1280; + ; +; + +#------------------------------------------------------------ +# ATmega32u4 +#------------------------------------------------------------ + +part parent "m16u4" # m32u4 + desc = "ATmega32U4"; + id = "m32u4"; + 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]"; + mcuid = 65; + signature = 0x1e 0x95 0x87; + + memory "eeprom" + 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"; + ; + + memory "flash" + size = 0x8000; + num_pages = 256; + ; + + memory "lock" + read = "0101.1000--0000.0000--xxxx.xxxx--oooo.oooo"; + ; + + memory "sram" + size = 2560; + ; +; + +#------------------------------------------------------------ +# ATmega406 +#------------------------------------------------------------ + +part parent ".classic" # m406 + desc = "ATmega406"; + id = "m406"; + 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; + archnum = 5; + 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; + chip_erase = NULL; + pgm_enable = NULL; + + memory "eeprom" + size = 512; + page_size = 4; + num_pages = 128; + blocksize = 4; + readsize = 4; + ; + + memory "flash" + paged = yes; + size = 0xa000; + page_size = 128; + num_pages = 320; + blocksize = 128; + readsize = 128; + ; + + memory "lfuse" + size = 1; + initval = 0xcd; + ; + + memory "hfuse" + size = 1; + initval = 0xfe; + bitmask = 0x03; + ; + + memory "lock" = NULL; + + memory "lockbits" + size = 1; + initval = 0xff; + bitmask = 0x3f; + ; + + memory "prodsig" + read = NULL; + ; + + memory "signature" + read = NULL; + ; + + memory "calibration" + read = NULL; + ; + + memory "sernum" + read = NULL; + ; +; + +#------------------------------------------------------------ +# ATA6612C +#------------------------------------------------------------ + +part parent ".classic" # 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 216; + archnum = 4; + n_interrupts = 26; + n_boot_sections = 4; + boot_section_size = 256; + stk500_devcode = 0x73; + chip_erase_delay = 4000; + pagel = 0xd7; + bs2 = 0xc2; + signature = 0x1e 0x93 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, 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; + + memory "eeprom" + size = 512; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + 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 "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--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; + 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 = 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 "lock" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; + ; + + memory "sram" + size = 1024; + ; +; + +#------------------------------------------------------------ +# ATA6613C +#------------------------------------------------------------ + +part parent "ata6612c" # 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; + archnum = 5; + stk500_devcode = 0x86; + chip_erase_delay = 9000; + signature = 0x1e 0x94 0x06; + + memory "eeprom" + min_write_delay = 3600; + max_write_delay = 3600; + ; + + 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"; + ; +; + +#------------------------------------------------------------ +# ATA6616C +#------------------------------------------------------------ + +part parent ".classic" # 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 219; + archnum = 25; + 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 "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 "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"; + ; + + 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 = 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 "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 = 512; + ; +; + +#------------------------------------------------------------ +# ATA6617C +#------------------------------------------------------------ + +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; + archnum = 35; + signature = 0x1e 0x94 0x87; + + 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--aaxx.xxxx--xxxx.xxxx"; + ; +; + +#------------------------------------------------------------ +# 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; + archnum = 35; + 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 "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 "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 = 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 "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 = 512; + ; +; + +#------------------------------------------------------------ +# ATA6614Q +#------------------------------------------------------------ + +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; + archnum = 5; + 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; + + 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 "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 = 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 = 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"; + 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 "lock" + bitmask = 0x3f; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0101.1000--0000.0000--xxxx.xxxx--11oo.oooo"; + ; +; + +#------------------------------------------------------------ +# ATA664251 +#------------------------------------------------------------ + +part parent ".classic" # 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]"; + prog_modes = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE; + mcuid = 225; + archnum = 35; + 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 "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 "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 = 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 "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 = 512; + ; +; + +#------------------------------------------------------------ +# 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; + ; +; + +#------------------------------------------------------------ +# 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; + archnum = 1; + 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 "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"; + 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 "signature" size = 3; - read = "0011.0000--0000.0000--0000.00aa--oooo.oooo"; - ; - - memory "calibration" - size = 1; - read = "0011.1000--0000.0000--0000.0000--oooo.oooo"; + 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"; ; ; #------------------------------------------------------------ -# ATmega645A +# AT89S52 #------------------------------------------------------------ -part parent "m645" - desc = "ATmega645A"; - id = "m645a"; +part parent "89S51" # 89S52 + desc = "AT89S52"; + id = "89S52"; 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; + "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; + ; ; #------------------------------------------------------------ -# ATmega645P +# AVR XMEGA-C/D family common values #------------------------------------------------------------ -part parent "m645" - 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" - 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" - 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" - 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" - 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 -#------------------------------------------------------------ - -part parent "m645" - desc = "ATmega6450"; - id = "m6450"; - 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; -; - -#------------------------------------------------------------ -# ATmega6450A -#------------------------------------------------------------ - -part parent "m645" - 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; -; - -#------------------------------------------------------------ -# ATmega6450P -#------------------------------------------------------------ - -part parent "m645" - desc = "ATmega6450P"; - id = "m6450p"; - 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 family common values -#------------------------------------------------------------ - -part - 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; nvm_base = 0x01c0; autobaud_sync = 0x20; - - memory "fuse1" - size = 1; - initval = 0x00; - offset = 0x8f0021; - ; - - memory "fuse2" - size = 1; - initval = 0xff; - bitmask = 0x63; - offset = 0x8f0022; - ; - - memory "fuse4" - size = 1; - initval = 0xff; - bitmask = 0x1e; - offset = 0x8f0024; - ; - - memory "fuse5" - size = 1; - initval = 0xff; - bitmask = 0x3f; - offset = 0x8f0025; - ; - - memory "lock" - size = 1; - initval = 0xff; - offset = 0x8f0027; - ; - - memory "signature" - size = 3; - offset = 0x1000090; - ; - - memory "prodsig" - size = 50; - page_size = 50; - offset = 0x8e0200; - readsize = 50; - ; - - memory "data" - # SRAM, only used to supply the offset - offset = 0x1000000; - ; -; - -#------------------------------------------------------------ -# AVR XMEGA-E family common values -#------------------------------------------------------------ - -# Fuse for fault detection action on Px0..5 (unique to XMEGA-E) - -part parent ".xmega" - desc = "AVR XMEGA-E family common values"; - id = ".xmega-e"; - - memory "fuse6" - size = 1; - initval = 0xff; - offset = 0x8f0026; - ; -; - -#------------------------------------------------------------ -# AVR XMEGA-A family common values -#------------------------------------------------------------ - -# JTAG user ID (unique to XMEGA-A and XMEGA-B) - -part parent ".xmega" - desc = "AVR XMEGA-A family common values"; - id = ".xmega-a"; - - memory "fuse0" - size = 1; - initval = 0xff; - offset = 0x8f0020; - ; - - memory "fuse4" - bitmask = 0x1f; - ; -; - -#------------------------------------------------------------ -# ATxmega16A4U -#------------------------------------------------------------ - -part parent ".xmega-a" - desc = "ATxmega16A4U"; - id = "x16a4u"; - 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]"; - mcuid = 232; - n_interrupts = 127; - boot_section_size = 4096; - signature = 0x1e 0x94 0x41; - usbpid = 0x2fe3; - - 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 "usersig" - size = 256; - page_size = 256; - offset = 0x8e0400; - readsize = 256; - ; -; - -#------------------------------------------------------------ -# ATxmega16C4 -#------------------------------------------------------------ - -part parent "x16a4u" - 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; - signature = 0x1e 0x94 0x43; - - memory "fuse0" = NULL; - - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; - ; -; - -#------------------------------------------------------------ -# ATxmega16D4 -#------------------------------------------------------------ - -part parent "x16a4u" - 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; - signature = 0x1e 0x94 0x42; - - memory "fuse0" = NULL; - - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; - ; -; - -#------------------------------------------------------------ -# ATxmega16A4 -#------------------------------------------------------------ - -part parent "x16a4u" - 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]"; - mcuid = 231; - n_interrupts = 94; - - memory "fuse2" - bitmask = 0x43; - ; -; - -#------------------------------------------------------------ -# ATxmega32A4U -#------------------------------------------------------------ - -part parent ".xmega-a" - desc = "ATxmega32A4U"; - id = "x32a4u"; - 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]"; - mcuid = 239; - n_interrupts = 127; - boot_section_size = 4096; - signature = 0x1e 0x95 0x41; - usbpid = 0x2fe4; - - 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 "usersig" - size = 256; - page_size = 256; - offset = 0x8e0400; - readsize = 256; - ; -; - -#------------------------------------------------------------ -# ATxmega32C4 -#------------------------------------------------------------ - -part parent "x32a4u" - 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; - signature = 0x1e 0x95 0x44; - - memory "fuse0" = NULL; - - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; - ; -; - -#------------------------------------------------------------ -# ATxmega32D4 -#------------------------------------------------------------ - -part parent "x32a4u" - 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; - signature = 0x1e 0x95 0x42; - - memory "fuse0" = NULL; - - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; - ; -; - -#------------------------------------------------------------ -# ATxmega32A4 -#------------------------------------------------------------ - -part parent "x32a4u" - 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]"; - mcuid = 238; - n_interrupts = 94; - - memory "fuse2" - bitmask = 0x43; - ; -; - -#------------------------------------------------------------ -# ATxmega64A4U -#------------------------------------------------------------ - -part parent ".xmega-a" - 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]"; - mcuid = 252; - n_interrupts = 127; - boot_section_size = 4096; - signature = 0x1e 0x96 0x46; - usbpid = 0x2fe5; + factory_fcpu = 2000000; memory "eeprom" size = 2048; @@ -15922,8 +15333,79 @@ part parent ".xmega-a" 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; + offset = 0x8f0021; + ; + + memory "fuse2" + size = 1; + initval = 0xff; + bitmask = 0x63; + offset = 0x8f0022; + ; + memory "fuse4" - initval = 0xfe; + size = 1; + initval = 0xff; + bitmask = 0x1e; + offset = 0x8f0024; + ; + + memory "fuse5" + size = 1; + initval = 0xff; + bitmask = 0x3f; + offset = 0x8f0025; + ; + + 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" @@ -15932,13 +15414,556 @@ part parent ".xmega-a" offset = 0x8e0400; readsize = 256; ; + + memory "io" + size = 4096; + readsize = 1; + ; + + memory "sram" + offset = 0x2000; + ; +; + +#------------------------------------------------------------ +# AVR XMEGA-E family common values +#------------------------------------------------------------ + +# 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; + + 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/B family common values +#------------------------------------------------------------ + +# 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 = 52; + readsize = 52; + ; + + memory "calibration" + size = 4; + ; +; + +#------------------------------------------------------------ +# ATxmega16A4U +#------------------------------------------------------------ + +part parent ".xmega-ab" # x16a4u + desc = "ATxmega16A4U"; + id = "x16a4u"; + 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; + archnum = 102; + n_interrupts = 127; + boot_section_size = 4096; + signature = 0x1e 0x94 0x41; + usbpid = 0x2fe3; + + memory "eeprom" + size = 1024; + ; + + memory "flash" + size = 0x5000; + ; + + memory "application" + size = 0x4000; + ; + + memory "apptable" + offset = 0x803000; + ; + + memory "boot" + offset = 0x804000; + ; + + memory "sram" + size = 2048; + ; +; + +#------------------------------------------------------------ +# ATxmega16C4 +#------------------------------------------------------------ + +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; + archnum = 102; + 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; + ; + + memory "apptable" + offset = 0x803000; + ; + + memory "boot" + offset = 0x804000; + ; + + memory "prodsig" + page_size = 64; + ; + + memory "sram" + size = 2048; + ; +; + +#------------------------------------------------------------ +# ATxmega16D4 +#------------------------------------------------------------ + +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; + archnum = 102; + 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; + ; + + memory "apptable" + offset = 0x803000; + ; + + memory "boot" + offset = 0x804000; + ; + + memory "prodsig" + size = 52; + readsize = 52; + ; + + memory "sram" + size = 2048; + ; +; + +#------------------------------------------------------------ +# ATxmega16A4 +#------------------------------------------------------------ + +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; + archnum = 102; + 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" + offset = 0x803000; + ; + + memory "boot" + offset = 0x804000; + ; + + memory "fuse2" + bitmask = 0x43; + ; + + memory "sram" + size = 2048; + ; +; + +#------------------------------------------------------------ +# ATxmega32A4U +#------------------------------------------------------------ + +part parent ".xmega-ab" # x32a4u + desc = "ATxmega32A4U"; + id = "x32a4u"; + 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]"; + prog_modes = PM_SPM | PM_PDI; + mcuid = 239; + archnum = 102; + n_interrupts = 127; + boot_section_size = 4096; + signature = 0x1e 0x95 0x41; + usbpid = 0x2fe4; + + memory "eeprom" + size = 1024; + ; + + memory "flash" + size = 0x9000; + ; + + memory "application" + size = 0x8000; + ; + + memory "apptable" + offset = 0x807000; + ; + + memory "boot" + offset = 0x808000; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# 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; + archnum = 102; + n_interrupts = 127; + boot_section_size = 4096; + 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; + ; +; + +#------------------------------------------------------------ +# 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; + archnum = 102; + n_interrupts = 91; + boot_section_size = 4096; + signature = 0x1e 0x95 0x42; + usbpid = 0x2fe4; + + memory "eeprom" + size = 1024; + ; + + memory "flash" + size = 0x9000; + ; + + memory "application" + size = 0x8000; + ; + + memory "apptable" + offset = 0x807000; + ; + + memory "boot" + offset = 0x808000; + ; + + memory "prodsig" + size = 52; + readsize = 52; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# ATxmega32A4 +#------------------------------------------------------------ + +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; + archnum = 102; + 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" + offset = 0x807000; + ; + + memory "boot" + offset = 0x808000; + ; + + memory "fuse2" + bitmask = 0x43; + ; + + memory "sram" + size = 4096; + ; +; + +#------------------------------------------------------------ +# ATxmega64A4U +#------------------------------------------------------------ + +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; + archnum = 104; + n_interrupts = 127; + boot_section_size = 4096; + signature = 0x1e 0x96 0x46; + usbpid = 0x2fe5; + + memory "prodsig" + size = 64; + page_size = 64; + readsize = 64; + ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega32C3 #------------------------------------------------------------ -part parent "x32a4u" +part parent ".xmega-cd" # x32c3 desc = "ATxmega32C3"; id = "x32c3"; variants = @@ -15950,13 +15975,38 @@ part parent "x32a4u" "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; + archnum = 102; + 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" + offset = 0x807000; + ; + + memory "boot" + offset = 0x808000; + ; + + memory "prodsig" + page_size = 64; + ; + + memory "sram" + size = 4096; ; ; @@ -15964,7 +16014,7 @@ part parent "x32a4u" # ATxmega32D3 #------------------------------------------------------------ -part parent "x32a4u" +part parent ".xmega-cd" # x32d3 desc = "ATxmega32D3"; id = "x32d3"; variants = @@ -15976,14 +16026,39 @@ part parent "x32a4u" "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; + archnum = 102; 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" + offset = 0x807000; + ; + + memory "boot" + offset = 0x808000; + ; + + memory "prodsig" + size = 52; + readsize = 52; + ; + + memory "sram" + size = 4096; ; ; @@ -15991,7 +16066,7 @@ part parent "x32a4u" # ATxmega64C3 #------------------------------------------------------------ -part parent "x64a4u" +part parent ".xmega-cd" # x64c3 desc = "ATxmega64C3"; id = "x64c3"; variants = @@ -16003,14 +16078,18 @@ part parent "x64a4u" "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; + archnum = 104; + n_interrupts = 127; + boot_section_size = 4096; signature = 0x1e 0x96 0x49; usbpid = 0x2fd6; - memory "fuse0" = NULL; + memory "prodsig" + page_size = 64; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "sram" + size = 4096; ; ; @@ -16018,7 +16097,7 @@ part parent "x64a4u" # ATxmega64D3 #------------------------------------------------------------ -part parent "x64a4u" +part parent ".xmega-cd" # x64d3 desc = "ATxmega64D3"; id = "x64d3"; variants = @@ -16031,14 +16110,19 @@ part parent "x64a4u" "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; + archnum = 104; n_interrupts = 114; + boot_section_size = 4096; signature = 0x1e 0x96 0x4a; + usbpid = 0x2fe5; - memory "fuse0" = NULL; + memory "prodsig" + size = 52; + readsize = 52; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "sram" + size = 4096; ; ; @@ -16046,7 +16130,7 @@ part parent "x64a4u" # ATxmega64D4 #------------------------------------------------------------ -part parent "x64a4u" +part parent ".xmega-cd" # x64d4 desc = "ATxmega64D4"; id = "x64d4"; variants = @@ -16059,14 +16143,18 @@ part parent "x64a4u" "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; + archnum = 104; n_interrupts = 91; + boot_section_size = 4096; signature = 0x1e 0x96 0x47; + usbpid = 0x2fe5; - memory "fuse0" = NULL; + memory "prodsig" + page_size = 64; + ; - memory "fuse4" - initval = 0xff; - bitmask = 0x1e; + memory "sram" + size = 4096; ; ; @@ -16074,7 +16162,7 @@ part parent "x64a4u" # ATxmega64A1 #------------------------------------------------------------ -part parent "x64a4u" +part parent ".xmega-ab" # x64a1 desc = "ATxmega64A1"; id = "x64a1"; variants = @@ -16085,21 +16173,27 @@ part parent "x64a4u" "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; + archnum = 105; n_interrupts = 125; + boot_section_size = 4096; signature = 0x1e 0x96 0x4e; + usbpid = 0x2fe5; memory "fuse2" bitmask = 0x43; ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega64A1U #------------------------------------------------------------ -part parent "x64a1" +part parent ".xmega-ab" # x64a1u desc = "ATxmega64A1U"; id = "x64a1u"; variants = @@ -16111,11 +16205,20 @@ part parent "x64a1" "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; + archnum = 105; n_interrupts = 127; + boot_section_size = 4096; + signature = 0x1e 0x96 0x4e; usbpid = 0x2fe8; - memory "fuse2" - bitmask = 0x63; + memory "prodsig" + size = 64; + page_size = 64; + readsize = 64; + ; + + memory "sram" + size = 4096; ; ; @@ -16123,7 +16226,7 @@ part parent "x64a1" # ATxmega64A3 #------------------------------------------------------------ -part parent "x64a1" +part parent ".xmega-ab" # x64a3 desc = "ATxmega64A3"; id = "x64a3"; variants = @@ -16134,15 +16237,26 @@ part parent "x64a1" "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; + archnum = 104; n_interrupts = 122; + boot_section_size = 4096; signature = 0x1e 0x96 0x42; + usbpid = 0x2fe5; + + memory "fuse2" + bitmask = 0x43; + ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega64A3U #------------------------------------------------------------ -part parent "x64a1" +part parent ".xmega-ab" # x64a3u desc = "ATxmega64A3U"; id = "x64a3u"; variants = @@ -16153,11 +16267,14 @@ part parent "x64a1" "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; + archnum = 104; n_interrupts = 127; + boot_section_size = 4096; signature = 0x1e 0x96 0x42; + usbpid = 0x2fe5; - memory "fuse2" - bitmask = 0x63; + memory "sram" + size = 4096; ; ; @@ -16165,13 +16282,17 @@ part parent "x64a1" # ATxmega64A4 #------------------------------------------------------------ -part parent "x64a1" +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; + archnum = 104; + n_interrupts = 125; + boot_section_size = 4096; signature = 0x1e 0x96 0x46; + usbpid = 0x2fe5; memory "fuse0" initval = -1; @@ -16199,13 +16320,17 @@ part parent "x64a1" memory "lock" initval = -1; ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega64B1 #------------------------------------------------------------ -part parent "x64a1" +part parent ".xmega-ab" # x64b1 desc = "ATxmega64B1"; id = "x64b1"; variants = @@ -16214,24 +16339,30 @@ part parent "x64a1" "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; + archnum = 104; n_interrupts = 81; + boot_section_size = 4096; signature = 0x1e 0x96 0x52; usbpid = 0x2fe1; - memory "fuse2" - bitmask = 0x63; - ; - memory "fuse4" initval = 0xff; ; + + memory "calibration" + size = 5; + ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega64B3 #------------------------------------------------------------ -part parent "x64a1" +part parent ".xmega-ab" # x64b3 desc = "ATxmega64B3"; id = "x64b3"; variants = @@ -16239,24 +16370,30 @@ part parent "x64a1" "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; + archnum = 104; n_interrupts = 54; + boot_section_size = 4096; signature = 0x1e 0x96 0x51; usbpid = 0x2fdf; - memory "fuse2" - bitmask = 0x63; - ; - memory "fuse4" initval = 0xff; ; + + memory "calibration" + size = 5; + ; + + memory "sram" + size = 4096; + ; ; #------------------------------------------------------------ # ATxmega128C3 #------------------------------------------------------------ -part parent ".xmega" +part parent ".xmega-cd" # x128c3 desc = "ATxmega128C3"; id = "x128c3"; variants = @@ -16267,51 +16404,45 @@ part parent ".xmega" "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; + archnum = 106; n_interrupts = 127; boot_section_size = 8192; signature = 0x1e 0x97 0x52; usbpid = 0x2fd7; - 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" + page_size = 64; ; memory "usersig" size = 512; page_size = 512; - offset = 0x8e0400; - readsize = 256; + ; + + memory "sram" + size = 8192; ; ; @@ -16319,7 +16450,7 @@ part parent ".xmega" # ATxmega128D3 #------------------------------------------------------------ -part parent "x128c3" +part parent ".xmega-cd" # x128d3 desc = "ATxmega128D3"; id = "x128d3"; variants = @@ -16331,15 +16462,54 @@ part parent "x128c3" "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; + archnum = 106; n_interrupts = 114; + boot_section_size = 8192; signature = 0x1e 0x97 0x48; + 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; + ; + + memory "prodsig" + size = 52; + readsize = 52; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 8192; + ; ; #------------------------------------------------------------ # ATxmega128D4 #------------------------------------------------------------ -part parent "x128c3" +part parent ".xmega-cd" # x128d4 desc = "ATxmega128D4"; id = "x128d4"; variants = @@ -16352,11 +16522,44 @@ part parent "x128c3" "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; + archnum = 106; n_interrupts = 91; + boot_section_size = 8192; signature = 0x1e 0x97 0x47; + usbpid = 0x2fd7; 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; ; ; @@ -16364,7 +16567,7 @@ part parent "x128c3" # ATxmega128A1 #------------------------------------------------------------ -part parent "x128c3" +part parent ".xmega-ab" # x128a1 desc = "ATxmega128A1"; id = "x128a1"; variants = @@ -16375,24 +16578,46 @@ part parent "x128c3" "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; + archnum = 107; n_interrupts = 125; + boot_section_size = 8192; signature = 0x1e 0x97 0x4c; + usbpid = 0x2fd7; - memory "fuse0" - size = 1; - initval = 0xff; - offset = 0x8f0020; + 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 "sram" + size = 8192; ; ; @@ -16400,7 +16625,7 @@ part parent "x128c3" # ATxmega128A1 revision D #------------------------------------------------------------ -part parent "x128a1" +part parent "x128a1" # x128a1d desc = "ATxmega128A1revD"; id = "x128a1d"; mcuid = 255; @@ -16411,7 +16636,7 @@ part parent "x128a1" # ATxmega128A1U #------------------------------------------------------------ -part parent "x128a1" +part parent ".xmega-ab" # x128a1u desc = "ATxmega128A1U"; id = "x128a1u"; variants = @@ -16424,11 +16649,47 @@ part parent "x128a1" "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; + archnum = 107; n_interrupts = 127; + boot_section_size = 8192; + signature = 0x1e 0x97 0x4c; usbpid = 0x2fed; - memory "fuse2" - bitmask = 0x63; + 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 = 64; + page_size = 64; + readsize = 64; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 8192; ; ; @@ -16436,7 +16697,7 @@ part parent "x128a1" # ATxmega128A3 #------------------------------------------------------------ -part parent "x128a1" +part parent ".xmega-ab" # x128a3 desc = "ATxmega128A3"; id = "x128a3"; variants = @@ -16447,15 +16708,53 @@ part parent "x128a1" "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; + archnum = 106; 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; + ; + + memory "fuse2" + bitmask = 0x43; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 8192; + ; ; #------------------------------------------------------------ # ATxmega128A3U #------------------------------------------------------------ -part parent "x128a1" +part parent ".xmega-ab" # x128a3u desc = "ATxmega128A3U"; id = "x128a3u"; variants = @@ -16466,12 +16765,41 @@ part parent "x128a1" "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; + archnum = 106; n_interrupts = 127; + boot_section_size = 8192; signature = 0x1e 0x97 0x42; usbpid = 0x2fe6; - memory "fuse2" - bitmask = 0x63; + 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; ; ; @@ -16479,53 +16807,38 @@ part parent "x128a1" # ATxmega128A4 #------------------------------------------------------------ -part parent ".xmega" +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; + archnum = 107; + boot_section_size = 8192; 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" @@ -16551,11 +16864,18 @@ part parent ".xmega" initval = -1; ; + memory "prodsig" + size = 50; + readsize = 50; + ; + memory "usersig" size = 512; page_size = 512; - offset = 0x8e0400; - readsize = 256; + ; + + memory "sram" + size = 8192; ; ; @@ -16563,7 +16883,7 @@ part parent ".xmega" # ATxmega128A4U #------------------------------------------------------------ -part parent ".xmega-a" +part parent ".xmega-ab" # x128a4u desc = "ATxmega128A4U"; id = "x128a4u"; variants = @@ -16574,56 +16894,39 @@ part parent ".xmega-a" "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; + archnum = 107; n_interrupts = 127; boot_section_size = 8192; signature = 0x1e 0x97 0x46; usbpid = 0x2fde; - 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" + size = 64; + page_size = 64; + readsize = 64; ; - memory "usersig" - size = 256; - page_size = 256; - offset = 0x8e0400; - readsize = 256; + memory "sram" + size = 8192; ; ; @@ -16631,7 +16934,7 @@ part parent ".xmega-a" # ATxmega128B1 #------------------------------------------------------------ -part parent ".xmega" +part parent ".xmega-ab" # x128b1 desc = "ATxmega128B1"; id = "x128b1"; variants = @@ -16640,63 +16943,41 @@ part parent ".xmega" "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; + archnum = 106; n_interrupts = 81; boot_section_size = 8192; signature = 0x1e 0x97 0x4d; usbpid = 0x2fea; - 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; + initval = 0xff; ; - memory "usersig" - size = 256; - page_size = 256; - offset = 0x8e0400; - readsize = 256; + memory "calibration" + size = 5; + ; + + memory "sram" + size = 8192; ; ; @@ -16704,7 +16985,7 @@ part parent ".xmega" # ATxmega128B3 #------------------------------------------------------------ -part parent "x128b1" +part parent ".xmega-ab" # x128b3 desc = "ATxmega128B3"; id = "x128b3"; variants = @@ -16715,16 +16996,48 @@ part parent "x128b1" "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; + archnum = 106; 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; + ; + + memory "fuse4" + initval = 0xff; + ; + + memory "calibration" + size = 5; + ; + + memory "sram" + size = 8192; + ; ; #------------------------------------------------------------ # ATxmega192C3 #------------------------------------------------------------ -part parent ".xmega" +part parent ".xmega-cd" # x192c3 desc = "ATxmega192C3"; id = "x192c3"; variants = @@ -16733,52 +17046,44 @@ part parent ".xmega" "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; + archnum = 106; n_interrupts = 127; boot_section_size = 8192; signature = 0x1e 0x97 0x51; -# usbpid = 0x2f??; - - 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" + page_size = 64; ; memory "usersig" size = 512; page_size = 512; - offset = 0x8e0400; - readsize = 256; + ; + + memory "sram" + size = 0x4000; ; ; @@ -16786,7 +17091,7 @@ part parent ".xmega" # ATxmega192D3 #------------------------------------------------------------ -part parent "x192c3" +part parent ".xmega-cd" # x192d3 desc = "ATxmega192D3"; id = "x192d3"; variants = @@ -16798,27 +17103,88 @@ part parent "x192c3" "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; + archnum = 106; n_interrupts = 114; + boot_section_size = 8192; signature = 0x1e 0x97 0x49; + + 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; + readsize = 52; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x4000; + ; ; #------------------------------------------------------------ # ATxmega192A1 #------------------------------------------------------------ -part parent "x192c3" +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; + archnum = 107; + n_interrupts = 127; + boot_section_size = 8192; signature = 0x1e 0x97 0x4e; + 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" @@ -16843,13 +17209,28 @@ part parent "x192c3" memory "lock" initval = -1; ; + + memory "prodsig" + size = 64; + page_size = 64; + readsize = 64; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x4000; + ; ; #------------------------------------------------------------ # ATxmega192A3 #------------------------------------------------------------ -part parent "x192c3" +part parent ".xmega-ab" # x192a3 desc = "ATxmega192A3"; id = "x192a3"; variants = @@ -16859,24 +17240,45 @@ part parent "x192c3" "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; + archnum = 106; n_interrupts = 122; + boot_section_size = 8192; signature = 0x1e 0x97 0x44; - memory "fuse0" - size = 1; - initval = 0xff; - offset = 0x8f0020; + 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 "sram" + size = 0x4000; ; ; @@ -16884,7 +17286,7 @@ part parent "x192c3" # ATxmega192A3U #------------------------------------------------------------ -part parent "x192a1" +part parent ".xmega-ab" # x192a3u desc = "ATxmega192A3U"; id = "x192a3u"; variants = @@ -16896,34 +17298,41 @@ part parent "x192a1" "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; + archnum = 106; + n_interrupts = 127; + boot_section_size = 8192; signature = 0x1e 0x97 0x44; usbpid = 0x2fe7; - memory "fuse0" - initval = 0xff; + memory "flash" + size = 0x32000; + page_size = 512; ; - memory "fuse1" - initval = 0x00; + memory "application" + size = 0x30000; + page_size = 512; ; - memory "fuse2" - initval = 0xff; - bitmask = 0x63; + memory "apptable" + size = 8192; + page_size = 512; + offset = 0x82e000; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "boot" + size = 8192; + page_size = 512; + offset = 0x830000; ; - memory "fuse5" - initval = 0xff; - bitmask = 0x3f; + memory "usersig" + size = 512; + page_size = 512; ; - memory "lock" - initval = 0xff; + memory "sram" + size = 0x4000; ; ; @@ -16931,7 +17340,7 @@ part parent "x192a1" # ATxmega256C3 #------------------------------------------------------------ -part parent ".xmega" +part parent ".xmega-cd" # x256c3 desc = "ATxmega256C3"; id = "x256c3"; variants = @@ -16942,6 +17351,7 @@ part parent ".xmega" "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; + archnum = 106; n_interrupts = 127; boot_section_size = 8192; signature = 0x1e 0x98 0x46; @@ -16949,44 +17359,41 @@ part parent ".xmega" 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" + page_size = 64; ; memory "usersig" size = 512; page_size = 512; - offset = 0x8e0400; - readsize = 256; + ; + + memory "sram" + size = 0x4000; ; ; @@ -16994,7 +17401,7 @@ part parent ".xmega" # ATxmega256D3 #------------------------------------------------------------ -part parent "x256c3" +part parent ".xmega-cd" # x256d3 desc = "ATxmega256D3"; id = "x256d3"; variants = @@ -17006,26 +17413,98 @@ part parent "x256c3" "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; + archnum = 106; 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; + readsize = 52; + ; + + memory "usersig" + size = 512; + page_size = 512; + ; + + memory "sram" + size = 0x4000; + ; ; #------------------------------------------------------------ # ATxmega256A1 #------------------------------------------------------------ -part parent "x256c3" +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; + archnum = 107; + 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" @@ -17050,13 +17529,28 @@ part parent "x256c3" 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" +part parent ".xmega-ab" # x256a3 desc = "ATxmega256A3"; id = "x256a3"; variants = @@ -17067,34 +17561,49 @@ part parent "x256a1" "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; + archnum = 106; 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 "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 "fuse2" - initval = 0xff; bitmask = 0x43; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "usersig" + size = 512; + page_size = 512; ; - memory "fuse5" - initval = 0xff; - bitmask = 0x3f; - ; - - memory "lock" - initval = 0xff; + memory "sram" + size = 0x4000; ; ; @@ -17102,7 +17611,7 @@ part parent "x256a1" # ATxmega256A3U #------------------------------------------------------------ -part parent "x256a1" +part parent ".xmega-ab" # x256a3u desc = "ATxmega256A3U"; id = "x256a3u"; variants = @@ -17114,34 +17623,45 @@ part parent "x256a1" "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; + archnum = 106; + 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 "sram" + size = 0x4000; ; ; @@ -17149,7 +17669,7 @@ part parent "x256a1" # ATxmega256A3B #------------------------------------------------------------ -part parent "x256a1" +part parent ".xmega-ab" # x256a3b desc = "ATxmega256A3B"; id = "x256a3b"; variants = @@ -17159,34 +17679,49 @@ part parent "x256a1" "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; + archnum = 106; 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 "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 "fuse2" - initval = 0xff; bitmask = 0x43; ; - memory "fuse4" - initval = 0xfe; - bitmask = 0x1f; + memory "usersig" + size = 512; + page_size = 512; ; - memory "fuse5" - initval = 0xff; - bitmask = 0x3f; - ; - - memory "lock" - initval = 0xff; + memory "sram" + size = 0x4000; ; ; @@ -17194,7 +17729,7 @@ part parent "x256a1" # ATxmega256A3BU #------------------------------------------------------------ -part parent "x256a1" +part parent ".xmega-ab" # x256a3bu desc = "ATxmega256A3BU"; id = "x256a3bu"; variants = @@ -17203,34 +17738,45 @@ part parent "x256a1" "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; + archnum = 106; + 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 "sram" + size = 0x4000; ; ; @@ -17238,7 +17784,7 @@ part parent "x256a1" # ATxmega384C3 #------------------------------------------------------------ -part parent ".xmega" +part parent ".xmega-cd" # x384c3 desc = "ATxmega384C3"; id = "x384c3"; variants = @@ -17249,6 +17795,7 @@ part parent ".xmega" "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; + archnum = 106; n_interrupts = 127; boot_section_size = 8192; signature = 0x1e 0x98 0x45; @@ -17256,44 +17803,41 @@ part parent ".xmega" 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" + page_size = 64; ; memory "usersig" size = 512; page_size = 512; - offset = 0x8e0400; - readsize = 256; + ; + + memory "sram" + size = 0x8000; ; ; @@ -17301,7 +17845,7 @@ part parent ".xmega" # ATxmega384D3 #------------------------------------------------------------ -part parent "x384c3" +part parent ".xmega-cd" # x384d3 desc = "ATxmega384D3"; id = "x384d3"; variants = @@ -17311,15 +17855,57 @@ part parent "x384c3" "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; + archnum = 106; 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; + ; ; #------------------------------------------------------------ # ATxmega8E5 #------------------------------------------------------------ -part parent ".xmega-e" +part parent ".xmega-e" # x8e5 desc = "ATxmega8E5"; id = "x8e5"; variants = @@ -17335,54 +17921,34 @@ part parent ".xmega-e" "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; + archnum = 102; 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 "usersig" - size = 128; - page_size = 128; - offset = 0x8e0400; - readsize = 256; + memory "sram" + size = 1024; ; ; @@ -17390,7 +17956,7 @@ part parent ".xmega-e" # ATxmega16E5 #------------------------------------------------------------ -part parent ".xmega-e" +part parent ".xmega-e" # x16e5 desc = "ATxmega16E5"; id = "x16e5"; variants = @@ -17406,54 +17972,32 @@ part parent ".xmega-e" "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; + archnum = 102; 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 "usersig" - size = 128; - page_size = 128; - offset = 0x8e0400; - readsize = 256; + memory "sram" + size = 2048; ; ; @@ -17461,7 +18005,7 @@ part parent ".xmega-e" # ATxmega32E5 #------------------------------------------------------------ -part parent ".xmega-e" +part parent ".xmega-e" # x32e5 desc = "ATxmega32E5"; id = "x32e5"; variants = @@ -17477,54 +18021,32 @@ part parent ".xmega-e" "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; + archnum = 102; 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 "usersig" - size = 128; - page_size = 128; - offset = 0x8e0400; - readsize = 256; + memory "sram" + size = 4096; ; ; @@ -17532,7 +18054,7 @@ part parent ".xmega-e" # AVR32UC3A0512 #------------------------------------------------------------ -part +part # uc3a0512 desc = "AT32UC3A0512"; id = "uc3a0512"; variants = @@ -17559,514 +18081,11 @@ part ; ; -#------------------------------------------------------------ -# deprecated, use 'uc3a0512' -#------------------------------------------------------------ - -part parent "uc3a0512" - desc = "deprecated, use 'uc3a0512'"; - id = "ucr2"; -; - -#------------------------------------------------------------ -# ATtiny1634 -#------------------------------------------------------------ - -part - 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; - 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 = 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 "flash" - paged = yes; - 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"; - ; - - 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 "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 = 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 "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 "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"; - ; -; - -#------------------------------------------------------------ -# ATtiny1634R -#------------------------------------------------------------ - -part parent "t1634" - desc = "ATtiny1634R"; - id = "t1634r"; - 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; -; - -#------------------------------------------------------------ -# Common values for reduced core tinys (4/5/9/10/20/40) -#------------------------------------------------------------ - -part - desc = "Common values for reduced core tinys"; - id = ".reduced_core_tiny"; - prog_modes = PM_TPI; - - memory "fuse" - size = 1; - page_size = 16; - initval = 0xff; - bitmask = 0x07; - offset = 0x3f40; - blocksize = 4; - ; - - memory "lockbits" - size = 1; - page_size = 16; - initval = 0xff; - bitmask = 0x03; - offset = 0x3f00; - ; - - memory "signature" - size = 3; - page_size = 16; - offset = 0x3fc0; - ; - - memory "calibration" - size = 1; - page_size = 16; - offset = 0x3f80; - ; -; - -#------------------------------------------------------------ -# ATtiny4 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - desc = "ATtiny4"; - id = "t4"; - 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; - - memory "flash" - size = 512; - page_size = 16; - offset = 0x4000; - blocksize = 128; - ; -; - -#------------------------------------------------------------ -# ATtiny5 -#------------------------------------------------------------ - -part parent "t4" - 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; -; - -#------------------------------------------------------------ -# ATtiny9 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - 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; - - memory "flash" - size = 1024; - page_size = 16; - offset = 0x4000; - blocksize = 128; - ; -; - -#------------------------------------------------------------ -# ATtiny10 -#------------------------------------------------------------ - -part parent "t9" - 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; -; - -#------------------------------------------------------------ -# ATtiny20 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - desc = "ATtiny20"; - id = "t20"; - 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; - - memory "flash" - size = 2048; - page_size = 16; - n_word_writes = 2; - offset = 0x4000; - blocksize = 128; - ; - - memory "fuse" - bitmask = 0x77; - n_word_writes = 2; - ; -; - -#------------------------------------------------------------ -# ATtiny40 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - 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; - - memory "flash" - size = 4096; - page_size = 64; - n_word_writes = 4; - offset = 0x4000; - blocksize = 128; - ; - - memory "fuse" - bitmask = 0x77; - n_word_writes = 4; - ; -; - -#------------------------------------------------------------ -# ATtiny102 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - desc = "ATtiny102"; - id = "t102"; - 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; - - memory "flash" - size = 1024; - page_size = 16; - offset = 0x4000; - blocksize = 128; - ; - - memory "fuse" - bitmask = 0x0f; - ; - - memory "sigrow" - size = 16; - page_size = 16; - offset = 0x3fc6; - ; -; - -#------------------------------------------------------------ -# ATtiny104 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - 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; - - memory "flash" - size = 1024; - page_size = 16; - offset = 0x4000; - blocksize = 128; - ; - - memory "fuse" - bitmask = 0x0f; - ; - - memory "sigrow" - size = 16; - page_size = 16; - offset = 0x3fc6; - ; -; - -#------------------------------------------------------------ -# ATmega406 -#------------------------------------------------------------ - -part - desc = "ATmega406"; - id = "m406"; - 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; - - memory "eeprom" - size = 512; - page_size = 4; - num_pages = 128; - blocksize = 4; - readsize = 4; - ; - - memory "flash" - paged = yes; - size = 0xa000; - page_size = 128; - num_pages = 320; - blocksize = 128; - readsize = 128; - ; - - memory "lfuse" - size = 1; - initval = 0xcd; - ; - - memory "hfuse" - size = 1; - initval = 0xfe; - bitmask = 0x03; - ; - - memory "lockbits" - size = 1; - initval = 0xff; - bitmask = 0x3f; - ; - - memory "signature" - size = 3; - ; -; - #------------------------------------------------------------ # AVR8X family common values #------------------------------------------------------------ -part +part # .avr8x desc = "AVR8X family common values"; id = ".avr8x"; prog_modes = PM_SPM | PM_UPDI; @@ -18074,6 +18093,14 @@ part boot_section_size = 256; nvm_base = 0x1000; ocd_base = 0x0f80; + syscfg_base = 0x0f00; + factory_fcpu = 20000000; + + memory "fuses" + size = 10; + offset = 0x1280; + readsize = 1; + ; memory "fuse0" size = 1; @@ -18163,23 +18190,21 @@ part alias "fuse8"; ; - memory "fuses" - size = 9; - page_size = 10; - offset = 0x1280; - readsize = 10; - ; - memory "lock" size = 1; offset = 0x128a; readsize = 1; ; - memory "tempsense" - size = 2; - offset = 0x1120; - readsize = 1; + memory "prodsig" + size = 64; + page_size = 64; + offset = 0x1100; + readsize = 64; + ; + + memory "sigrow" + alias "prodsig"; ; memory "signature" @@ -18188,16 +18213,15 @@ part readsize = 3; ; - memory "prodsig" - size = 61; - page_size = 61; - offset = 0x1103; - readsize = 61; + memory "tempsense" + size = 2; + offset = 0x1120; + readsize = 1; ; memory "sernum" size = 10; - offset = 0x1104; + offset = 0x1103; readsize = 1; ; @@ -18225,9 +18249,14 @@ part readsize = 1; ; - memory "data" - # SRAM, only used to supply the offset - offset = 0x1000000; + memory "io" + size = 4352; + readsize = 1; + ; + + memory "sib" + size = 32; + readsize = 1; ; ; @@ -18235,7 +18264,7 @@ part # AVR8X tiny family common values #------------------------------------------------------------ -part parent ".avr8x" +part parent ".avr8x" # .avr8x_tiny desc = "AVR8X tiny family common values"; id = ".avr8x_tiny"; family_id = "tinyAVR"; @@ -18258,7 +18287,7 @@ part parent ".avr8x" # AVR8X mega family common values #------------------------------------------------------------ -part parent ".avr8x" +part parent ".avr8x" # .avr8x_mega desc = "AVR8X mega family common values"; id = ".avr8x_mega"; family_id = "megaAVR"; @@ -18285,7 +18314,7 @@ part parent ".avr8x" # ATtiny202 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t202 desc = "ATtiny202"; id = "t202"; variants = @@ -18294,6 +18323,7 @@ part parent ".avr8x_tiny" "ATtiny202-SSN: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny202-SSNR: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 280; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x91 0x23; @@ -18325,13 +18355,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 128; + offset = 0x3f80; + ; ; #------------------------------------------------------------ # ATtiny204 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t204 desc = "ATtiny204"; id = "t204"; variants = @@ -18340,6 +18375,7 @@ part parent ".avr8x_tiny" "ATtiny204-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny204-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 281; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x91 0x22; @@ -18371,13 +18407,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 128; + offset = 0x3f80; + ; ; #------------------------------------------------------------ # ATtiny402 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t402 desc = "ATtiny402"; id = "t402"; variants = @@ -18386,6 +18427,7 @@ part parent ".avr8x_tiny" "ATtiny402-SSN: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny402-SSNR: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 284; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x92 0x27; @@ -18417,13 +18459,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 256; + offset = 0x3f00; + ; ; #------------------------------------------------------------ # ATtiny404 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t404 desc = "ATtiny404"; id = "t404"; variants = @@ -18432,6 +18479,7 @@ part parent ".avr8x_tiny" "ATtiny404-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny404-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 285; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x92 0x26; @@ -18463,13 +18511,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 256; + offset = 0x3f00; + ; ; #------------------------------------------------------------ # ATtiny406 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t406 desc = "ATtiny406"; id = "t406"; variants = @@ -18480,6 +18533,7 @@ part parent ".avr8x_tiny" "ATtiny406-SN: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny406-SNR: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 286; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x92 0x25; @@ -18511,13 +18565,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 256; + offset = 0x3f00; + ; ; #------------------------------------------------------------ # ATtiny804 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t804 desc = "ATtiny804"; id = "t804"; variants = @@ -18526,6 +18585,7 @@ part parent ".avr8x_tiny" "ATtiny804-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny804-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 295; + archnum = 103; n_interrupts = 31; signature = 0x1e 0x93 0x25; @@ -18546,13 +18606,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 512; + offset = 0x3e00; + ; ; #------------------------------------------------------------ # ATtiny806 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t806 desc = "ATtiny806"; id = "t806"; variants = @@ -18565,6 +18630,7 @@ part parent ".avr8x_tiny" "ATtiny806-SN: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny806-SNR: SOIC300-20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 296; + archnum = 103; n_interrupts = 31; signature = 0x1e 0x93 0x24; @@ -18585,13 +18651,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 512; + offset = 0x3e00; + ; ; #------------------------------------------------------------ # ATtiny807 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t807 desc = "ATtiny807"; id = "t807"; variants = @@ -18601,6 +18672,7 @@ part parent ".avr8x_tiny" "ATtiny807-MNR: VQFN24, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny807-MRF: VQFN24, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 297; + archnum = 103; n_interrupts = 31; signature = 0x1e 0x93 0x23; @@ -18621,13 +18693,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 512; + offset = 0x3e00; + ; ; #------------------------------------------------------------ # ATtiny1604 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t1604 desc = "ATtiny1604"; id = "t1604"; variants = @@ -18636,6 +18713,7 @@ part parent ".avr8x_tiny" "ATtiny1604-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny1604-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 304; + archnum = 103; n_interrupts = 31; signature = 0x1e 0x94 0x25; @@ -18656,13 +18734,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 1024; + offset = 0x3c00; + ; ; #------------------------------------------------------------ # ATtiny1606 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t1606 desc = "ATtiny1606"; id = "t1606"; variants = @@ -18675,6 +18758,7 @@ part parent ".avr8x_tiny" "ATtiny1606-SN: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny1606-SNR: SOIC300-20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 305; + archnum = 103; n_interrupts = 31; signature = 0x1e 0x94 0x24; @@ -18695,13 +18779,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 1024; + offset = 0x3c00; + ; ; #------------------------------------------------------------ # ATtiny1607 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t1607 desc = "ATtiny1607"; id = "t1607"; variants = @@ -18711,6 +18800,7 @@ part parent ".avr8x_tiny" "ATtiny1607-MNR: VQFN24, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny1607-MRF: VQFN24, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 306; + archnum = 103; n_interrupts = 31; signature = 0x1e 0x94 0x23; @@ -18731,13 +18821,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 1024; + offset = 0x3c00; + ; ; #------------------------------------------------------------ # ATtiny212 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t212 desc = "ATtiny212"; id = "t212"; variants = @@ -18746,6 +18841,7 @@ part parent ".avr8x_tiny" "ATtiny212-SSN: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny212-SSNR: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 282; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x91 0x21; @@ -18777,13 +18873,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 128; + offset = 0x3f80; + ; ; #------------------------------------------------------------ # ATtiny214 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t214 desc = "ATtiny214"; id = "t214"; variants = @@ -18792,6 +18893,7 @@ part parent ".avr8x_tiny" "ATtiny214-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny214-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 283; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x91 0x20; @@ -18823,13 +18925,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 128; + offset = 0x3f80; + ; ; #------------------------------------------------------------ # ATtiny412 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t412 desc = "ATtiny412"; id = "t412"; variants = @@ -18838,6 +18945,7 @@ part parent ".avr8x_tiny" "ATtiny412-SSN: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny412-SSNR: SOIC8, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 287; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x92 0x23; @@ -18869,13 +18977,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 256; + offset = 0x3f00; + ; ; #------------------------------------------------------------ # ATtiny414 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t414 desc = "ATtiny414"; id = "t414"; variants = @@ -18884,6 +18997,7 @@ part parent ".avr8x_tiny" "ATtiny414-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny414-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 288; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x92 0x22; @@ -18915,13 +19029,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 256; + offset = 0x3f00; + ; ; #------------------------------------------------------------ # ATtiny416 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t416 desc = "ATtiny416"; id = "t416"; variants = @@ -18932,6 +19051,7 @@ part parent ".avr8x_tiny" "ATtiny416-SN: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny416-SNR: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 289; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x92 0x21; @@ -18963,13 +19083,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 256; + offset = 0x3f00; + ; ; #------------------------------------------------------------ # ATtiny416auto #------------------------------------------------------------ -part parent "t416" +part parent "t416" # t416auto desc = "ATtiny416auto"; id = "t416auto"; variants = @@ -18977,6 +19102,7 @@ part parent "t416" "ATtiny416-MZT: VQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[2.7 V, 5.5 V]"; mcuid = 290; signature = 0x1e 0x92 0x28; + factory_fcpu = 16000000; memory "fuse2" initval = 0x7d; @@ -18987,7 +19113,7 @@ part parent "t416" # ATtiny417 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t417 desc = "ATtiny417"; id = "t417"; variants = @@ -18996,6 +19122,7 @@ part parent ".avr8x_tiny" "ATtiny417-MN: VQFN24, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny417-MNR: QFN24, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 291; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x92 0x20; @@ -19027,13 +19154,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 256; + offset = 0x3f00; + ; ; #------------------------------------------------------------ # ATtiny814 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t814 desc = "ATtiny814"; id = "t814"; variants = @@ -19043,6 +19175,7 @@ part parent ".avr8x_tiny" "ATtiny814-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny814-SSNRES: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 298; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x93 0x22; @@ -19074,13 +19207,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 512; + offset = 0x3e00; + ; ; #------------------------------------------------------------ # ATtiny816 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t816 desc = "ATtiny816"; id = "t816"; variants = @@ -19094,6 +19232,7 @@ part parent ".avr8x_tiny" "ATtiny816-SN: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny816-SNR: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 299; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x93 0x21; @@ -19125,13 +19264,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 512; + offset = 0x3e00; + ; ; #------------------------------------------------------------ # ATtiny817 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t817 desc = "ATtiny817"; id = "t817"; variants = @@ -19141,6 +19285,7 @@ part parent ".avr8x_tiny" "ATtiny817-MNR: VQFN24, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny817-MNRES: VQFN24, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 300; + archnum = 103; n_interrupts = 26; signature = 0x1e 0x93 0x20; @@ -19172,13 +19317,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 512; + offset = 0x3e00; + ; ; #------------------------------------------------------------ # ATtiny1614 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t1614 desc = "ATtiny1614"; id = "t1614"; variants = @@ -19187,6 +19337,7 @@ part parent ".avr8x_tiny" "ATtiny1614-SSN: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny1614-SSNR: SOIC14, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 307; + archnum = 103; n_interrupts = 31; signature = 0x1e 0x94 0x22; @@ -19218,13 +19369,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 2048; + offset = 0x3800; + ; ; #------------------------------------------------------------ # ATtiny1616 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t1616 desc = "ATtiny1616"; id = "t1616"; variants = @@ -19235,6 +19391,7 @@ part parent ".avr8x_tiny" "ATtiny1616-SN: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny1616-SNR: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 308; + archnum = 103; n_interrupts = 31; signature = 0x1e 0x94 0x21; @@ -19266,13 +19423,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 2048; + offset = 0x3800; + ; ; #------------------------------------------------------------ # ATtiny1617 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t1617 desc = "ATtiny1617"; id = "t1617"; variants = @@ -19281,6 +19443,7 @@ part parent ".avr8x_tiny" "ATtiny1617-MN: QFN24, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny1617-MNR: QFN24, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 309; + archnum = 103; n_interrupts = 31; signature = 0x1e 0x94 0x20; @@ -19312,13 +19475,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 2048; + offset = 0x3800; + ; ; #------------------------------------------------------------ # ATtiny3216 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t3216 desc = "ATtiny3216"; id = "t3216"; variants = @@ -19327,6 +19495,7 @@ part parent ".avr8x_tiny" "ATtiny3216-SN: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]", "ATtiny3216-SNR: SOIC20, Fmax=20 MHz, T=[-40 C, 105 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 314; + archnum = 103; n_interrupts = 31; signature = 0x1e 0x95 0x21; @@ -19363,13 +19532,18 @@ part parent ".avr8x_tiny" size = 64; page_size = 64; ; + + memory "sram" + size = 2048; + offset = 0x3800; + ; ; #------------------------------------------------------------ # ATtiny3217 #------------------------------------------------------------ -part parent "t3216" +part parent "t3216" # t3217 desc = "ATtiny3217"; id = "t3217"; variants = @@ -19385,7 +19559,7 @@ part parent "t3216" # ATtiny424 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t424 desc = "ATtiny424"; id = "t424"; variants = @@ -19423,13 +19597,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 512; + offset = 0x3e00; + ; ; #------------------------------------------------------------ # ATtiny426 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t426 desc = "ATtiny426"; id = "t426"; variants = @@ -19471,13 +19650,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 512; + offset = 0x3e00; + ; ; #------------------------------------------------------------ # ATtiny427 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t427 desc = "ATtiny427"; id = "t427"; variants = @@ -19511,13 +19695,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 512; + offset = 0x3e00; + ; ; #------------------------------------------------------------ # ATtiny824 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t824 desc = "ATtiny824"; id = "t824"; variants = @@ -19555,13 +19744,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 1024; + offset = 0x3c00; + ; ; #------------------------------------------------------------ # ATtiny826 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t826 desc = "ATtiny826"; id = "t826"; variants = @@ -19603,13 +19797,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 1024; + offset = 0x3c00; + ; ; #------------------------------------------------------------ # ATtiny827 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t827 desc = "ATtiny827"; id = "t827"; variants = @@ -19643,13 +19842,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 1024; + offset = 0x3c00; + ; ; #------------------------------------------------------------ # ATtiny1624 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t1624 desc = "ATtiny1624"; id = "t1624"; variants = @@ -19687,13 +19891,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 2048; + offset = 0x3800; + ; ; #------------------------------------------------------------ # ATtiny1626 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t1626 desc = "ATtiny1626"; id = "t1626"; variants = @@ -19735,13 +19944,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 2048; + offset = 0x3800; + ; ; #------------------------------------------------------------ # ATtiny1627 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t1627 desc = "ATtiny1627"; id = "t1627"; variants = @@ -19775,13 +19989,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 2048; + offset = 0x3800; + ; ; #------------------------------------------------------------ # ATtiny3224 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t3224 desc = "ATtiny3224"; id = "t3224"; variants = @@ -19819,13 +20038,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 3072; + offset = 0x3400; + ; ; #------------------------------------------------------------ # ATtiny3226 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t3226 desc = "ATtiny3226"; id = "t3226"; variants = @@ -19867,13 +20091,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 3072; + offset = 0x3400; + ; ; #------------------------------------------------------------ # ATtiny3227 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # t3227 desc = "ATtiny3227"; id = "t3227"; variants = @@ -19907,13 +20136,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 3072; + offset = 0x3400; + ; ; #------------------------------------------------------------ # ATmega808 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # m808 desc = "ATmega808"; id = "m808"; variants = @@ -19930,6 +20164,7 @@ part parent ".avr8x_tiny" "ATmega808-XU: SSOP28, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "ATmega808-XUR: SSOP28, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 319; + archnum = 103; n_interrupts = 36; signature = 0x1e 0x93 0x26; @@ -19954,13 +20189,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 1024; + offset = 0x3c00; + ; ; #------------------------------------------------------------ # ATmega809 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # m809 desc = "ATmega809"; id = "m809"; variants = @@ -19973,6 +20213,7 @@ part parent ".avr8x_tiny" "ATmega809-MU: VQFN48, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "ATmega809-MUR: VQFN48, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; mcuid = 320; + archnum = 103; n_interrupts = 40; signature = 0x1e 0x93 0x2a; @@ -19997,13 +20238,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 1024; + offset = 0x3c00; + ; ; #------------------------------------------------------------ # ATmega1608 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # m1608 desc = "ATmega1608"; id = "m1608"; variants = @@ -20020,6 +20266,7 @@ part parent ".avr8x_tiny" "ATmega1608-XU: SSOP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", "ATmega1608-XUR: SSOP28, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; mcuid = 321; + archnum = 103; n_interrupts = 36; signature = 0x1e 0x94 0x27; @@ -20044,13 +20291,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 2048; + offset = 0x3800; + ; ; #------------------------------------------------------------ # ATmega1609 #------------------------------------------------------------ -part parent ".avr8x_tiny" +part parent ".avr8x_tiny" # m1609 desc = "ATmega1609"; id = "m1609"; variants = @@ -20063,6 +20315,7 @@ part parent ".avr8x_tiny" "ATmega1609-MU: VQFN48, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "ATmega1609-MUR: VQFN48, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; mcuid = 322; + archnum = 103; n_interrupts = 40; signature = 0x1e 0x94 0x26; @@ -20087,13 +20340,18 @@ part parent ".avr8x_tiny" memory "lock" initval = 0xc5; ; + + memory "sram" + size = 2048; + offset = 0x3800; + ; ; #------------------------------------------------------------ # ATmega3208 #------------------------------------------------------------ -part parent ".avr8x_mega" +part parent ".avr8x_mega" # m3208 desc = "ATmega3208"; id = "m3208"; variants = @@ -20110,6 +20368,7 @@ part parent ".avr8x_mega" "ATmega3208-XU: SSOP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", "ATmega3208-XUR: SSOP28, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; mcuid = 323; + archnum = 103; n_interrupts = 36; signature = 0x1e 0x95 0x30; @@ -20130,13 +20389,24 @@ part parent ".avr8x_mega" memory "lock" initval = 0xc5; ; + + memory "prodsig" + size = 128; + page_size = 128; + readsize = 128; + ; + + memory "sram" + size = 4096; + offset = 0x3000; + ; ; #------------------------------------------------------------ # ATmega3209 #------------------------------------------------------------ -part parent ".avr8x_mega" +part parent ".avr8x_mega" # m3209 desc = "ATmega3209"; id = "m3209"; variants = @@ -20149,6 +20419,7 @@ part parent ".avr8x_mega" "ATmega3209-MU: VQFN48, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", "ATmega3209-MUR: VQFN48, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 324; + archnum = 103; n_interrupts = 40; signature = 0x1e 0x95 0x31; @@ -20169,13 +20440,24 @@ part parent ".avr8x_mega" memory "lock" initval = 0xc5; ; + + memory "prodsig" + size = 128; + page_size = 128; + readsize = 128; + ; + + memory "sram" + size = 4096; + offset = 0x3000; + ; ; #------------------------------------------------------------ # ATmega4808 #------------------------------------------------------------ -part parent ".avr8x_mega" +part parent ".avr8x_mega" # m4808 desc = "ATmega4808"; id = "m4808"; variants = @@ -20192,6 +20474,7 @@ part parent ".avr8x_mega" "ATmega4808-XU: SSOP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", "ATmega4808-XUR: SSOP28, Fmax=N/A, T=[N/A, N/A], Vcc=[N/A, N/A]"; mcuid = 325; + archnum = 103; n_interrupts = 36; signature = 0x1e 0x96 0x50; @@ -20212,13 +20495,24 @@ part parent ".avr8x_mega" memory "lock" initval = 0xc5; ; + + memory "prodsig" + size = 128; + page_size = 128; + readsize = 128; + ; + + memory "sram" + size = 6144; + offset = 0x2800; + ; ; #------------------------------------------------------------ # ATmega4809 #------------------------------------------------------------ -part parent ".avr8x_mega" +part parent ".avr8x_mega" # m4809 desc = "ATmega4809"; id = "m4809"; variants = @@ -20232,6 +20526,7 @@ part parent ".avr8x_mega" "ATmega4809-MUR: VQFN48, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", "ATmega4809-PF: PDIP40, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 326; + archnum = 103; n_interrupts = 40; signature = 0x1e 0x96 0x51; @@ -20252,13 +20547,24 @@ part parent ".avr8x_mega" memory "lock" initval = 0xc5; ; + + memory "prodsig" + size = 128; + page_size = 128; + readsize = 128; + ; + + memory "sram" + size = 6144; + offset = 0x2800; + ; ; #------------------------------------------------------------ # AVR-Dx family common values #------------------------------------------------------------ -part +part # .avrdx desc = "AVR-Dx family common values"; id = ".avrdx"; family_id = "AVR "; @@ -20269,6 +20575,14 @@ part hvupdi_variant = 1; nvm_base = 0x1000; ocd_base = 0x0f80; + syscfg_base = 0x0f00; + factory_fcpu = 4000000; + + memory "fuses" + size = 16; + offset = 0x1050; + readsize = 1; + ; memory "fuse0" size = 1; @@ -20358,23 +20672,21 @@ part alias "fuse8"; ; - memory "fuses" - size = 9; - page_size = 16; - offset = 0x1050; - readsize = 16; - ; - memory "lock" size = 4; offset = 0x1040; readsize = 4; ; - memory "tempsense" - size = 2; - offset = 0x1104; - readsize = 1; + memory "prodsig" + size = 128; + page_size = 128; + offset = 0x1100; + readsize = 128; + ; + + memory "sigrow" + alias "prodsig"; ; memory "signature" @@ -20383,11 +20695,10 @@ part readsize = 3; ; - memory "prodsig" - size = 125; - page_size = 125; - offset = 0x1103; - readsize = 125; + memory "tempsense" + size = 4; + offset = 0x1104; + readsize = 1; ; memory "sernum" @@ -20407,9 +20718,14 @@ part alias "userrow"; ; - memory "data" - # SRAM, only used to supply the offset - offset = 0x1000000; + memory "io" + size = 4160; + readsize = 1; + ; + + memory "sib" + size = 32; + readsize = 1; ; ; @@ -20417,9 +20733,9 @@ part # AVR32DA28 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 32da28 desc = "AVR32DA28"; - id = "avr32da28"; + id = "32da28"; variants = "AVR32DA28: SOIC28, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR32DA28-E/SO: SOIC28, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20458,15 +20774,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR32DA32 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 32da32 desc = "AVR32DA32"; - id = "avr32da32"; + id = "32da32"; variants = "AVR32DA32: QFN32, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR32DA32-E/PT: TQFP32, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20503,15 +20824,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR32DA48 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 32da48 desc = "AVR32DA48"; - id = "avr32da48"; + id = "32da48"; variants = "AVR32DA48: QFN48, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR32DA48-E/6LX: VQFN48, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20548,15 +20874,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR64DA28 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64da28 desc = "AVR64DA28"; - id = "avr64da28"; + id = "64da28"; variants = "AVR64DA28: SOIC28, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DA28-E/SO: SOIC28, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20595,15 +20926,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR64DA32 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64da32 desc = "AVR64DA32"; - id = "avr64da32"; + id = "64da32"; variants = "AVR64DA32: QFN32, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DA32-E/PT: TQFP32, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20640,15 +20976,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR64DA48 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64da48 desc = "AVR64DA48"; - id = "avr64da48"; + id = "64da48"; variants = "AVR64DA48: QFN48, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DA48-E/6LX: VQFN48, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20685,15 +21026,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR64DA64 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64da64 desc = "AVR64DA64"; - id = "avr64da64"; + id = "64da64"; variants = "AVR64DA64: QFN64, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DA64-E/MR: QFN64, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20730,15 +21076,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR128DA28 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 128da28 desc = "AVR128DA28"; - id = "avr128da28"; + id = "128da28"; variants = "AVR128DA28: SOIC28, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR128DA28-E/SO: SOIC28, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20777,15 +21128,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 0x4000; + offset = 0x4000; + ; ; #------------------------------------------------------------ # AVR128DA32 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 128da32 desc = "AVR128DA32"; - id = "avr128da32"; + id = "128da32"; variants = "AVR128DA32: QFN32, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR128DA32-E/PT: TQFP32, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20822,15 +21178,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 0x4000; + offset = 0x4000; + ; ; #------------------------------------------------------------ # AVR128DA48 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 128da48 desc = "AVR128DA48"; - id = "avr128da48"; + id = "128da48"; variants = "AVR128DA48: QFN48, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR128DA48-E/6LX: VQFN48, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20867,15 +21228,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 0x4000; + offset = 0x4000; + ; ; #------------------------------------------------------------ # AVR128DA64 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 128da64 desc = "AVR128DA64"; - id = "avr128da64"; + id = "128da64"; variants = "AVR128DA64: QFN64, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR128DA64-E/MR: QFN64, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20912,15 +21278,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 0x4000; + offset = 0x4000; + ; ; #------------------------------------------------------------ # AVR32DB28 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 32db28 desc = "AVR32DB28"; - id = "avr32db28"; + id = "32db28"; variants = "AVR32DB28: SOIC28, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR32DB28-E/SO: SOIC28, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20953,15 +21324,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR32DB32 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 32db32 desc = "AVR32DB32"; - id = "avr32db32"; + id = "32db32"; variants = "AVR32DB32: QFN32, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR32DB32-E/PT: TQFP32, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -20992,15 +21368,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR32DB48 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 32db48 desc = "AVR32DB48"; - id = "avr32db48"; + id = "32db48"; variants = "AVR32DB48: QFN48, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR32DB48-E/6LX: VQFN48, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -21031,15 +21412,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR64DB28 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64db28 desc = "AVR64DB28"; - id = "avr64db28"; + id = "64db28"; variants = "AVR64DB28: SOIC28, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DB28-E/SO: SOIC28, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -21072,15 +21458,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR64DB32 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64db32 desc = "AVR64DB32"; - id = "avr64db32"; + id = "64db32"; variants = "AVR64DB32: QFN32, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DB32-E/PT: TQFP32, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -21111,15 +21502,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR64DB48 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64db48 desc = "AVR64DB48"; - id = "avr64db48"; + id = "64db48"; variants = "AVR64DB48: QFN48, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DB48-E/6LX: VQFN48, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -21150,15 +21546,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR64DB64 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64db64 desc = "AVR64DB64"; - id = "avr64db64"; + id = "64db64"; variants = "AVR64DB64: QFN64, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DB64-E/MR: QFN64, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -21189,15 +21590,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR128DB28 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 128db28 desc = "AVR128DB28"; - id = "avr128db28"; + id = "128db28"; variants = "AVR128DB28: SOIC28, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR128DB28-E/SO: SOIC28, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -21230,15 +21636,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 0x4000; + offset = 0x4000; + ; ; #------------------------------------------------------------ # AVR128DB32 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 128db32 desc = "AVR128DB32"; - id = "avr128db32"; + id = "128db32"; variants = "AVR128DB32: QFN32, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR128DB32-E/PT: TQFP32, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -21269,15 +21680,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 0x4000; + offset = 0x4000; + ; ; #------------------------------------------------------------ # AVR128DB48 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 128db48 desc = "AVR128DB48"; - id = "avr128db48"; + id = "128db48"; variants = "AVR128DB48: QFN48, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR128DB48-E/6LX: VQFN48, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -21308,15 +21724,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 0x4000; + offset = 0x4000; + ; ; #------------------------------------------------------------ # AVR128DB64 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 128db64 desc = "AVR128DB64"; - id = "avr128db64"; + id = "128db64"; variants = "AVR128DB64: QFN64, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR128DB64-E/MR: QFN64, Fmax=24 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", @@ -21347,15 +21768,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 0x4000; + offset = 0x4000; + ; ; #------------------------------------------------------------ # AVR16DD14 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 16dd14 desc = "AVR16DD14"; - id = "avr16dd14"; + id = "16dd14"; variants = "AVR16DD14: SOIC14, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR16DD14-I/SL: SOIC14, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; @@ -21385,15 +21811,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 2048; + offset = 0x7800; + ; ; #------------------------------------------------------------ # AVR16DD20 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 16dd20 desc = "AVR16DD20"; - id = "avr16dd20"; + id = "16dd20"; variants = "AVR16DD20: QFN20, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR16DD20-I/REB: VQFN20, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -21424,15 +21855,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 2048; + offset = 0x7800; + ; ; #------------------------------------------------------------ # AVR16DD28 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 16dd28 desc = "AVR16DD28"; - id = "avr16dd28"; + id = "16dd28"; variants = "AVR16DD28: SOIC28, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR16DD28-I/SO: SOIC28, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -21465,15 +21901,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 2048; + offset = 0x7800; + ; ; #------------------------------------------------------------ # AVR16DD32 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 16dd32 desc = "AVR16DD32"; - id = "avr16dd32"; + id = "16dd32"; variants = "AVR16DD32: QFN32, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR16DD32-I/PT: TQFP32, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -21504,15 +21945,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 2048; + offset = 0x7800; + ; ; #------------------------------------------------------------ # AVR32DD14 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 32dd14 desc = "AVR32DD14"; - id = "avr32dd14"; + id = "32dd14"; variants = "AVR32DD14: SOIC14, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR32DD14-I/SL: SOIC14, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; @@ -21542,15 +21988,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR32DD20 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 32dd20 desc = "AVR32DD20"; - id = "avr32dd20"; + id = "32dd20"; variants = "AVR32DD20: QFN20, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR32DD20-I/REB: VQFN20, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -21581,15 +22032,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR32DD28 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 32dd28 desc = "AVR32DD28"; - id = "avr32dd28"; + id = "32dd28"; variants = "AVR32DD28: SOIC28, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR32DD28-I/SO: SOIC28, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -21622,15 +22078,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR32DD32 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 32dd32 desc = "AVR32DD32"; - id = "avr32dd32"; + id = "32dd32"; variants = "AVR32DD32: QFN32, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR32DD32-I/PT: TQFP32, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -21661,15 +22122,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR64DD14 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64dd14 desc = "AVR64DD14"; - id = "avr64dd14"; + id = "64dd14"; variants = "AVR64DD14: SOIC14, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DD14-I/SL: SOIC14, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; @@ -21699,15 +22165,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR64DD20 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64dd20 desc = "AVR64DD20"; - id = "avr64dd20"; + id = "64dd20"; variants = "AVR64DD20: QFN20, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DD20-I/SO: SOIC20, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; @@ -21737,15 +22208,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR64DD28 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64dd28 desc = "AVR64DD28"; - id = "avr64dd28"; + id = "64dd28"; variants = "AVR64DD28: SOIC28, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DD28-I/SO: SOIC28, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -21778,15 +22254,20 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; ; #------------------------------------------------------------ # AVR64DD32 #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # 64dd32 desc = "AVR64DD32"; - id = "avr64dd32"; + id = "64dd32"; variants = "AVR64DD32: QFN32, Fmax=32 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64DD32-I/PT: TQFP32, Fmax=24 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -21817,17 +22298,227 @@ part parent ".avrdx" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 8192; + offset = 0x6000; + ; +; + +#------------------------------------------------------------ +# AVR64DU28 +#------------------------------------------------------------ + +part parent "64dd28" # 64du28 + desc = "AVR64DU28"; + id = "64du28"; + variants = + "AVR64DU28-SSOP/SPDIP: DIP28, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "AVR64DU28-VQFN: QFP28, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 384; + n_interrupts = 34; + signature = 0x1e 0x96 0x22; + + memory "fuse5" + bitmask = 0xfb; + ; + + memory "fuse6" + bitmask = 0x0f; + ; + + memory "fusea" + size = 2; + initval = 0x03; + bitmask = 0xfff3; + offset = 0x105a; + readsize = 1; + ; + + memory "pdicfg" + alias "fusea"; + ; + + memory "prodsig" + offset = 0x1080; + ; + + memory "signature" + offset = 0x1080; + ; + + memory "tempsense" + offset = 0x1084; + ; + + memory "sernum" + offset = 0x1090; + ; + + memory "bootrow" + size = 256; + page_size = 256; + offset = 0x1100; + readsize = 256; + ; + + memory "userrow" + size = 512; + page_size = 512; + offset = 0x1200; + ; +; + +#------------------------------------------------------------ +# AVR64DU32 +#------------------------------------------------------------ + +part parent "64du28" # 64du32 + desc = "AVR64DU32"; + id = "64du32"; + variants = + "AVR64DU32-VQFN/TQFP: QFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 385; + signature = 0x1e 0x96 0x21; +; + +#------------------------------------------------------------ +# AVR16DU14 +#------------------------------------------------------------ + +part parent "64du28" # 16du14 + desc = "AVR16DU14"; + id = "16du14"; + variants = + "AVR16DU14-SOIC: DIP14, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 386; + signature = 0x1e 0x94 0x3b; + + memory "flash" + size = 0x4000; + ; + + memory "sram" + size = 2048; + offset = 0x7800; + ; +; + +#------------------------------------------------------------ +# AVR16DU20 +#------------------------------------------------------------ + +part parent "16du14" # 16du20 + desc = "AVR16DU20"; + id = "16du20"; + variants = + "AVR16DU20-SSOP: DIP20, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "AVR16DU20-VQFN: QFP20, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 387; + signature = 0x1e 0x94 0x3a; +; + +#------------------------------------------------------------ +# AVR16DU28 +#------------------------------------------------------------ + +part parent "16du14" # 16du28 + desc = "AVR16DU28"; + id = "16du28"; + variants = + "AVR16DU28-SSOP/SPDIP: DIP28, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "AVR16DU28-VQFN: QFP28, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 388; + signature = 0x1e 0x94 0x39; +; + +#------------------------------------------------------------ +# AVR16DU32 +#------------------------------------------------------------ + +part parent "16du14" # 16du32 + desc = "AVR16DU32"; + id = "16du32"; + variants = + "AVR16DU32-VQFN/TQFP: QFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 389; + signature = 0x1e 0x94 0x38; +; + +#------------------------------------------------------------ +# AVR32DU14 +#------------------------------------------------------------ + +part parent "64du28" # 32du14 + desc = "AVR32DU14"; + id = "32du14"; + variants = + "AVR32DU14-SOIC: DIP14, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 390; + signature = 0x1e 0x95 0x4f; + + memory "flash" + size = 0x8000; + ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; +; + +#------------------------------------------------------------ +# AVR32DU20 +#------------------------------------------------------------ + +part parent "32du14" # 32du20 + desc = "AVR32DU20"; + id = "32du20"; + variants = + "AVR32DU20-SSOP: DIP20, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "AVR32DU20-VQFN: QFP20, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 391; + signature = 0x1e 0x95 0x4e; +; + +#------------------------------------------------------------ +# AVR32DU28 +#------------------------------------------------------------ + +part parent "32du14" # 32du28 + desc = "AVR32DU28"; + id = "32du28"; + variants = + "AVR32DU28-SSOP/SPDIP: DIP28, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", + "AVR32DU28-VQFN: QFP28, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 392; + signature = 0x1e 0x95 0x40; +; + +#------------------------------------------------------------ +# AVR32DU32 +#------------------------------------------------------------ + +part parent "32du14" # 32du32 + desc = "AVR32DU32"; + id = "32du32"; + variants = + "AVR32DU32-VQFN/TQFP: QFP32, Fmax=32 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 393; + signature = 0x1e 0x95 0x3f; ; #------------------------------------------------------------ # AVR-Ex family common values #------------------------------------------------------------ -part parent ".avrdx" +part parent ".avrdx" # .avrex desc = "AVR-Ex family common values"; id = ".avrex"; + boot_section_size = 256; # Shared UPDI pin, HV on _RESET hvupdi_variant = 2; + factory_fcpu = 20000000; memory "fuse2" bitmask = 0x08; @@ -21854,9 +22545,9 @@ part parent ".avrdx" # AVR8EA28 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 8ea28 desc = "AVR8EA28"; - id = "avr8ea28"; + id = "8ea28"; mcuid = 327; signature = 0x1e 0x93 0x2c; @@ -21910,9 +22601,9 @@ part parent ".avrex" # AVR8EA32 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 8ea32 desc = "AVR8EA32"; - id = "avr8ea32"; + id = "8ea32"; mcuid = 328; signature = 0x1e 0x93 0x2b; @@ -21966,12 +22657,13 @@ part parent ".avrex" # AVR16EA28 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 16ea28 desc = "AVR16EA28"; - id = "avr16ea28"; + id = "16ea28"; variants = "AVR16EA28: SOIC28, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 332; + n_interrupts = 37; signature = 0x1e 0x94 0x37; memory "eeprom" @@ -21991,18 +22683,24 @@ part parent ".avrex" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 2048; + offset = 0x7800; + ; ; #------------------------------------------------------------ # AVR16EA32 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 16ea32 desc = "AVR16EA32"; - id = "avr16ea32"; + id = "16ea32"; variants = "AVR16EA32: VQFN32, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 334; + n_interrupts = 37; signature = 0x1e 0x94 0x36; memory "eeprom" @@ -22022,18 +22720,24 @@ part parent ".avrex" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 2048; + offset = 0x7800; + ; ; #------------------------------------------------------------ # AVR16EA48 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 16ea48 desc = "AVR16EA48"; - id = "avr16ea48"; + id = "16ea48"; variants = "AVR16EA48: VQFN48, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 335; + n_interrupts = 45; signature = 0x1e 0x94 0x35; memory "eeprom" @@ -22053,18 +22757,24 @@ part parent ".avrex" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 2048; + offset = 0x7800; + ; ; #------------------------------------------------------------ # AVR32EA28 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 32ea28 desc = "AVR32EA28"; - id = "avr32ea28"; + id = "32ea28"; variants = "AVR32EA28: SOIC28, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 341; + n_interrupts = 37; signature = 0x1e 0x95 0x3e; memory "eeprom" @@ -22084,18 +22794,24 @@ part parent ".avrex" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR32EA32 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 32ea32 desc = "AVR32EA32"; - id = "avr32ea32"; + id = "32ea32"; variants = "AVR32EA32: VQFN32, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 345; + n_interrupts = 37; signature = 0x1e 0x95 0x3d; memory "eeprom" @@ -22115,18 +22831,24 @@ part parent ".avrex" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR32EA48 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 32ea48 desc = "AVR32EA48"; - id = "avr32ea48"; + id = "32ea48"; variants = "AVR32EA48: VQFN48, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; mcuid = 348; + n_interrupts = 45; signature = 0x1e 0x95 0x3c; memory "eeprom" @@ -22146,15 +22868,20 @@ part parent ".avrex" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 4096; + offset = 0x7000; + ; ; #------------------------------------------------------------ # AVR64EA28 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 64ea28 desc = "AVR64EA28"; - id = "avr64ea28"; + id = "64ea28"; variants = "AVR64EA28: SOIC28, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64EA28-I/SP: SPDIP28, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -22180,15 +22907,20 @@ part parent ".avrex" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 6144; + offset = 0x6800; + ; ; #------------------------------------------------------------ # AVR64EA32 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 64ea32 desc = "AVR64EA32"; - id = "avr64ea32"; + id = "64ea32"; variants = "AVR64EA32: VQFN32, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64EA32-I/PT: TQFP32, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -22214,15 +22946,20 @@ part parent ".avrex" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 6144; + offset = 0x6800; + ; ; #------------------------------------------------------------ # AVR64EA48 #------------------------------------------------------------ -part parent ".avrex" +part parent ".avrex" # 64ea48 desc = "AVR64EA48"; - id = "avr64ea48"; + id = "64ea48"; variants = "AVR64EA48: VQFN48, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", "AVR64EA48-I/6LX: VQFN48, Fmax=20 MHz, T=[-40 C, 85 C], Vcc=[1.8 V, 5.5 V]", @@ -22248,94 +22985,126 @@ part parent ".avrex" memory "lock" initval = 0x5cc5c55c; ; + + memory "sram" + size = 6144; + offset = 0x6800; + ; ; #------------------------------------------------------------ -# Logic Green parts +# AVR16EB14 #------------------------------------------------------------ -part parent "m88" - desc = "LGT8F88P"; - id = "lgt8f88p"; - mcuid = 227; - signature = 0x1e 0x93 0x0f; - autobaud_sync = 0x1c; +part parent ".avrex" # 16eb14 + desc = "AVR16EB14"; + id = "16eb14"; + variants = + "AVR16EB14-SOIC/TSSOP: SOIC14, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 380; + n_interrupts = 31; + signature = 0x1e 0x94 0x49; - memory "lfuse" - initval = -1; + memory "eeprom" + size = 512; + page_size = 8; + offset = 0x1400; + readsize = 256; ; - memory "hfuse" - initval = -1; + memory "flash" + size = 0x4000; + page_size = 64; + offset = 0x800000; + readsize = 256; ; - memory "efuse" - initval = -1; - bitmask = -1; + memory "fusea" + size = 2; + initval = 0x03; + bitmask = 0xfff3; + offset = 0x105a; + readsize = 1; + ; + + memory "pdicfg" + alias "fusea"; ; memory "lock" - initval = -1; - bitmask = -1; + initval = 0x5cc5c55c; + ; + + memory "prodsig" + offset = 0x1080; + ; + + memory "signature" + offset = 0x1080; + ; + + memory "tempsense" + offset = 0x1084; + ; + + memory "sernum" + offset = 0x1090; + ; + + memory "bootrow" + size = 64; + page_size = 64; + offset = 0x1100; + readsize = 256; + ; + + memory "userrow" + offset = 0x1200; + ; + + memory "sram" + size = 2048; + offset = 0x7800; ; ; #------------------------------------------------------------ -# LGT8F168P +# AVR16EB20 #------------------------------------------------------------ -part parent "m168" - 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; - ; +part parent "16eb14" # 16eb20 + desc = "AVR16EB20"; + id = "16eb20"; + variants = + "AVR16EB20-SSOP: SOIC20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "AVR16EB20-VQFN: VQFN20, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 381; + signature = 0x1e 0x94 0x40; ; #------------------------------------------------------------ -# LGT8F328P +# AVR16EB28 #------------------------------------------------------------ -part parent "m328" - 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; - ; +part parent "16eb14" # 16eb28 + desc = "AVR16EB28"; + id = "16eb28"; + variants = + "AVR16EB28-SSOP/SPDIP: SOIC28, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]", + "AVR16EB28-VQFN: VQFN28, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 382; + signature = 0x1e 0x94 0x3f; +; + +#------------------------------------------------------------ +# AVR16EB32 +#------------------------------------------------------------ + +part parent "16eb14" # 16eb32 + desc = "AVR16EB32"; + id = "16eb32"; + variants = + "AVR16EB32-VQFN/TQFP: VQFN32, Fmax=20 MHz, T=[-40 C, 125 C], Vcc=[1.8 V, 5.5 V]"; + mcuid = 383; + signature = 0x1e 0x94 0x3e; ;