-
Notifications
You must be signed in to change notification settings - Fork 145
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Correct memory mode, delay and readback for classic parts #1272
Conversation
It is a bitfield instructing STK500 how to program the memory
Injected automatically from the corresponding ATDF files
These parameters are taken from the ATDF section for STK500 ISP programming. It so turns out that the STK600 requires different delay, readback and mode parameters for some parts, which is something that AVRDUDE does not model. If flash delays differ they are shorter for the STK600 (6 ms, down from 10 ms), so I guess it will be OK to not model a separate delay value. EEPROM delays get longer though sometimes: For the
The last two things are a bit puzzling, b/c I would have thought that the mode is a part capability, less so a programmer capability. So, why do STK500 and STK600 require/recommend they be issued with different delay or mode parameters from time to time. Another puzzle: the AVR068 doc does state delay is only used for those modes that require it. I assume this means when timed programming is requested, which is ... wait for it ... for no part. Makes you question why do the STK500/STK600 model this and why do the ATDF elaborate on the delay parameter to be used if the programming mode does not warrant it? And why do these ATDF sheets go to the trouble of setting delay differently for these two programmers? STK500 flash parameters
STK600 flash parameters
Diff STK500/STK600 flash parametersdiff --git a/tmp/stk500f b/tmp/stk600f
index 57b46b7..111b830 100644
--- a/tmp/1sf
+++ b/tmp/2sf
@@ -1,14 +1,14 @@
-|AT90CAN128|flash|10|0x41|0x00 0x00|
-|AT90CAN32|flash|10|0x41|0x00 0x00|
-|AT90CAN64|flash|10|0x41|0x00 0x00|
-|AT90PWM161|flash|10|0x41|0x00 0x00|
-|AT90PWM1|flash|10|0x41|0x00 0x00|
-|AT90PWM216|flash|10|0x41|0x00 0x00|
-|AT90PWM2B|flash|10|0x41|0x00 0x00|
-|AT90PWM316|flash|10|0x41|0x00 0x00|
-|AT90PWM3B|flash|10|0x41|0x00 0x00|
-|AT90PWM3|flash|10|0x41|0x00 0x00|
-|AT90PWM81|flash|10|0x41|0x00 0x00|
+|AT90CAN128|flash|6|0x41|0x00 0x00|
+|AT90CAN32|flash|6|0x41|0x00 0x00|
+|AT90CAN64|flash|6|0x41|0x00 0x00|
+|AT90PWM161|flash|6|0x41|0x00 0x00|
+|AT90PWM1|flash|6|0x41|0x00 0x00|
+|AT90PWM216|flash|6|0x41|0x00 0x00|
+|AT90PWM2B|flash|6|0x41|0x00 0x00|
+|AT90PWM316|flash|6|0x41|0x00 0x00|
+|AT90PWM3B|flash|6|0x41|0x00 0x00|
+|AT90PWM3|flash|6|0x41|0x00 0x00|
+|AT90PWM81|flash|6|0x41|0x00 0x00|
|AT90USB1286|flash|6|0x41|0x00 0x00|
|AT90USB1287|flash|6|0x41|0x00 0x00|
|AT90USB162|flash|6|0x41|0x00 0x00|
@@ -33,9 +33,9 @@
|ATA5835|flash|10|0x41|0x00 0x00|
|ATA6285|flash|6|0x41|0x00 0x00|
|ATA6286|flash|6|0x41|0x00 0x00|
-|ATA6612C|flash|10|0x41|0x00 0x00|
-|ATA6613C|flash|10|0x41|0x00 0x00|
-|ATA6614Q|flash|10|0x41|0x00 0x00|
+|ATA6612C|flash|6|0x41|0x00 0x00|
+|ATA6613C|flash|6|0x41|0x00 0x00|
+|ATA6614Q|flash|6|0x41|0x00 0x00|
|ATA6616C|flash|10|0x41|0x00 0x00|
|ATA6617C|flash|10|0x41|0x00 0x00|
|ATA664251|flash|10|0x41|0x00 0x00|
@@ -43,142 +43,140 @@
|ATA8215|flash|10|0x41|0x00 0x00|
|ATA8510|flash|10|0x41|0x00 0x00|
|ATA8515|flash|10|0x41|0x00 0x00|
-|ATmega1280|flash|10|0x41|0x00 0x00|
-|ATmega1281|flash|10|0x41|0x00 0x00|
-|ATmega1284|flash|10|0x41|0x00 0x00|
-|ATmega1284P|flash|10|0x41|0x00 0x00|
+|ATmega1280|flash|6|0x41|0x00 0x00|
+|ATmega1281|flash|6|0x41|0x00 0x00|
+|ATmega1284|flash|6|0x41|0x00 0x00|
+|ATmega1284P|flash|6|0x41|0x00 0x00|
|ATmega1284RFR2|flash|50|0x41|0x00 0x00|
-|ATmega128A|flash|10|0x21|0xFF 0x00|
-|ATmega128|flash|10|0x21|0xFF 0x00|
+|ATmega128A|flash|6|0x21|0xFF 0x00|
+|ATmega128|flash|6|0x21|0xFF 0x00|
|ATmega128RFA1|flash|50|0x41|0x00 0x00|
|ATmega128RFR2|flash|50|0x41|0x00 0x00|
-|ATmega162|flash|10|0x41|0x00 0x00|
-|ATmega164A|flash|10|0x41|0x00 0x00|
-|ATmega164PA|flash|10|0x41|0x00 0x00|
-|ATmega164P|flash|10|0x41|0x00 0x00|
-|ATmega165A|flash|10|0x41|0x00 0x00|
-|ATmega165PA|flash|10|0x41|0x00 0x00|
-|ATmega165P|flash|10|0x41|0x00 0x00|
-|ATmega168A|flash|10|0x41|0x00 0x00|
-|ATmega168|flash|10|0x41|0x00 0x00|
-|ATmega168PA|flash|10|0x41|0x00 0x00|
-|ATmega168PB|flash|10|0x41|0x00 0x00|
-|ATmega168P|flash|10|0x41|0x00 0x00|
-|ATmega169A|flash|10|0x41|0x00 0x00|
-|ATmega169PA|flash|10|0x41|0x00 0x00|
-|ATmega169P|flash|10|0x41|0x00 0x00|
-|ATmega16A|flash|10|0x21|0xFF 0x00|
-|ATmega16|flash|10|0x21|0xFF 0x00|
-|ATmega16HVA|flash|10|0x41|0x00 0x00|
-|ATmega16HVB|flash|10|0x41|0x00 0x00|
-|ATmega16HVBrevB|flash|10|0x41|0x00 0x00|
-|ATmega16M1|flash|10|0x41|0x00 0x00|
+|ATmega162|flash|6|0x41|0x00 0x00|
+|ATmega164A|flash|6|0x41|0x00 0x00|
+|ATmega164PA|flash|6|0x41|0x00 0x00|
+|ATmega164P|flash|6|0x41|0x00 0x00|
+|ATmega165A|flash|6|0x41|0x00 0x00|
+|ATmega165PA|flash|6|0x41|0x00 0x00|
+|ATmega165P|flash|6|0x41|0x00 0x00|
+|ATmega168A|flash|6|0x41|0x00 0x00|
+|ATmega168|flash|6|0x41|0x00 0x00|
+|ATmega168PA|flash|6|0x41|0x00 0x00|
+|ATmega168PB|flash|6|0x41|0x00 0x00|
+|ATmega168P|flash|6|0x41|0x00 0x00|
+|ATmega169A|flash|6|0x41|0x00 0x00|
+|ATmega169PA|flash|6|0x41|0x00 0x00|
+|ATmega169P|flash|6|0x41|0x00 0x00|
+|ATmega16A|flash|6|0x21|0xFF 0x00|
+|ATmega16|flash|6|0x21|0xFF 0x00|
+|ATmega16HVB|flash|6|0x41|0x00 0x00|
+|ATmega16HVBrevB|flash|6|0x41|0x00 0x00|
+|ATmega16M1|flash|6|0x41|0x00 0x00|
|ATmega16U2|flash|6|0x41|0x00 0x00|
|ATmega16U4|flash|6|0x41|0x00 0x00|
-|ATmega2560|flash|10|0x41|0x00 0x00|
-|ATmega2561|flash|10|0x41|0x00 0x00|
+|ATmega2560|flash|6|0x41|0x00 0x00|
+|ATmega2561|flash|6|0x41|0x00 0x00|
|ATmega2564RFR2|flash|50|0x41|0x00 0x00|
|ATmega256RFR2|flash|50|0x41|0x00 0x00|
-|ATmega324A|flash|10|0x41|0x00 0x00|
-|ATmega324PA|flash|10|0x41|0x00 0x00|
-|ATmega324PB|flash|10|0x41|0x00 0x00|
-|ATmega324P|flash|10|0x41|0x00 0x00|
-|ATmega3250A|flash|10|0x41|0x00 0x00|
-|ATmega3250|flash|10|0x41|0x00 0x00|
-|ATmega3250PA|flash|10|0x41|0x00 0x00|
-|ATmega3250P|flash|10|0x41|0x00 0x00|
-|ATmega325A|flash|10|0x41|0x00 0x00|
-|ATmega325|flash|10|0x41|0x00 0x00|
-|ATmega325PA|flash|10|0x41|0x00 0x00|
-|ATmega325P|flash|10|0x41|0x00 0x00|
-|ATmega328|flash|10|0x41|0x00 0x00|
-|ATmega328PB|flash|10|0x41|0x00 0x00|
-|ATmega328P|flash|10|0x41|0x00 0x00|
-|ATmega3290A|flash|10|0x41|0x00 0x00|
-|ATmega3290|flash|10|0x41|0x00 0x00|
-|ATmega3290PA|flash|10|0x41|0x00 0x00|
-|ATmega3290P|flash|10|0x41|0x00 0x00|
-|ATmega329A|flash|10|0x41|0x00 0x00|
-|ATmega329|flash|10|0x41|0x00 0x00|
-|ATmega329PA|flash|10|0x41|0x00 0x00|
-|ATmega329P|flash|10|0x41|0x00 0x00|
-|ATmega32A|flash|10|0x21|0xFF 0x00|
-|ATmega32C1|flash|10|0x41|0x00 0x00|
-|ATmega32|flash|10|0x21|0xFF 0x00|
-|ATmega32HVB|flash|10|0x41|0x00 0x00|
-|ATmega32HVBrevB|flash|10|0x41|0x00 0x00|
-|ATmega32M1|flash|10|0x41|0x00 0x00|
+|ATmega324A|flash|6|0x41|0x00 0x00|
+|ATmega324PA|flash|6|0x41|0x00 0x00|
+|ATmega324PB|flash|6|0x41|0x00 0x00|
+|ATmega324P|flash|6|0x41|0x00 0x00|
+|ATmega3250A|flash|6|0x41|0x00 0x00|
+|ATmega3250|flash|6|0x41|0x00 0x00|
+|ATmega3250PA|flash|6|0x41|0x00 0x00|
+|ATmega3250P|flash|6|0x41|0x00 0x00|
+|ATmega325A|flash|6|0x41|0x00 0x00|
+|ATmega325|flash|6|0x41|0x00 0x00|
+|ATmega325PA|flash|6|0x41|0x00 0x00|
+|ATmega325P|flash|6|0x41|0x00 0x00|
+|ATmega328|flash|6|0x41|0x00 0x00|
+|ATmega328PB|flash|6|0x41|0x00 0x00|
+|ATmega328P|flash|6|0x41|0x00 0x00|
+|ATmega3290A|flash|6|0x41|0x00 0x00|
+|ATmega3290|flash|6|0x41|0x00 0x00|
+|ATmega3290PA|flash|6|0x41|0x00 0x00|
+|ATmega3290P|flash|6|0x41|0x00 0x00|
+|ATmega329A|flash|6|0x41|0x00 0x00|
+|ATmega329|flash|6|0x41|0x00 0x00|
+|ATmega329PA|flash|6|0x41|0x00 0x00|
+|ATmega329P|flash|6|0x41|0x00 0x00|
+|ATmega32A|flash|6|0x21|0xFF 0x00|
+|ATmega32C1|flash|6|0x41|0x00 0x00|
+|ATmega32|flash|6|0x21|0xFF 0x00|
+|ATmega32HVB|flash|6|0x41|0x00 0x00|
+|ATmega32HVBrevB|flash|6|0x41|0x00 0x00|
+|ATmega32M1|flash|6|0x41|0x00 0x00|
|ATmega32U2|flash|6|0x41|0x00 0x00|
|ATmega32U4|flash|6|0x41|0x00 0x00|
-|ATmega48A|flash|10|0x41|0x00 0x00|
-|ATmega48|flash|10|0x41|0x00 0x00|
-|ATmega48PA|flash|10|0x41|0x00 0x00|
-|ATmega48PB|flash|10|0x41|0x00 0x00|
-|ATmega48P|flash|10|0x41|0x00 0x00|
-|ATmega640|flash|10|0x41|0x00 0x00|
-|ATmega644A|flash|10|0x41|0x00 0x00|
-|ATmega644|flash|10|0x41|0x00 0x00|
-|ATmega644PA|flash|10|0x41|0x00 0x00|
-|ATmega644P|flash|10|0x41|0x00 0x00|
+|ATmega48A|flash|6|0x41|0x00 0x00|
+|ATmega48|flash|6|0x41|0x00 0x00|
+|ATmega48PA|flash|6|0x41|0x00 0x00|
+|ATmega48PB|flash|6|0x41|0x00 0x00|
+|ATmega48P|flash|6|0x41|0x00 0x00|
+|ATmega640|flash|6|0x41|0x00 0x00|
+|ATmega644A|flash|6|0x41|0x00 0x00|
+|ATmega644|flash|6|0x41|0x00 0x00|
+|ATmega644PA|flash|6|0x41|0x00 0x00|
+|ATmega644P|flash|6|0x41|0x00 0x00|
|ATmega644RFR2|flash|50|0x41|0x00 0x00|
-|ATmega6450A|flash|10|0x41|0x00 0x00|
-|ATmega6450|flash|10|0x41|0x00 0x00|
-|ATmega6450P|flash|10|0x41|0x00 0x00|
-|ATmega645A|flash|10|0x41|0x00 0x00|
-|ATmega645|flash|10|0x41|0x00 0x00|
-|ATmega645P|flash|10|0x41|0x00 0x00|
-|ATmega6490A|flash|10|0x41|0x00 0x00|
-|ATmega6490|flash|10|0x41|0x00 0x00|
-|ATmega6490P|flash|10|0x41|0x00 0x00|
-|ATmega649A|flash|10|0x41|0x00 0x00|
-|ATmega649|flash|10|0x41|0x00 0x00|
-|ATmega649P|flash|10|0x41|0x00 0x00|
-|ATmega64A|flash|10|0x21|0xFF 0x00|
-|ATmega64C1|flash|10|0x41|0x00 0x00|
-|ATmega64|flash|10|0x21|0xFF 0x00|
-|ATmega64HVE2|flash|10|0x41|0x00 0x00|
-|ATmega64M1|flash|10|0x41|0x00 0x00|
+|ATmega6450A|flash|6|0x41|0x00 0x00|
+|ATmega6450|flash|6|0x41|0x00 0x00|
+|ATmega6450P|flash|6|0x41|0x00 0x00|
+|ATmega645A|flash|6|0x41|0x00 0x00|
+|ATmega645|flash|6|0x41|0x00 0x00|
+|ATmega645P|flash|6|0x41|0x00 0x00|
+|ATmega6490A|flash|6|0x41|0x00 0x00|
+|ATmega6490|flash|6|0x41|0x00 0x00|
+|ATmega6490P|flash|6|0x41|0x00 0x00|
+|ATmega649A|flash|6|0x41|0x00 0x00|
+|ATmega649|flash|6|0x41|0x00 0x00|
+|ATmega649P|flash|6|0x41|0x00 0x00|
+|ATmega64A|flash|6|0x21|0xFF 0x00|
+|ATmega64C1|flash|6|0x41|0x00 0x00|
+|ATmega64|flash|6|0x21|0xFF 0x00|
+|ATmega64HVE2|flash|6|0x21|0xFF 0x00|
+|ATmega64M1|flash|6|0x41|0x00 0x00|
|ATmega64RFR2|flash|50|0x41|0x00 0x00|
-|ATmega8515|flash|10|0x21|0xFF 0x00|
-|ATmega8535|flash|10|0x21|0xFF 0x00|
-|ATmega88A|flash|10|0x41|0x00 0x00|
-|ATmega88|flash|10|0x41|0x00 0x00|
-|ATmega88PA|flash|10|0x41|0x00 0x00|
-|ATmega88PB|flash|10|0x41|0x00 0x00|
-|ATmega88P|flash|10|0x41|0x00 0x00|
-|ATmega8A|flash|10|0x21|0xFF 0x00|
-|ATmega8|flash|10|0x21|0xFF 0x00|
-|ATmega8HVA|flash|10|0x41|0x00 0x00|
+|ATmega8515|flash|6|0x21|0xFF 0x00|
+|ATmega8535|flash|6|0x21|0xFF 0x00|
+|ATmega88A|flash|6|0x41|0x00 0x00|
+|ATmega88|flash|6|0x41|0x00 0x00|
+|ATmega88PA|flash|6|0x41|0x00 0x00|
+|ATmega88PB|flash|6|0x41|0x00 0x00|
+|ATmega88P|flash|6|0x41|0x00 0x00|
+|ATmega8A|flash|6|0x21|0xFF 0x00|
+|ATmega8|flash|6|0x21|0xFF 0x00|
|ATmega8U2|flash|6|0x41|0x00 0x00|
-|ATtiny12|flash|10|0x04|0xFF 0x00|
-|ATtiny13A|flash|10|0x41|0x00 0x00|
-|ATtiny13|flash|10|0x41|0x00 0x00|
-|ATtiny15|flash|10|0x04|0xFF 0x00|
-|ATtiny1634|flash|10|0x41|0x00 0x00|
+|ATtiny12|flash|10|0x02|0xFF 0x00|
+|ATtiny13A|flash|6|0x41|0x00 0x00|
+|ATtiny13|flash|6|0x41|0x00 0x00|
+|ATtiny15|flash|5|0x04|0xFF 0x00|
+|ATtiny1634|flash|6|0x41|0x00 0x00|
|ATtiny167|flash|10|0x41|0x00 0x00|
-|ATtiny2313A|flash|10|0x41|0x00 0x00|
-|ATtiny2313|flash|10|0x41|0x00 0x00|
-|ATtiny24A|flash|10|0x41|0x00 0x00|
-|ATtiny24|flash|10|0x41|0x00 0x00|
-|ATtiny25|flash|10|0x41|0x00 0x00|
+|ATtiny2313A|flash|6|0x41|0x00 0x00|
+|ATtiny2313|flash|6|0x41|0x00 0x00|
+|ATtiny24A|flash|6|0x41|0x00 0x00|
+|ATtiny24|flash|6|0x41|0x00 0x00|
+|ATtiny25|flash|6|0x41|0x00 0x00|
|ATtiny261A|flash|10|0x41|0x00 0x00|
|ATtiny261|flash|10|0x41|0x00 0x00|
-|ATtiny26|flash|10|0x21|0xFF 0x00|
-|ATtiny4313|flash|10|0x41|0x00 0x00|
+|ATtiny26|flash|6|0x21|0xFF 0x00|
+|ATtiny4313|flash|6|0x41|0x00 0x00|
|ATtiny43U|flash|10|0x41|0x00 0x00|
-|ATtiny441|flash|10|0x41|0x00 0x00|
-|ATtiny44A|flash|10|0x41|0x00 0x00|
-|ATtiny44|flash|10|0x41|0x00 0x00|
-|ATtiny45|flash|10|0x41|0x00 0x00|
+|ATtiny441|flash|6|0x41|0x00 0x00|
+|ATtiny44A|flash|6|0x41|0x00 0x00|
+|ATtiny44|flash|6|0x41|0x00 0x00|
+|ATtiny45|flash|6|0x41|0x00 0x00|
|ATtiny461A|flash|10|0x41|0x00 0x00|
|ATtiny461|flash|10|0x41|0x00 0x00|
-|ATtiny48|flash|10|0x41|0x00 0x00|
-|ATtiny828|flash|10|0x41|0x00 0x00|
-|ATtiny841|flash|10|0x41|0x00 0x00|
-|ATtiny84A|flash|10|0x41|0x00 0x00|
-|ATtiny84|flash|10|0x41|0x00 0x00|
-|ATtiny85|flash|10|0x41|0x00 0x00|
+|ATtiny48|flash|6|0x41|0x00 0x00|
+|ATtiny828|flash|6|0x41|0x00 0x00|
+|ATtiny841|flash|6|0x41|0x00 0x00|
+|ATtiny84A|flash|6|0x41|0x00 0x00|
+|ATtiny84|flash|6|0x41|0x00 0x00|
+|ATtiny85|flash|6|0x41|0x00 0x00|
|ATtiny861A|flash|10|0x41|0x00 0x00|
|ATtiny861|flash|10|0x41|0x00 0x00|
|ATtiny87|flash|10|0x41|0x00 0x00|
-|ATtiny88|flash|10|0x41|0x00 0x00|
+|ATtiny88|flash|6|0x41|0x00 0x00| STK500 eeprom parameters
STK600 eeprom parameters
Diff STK500/STK600 eeprom parametersdiff --git a/tmp/stk500e b/tmp/stk600e
index b7faeaa..3d8d21b 100644
--- a/tmp/1se
+++ b/tmp/2se
@@ -9,11 +9,11 @@
|AT90PWM3B|eeprom|5|0x41|0x00 0x00|
|AT90PWM3|eeprom|5|0x41|0x00 0x00|
|AT90PWM81|eeprom|5|0x41|0x00 0x00|
-|AT90USB1286|eeprom|10|0x41|0x00 0x00|
-|AT90USB1287|eeprom|10|0x41|0x00 0x00|
+|AT90USB1286|eeprom|20|0x41|0x00 0x00|
+|AT90USB1287|eeprom|20|0x41|0x00 0x00|
|AT90USB162|eeprom|20|0x41|0x00 0x00|
-|AT90USB646|eeprom|10|0x41|0x00 0x00|
-|AT90USB647|eeprom|10|0x41|0x00 0x00|
+|AT90USB646|eeprom|20|0x41|0x00 0x00|
+|AT90USB647|eeprom|20|0x41|0x00 0x00|
|AT90USB82|eeprom|20|0x41|0x00 0x00|
|ATA5272|eeprom|10|0x41|0x00 0x00|
|ATA5505|eeprom|10|0x41|0x00 0x00|
@@ -33,9 +33,9 @@
|ATA5835|eeprom|20|0x41|0x00 0x00|
|ATA6285|eeprom|5|0x41|0x00 0x00|
|ATA6286|eeprom|5|0x41|0x00 0x00|
-|ATA6612C|eeprom|20|0x41|0x00 0x00|
-|ATA6613C|eeprom|20|0x41|0x00 0x00|
-|ATA6614Q|eeprom|20|0x41|0x00 0x00|
+|ATA6612C|eeprom|5|0x41|0x00 0x00|
+|ATA6613C|eeprom|5|0x41|0x00 0x00|
+|ATA6614Q|eeprom|5|0x41|0x00 0x00|
|ATA6616C|eeprom|10|0x41|0x00 0x00|
|ATA6617C|eeprom|10|0x41|0x00 0x00|
|ATA664251|eeprom|10|0x41|0x00 0x00|
@@ -48,31 +48,30 @@
|ATmega1284|eeprom|10|0x41|0x00 0x00|
|ATmega1284P|eeprom|10|0x41|0x00 0x00|
|ATmega1284RFR2|eeprom|50|0x41|0x00 0x00|
-|ATmega128A|eeprom|20|0x04|0xFF 0xFF|
-|ATmega128|eeprom|20|0x04|0xFF 0xFF|
+|ATmega128A|eeprom|12|0x04|0xFF 0xFF|
+|ATmega128|eeprom|12|0x04|0xFF 0xFF|
|ATmega128RFA1|eeprom|50|0x41|0x00 0x00|
|ATmega128RFR2|eeprom|50|0x41|0x00 0x00|
|ATmega162|eeprom|20|0x41|0x00 0x00|
-|ATmega164A|eeprom|20|0x41|0x00 0x00|
-|ATmega164PA|eeprom|20|0x41|0x00 0x00|
-|ATmega164P|eeprom|20|0x41|0x00 0x00|
+|ATmega164A|eeprom|10|0x41|0x00 0x00|
+|ATmega164PA|eeprom|10|0x41|0x00 0x00|
+|ATmega164P|eeprom|10|0x41|0x00 0x00|
|ATmega165A|eeprom|20|0x41|0x00 0x00|
|ATmega165PA|eeprom|20|0x41|0x00 0x00|
|ATmega165P|eeprom|20|0x41|0x00 0x00|
-|ATmega168A|eeprom|20|0x41|0x00 0x00|
-|ATmega168|eeprom|20|0x41|0x00 0x00|
-|ATmega168PA|eeprom|20|0x41|0x00 0x00|
-|ATmega168PB|eeprom|20|0x41|0x00 0x00|
-|ATmega168P|eeprom|20|0x41|0x00 0x00|
+|ATmega168A|eeprom|5|0x41|0x00 0x00|
+|ATmega168|eeprom|5|0x41|0x00 0x00|
+|ATmega168PA|eeprom|5|0x41|0x00 0x00|
+|ATmega168PB|eeprom|5|0x41|0x00 0x00|
+|ATmega168P|eeprom|5|0x41|0x00 0x00|
|ATmega169A|eeprom|20|0x41|0x00 0x00|
|ATmega169PA|eeprom|20|0x41|0x00 0x00|
|ATmega169P|eeprom|20|0x41|0x00 0x00|
-|ATmega16A|eeprom|20|0x04|0xFF 0xFF|
-|ATmega16|eeprom|20|0x04|0xFF 0xFF|
-|ATmega16HVA|eeprom|20|0x41|0x00 0x00|
+|ATmega16A|eeprom|10|0x04|0xFF 0xFF|
+|ATmega16|eeprom|10|0x04|0xFF 0xFF|
|ATmega16HVB|eeprom|10|0x41|0x00 0x00|
|ATmega16HVBrevB|eeprom|10|0x41|0x00 0x00|
-|ATmega16M1|eeprom|10|0x41|0x00 0x00|
+|ATmega16M1|eeprom|5|0x41|0x00 0x00|
|ATmega16U2|eeprom|20|0x41|0x00 0x00|
|ATmega16U4|eeprom|20|0x41|0x00 0x00|
|ATmega2560|eeprom|10|0x41|0x00 0x00|
@@ -91,9 +90,9 @@
|ATmega325|eeprom|10|0x41|0x00 0x00|
|ATmega325PA|eeprom|10|0x41|0x00 0x00|
|ATmega325P|eeprom|10|0x41|0x00 0x00|
-|ATmega328|eeprom|20|0x41|0x00 0x00|
-|ATmega328PB|eeprom|20|0x41|0x00 0x00|
-|ATmega328P|eeprom|20|0x41|0x00 0x00|
+|ATmega328|eeprom|5|0x41|0x00 0x00|
+|ATmega328PB|eeprom|5|0x41|0x00 0x00|
+|ATmega328P|eeprom|5|0x41|0x00 0x00|
|ATmega3290A|eeprom|10|0x41|0x00 0x00|
|ATmega3290|eeprom|10|0x41|0x00 0x00|
|ATmega3290PA|eeprom|10|0x41|0x00 0x00|
@@ -102,19 +101,19 @@
|ATmega329|eeprom|10|0x41|0x00 0x00|
|ATmega329PA|eeprom|10|0x41|0x00 0x00|
|ATmega329P|eeprom|10|0x41|0x00 0x00|
-|ATmega32A|eeprom|20|0x04|0xFF 0xFF|
-|ATmega32C1|eeprom|10|0x41|0x00 0x00|
-|ATmega32|eeprom|20|0x04|0xFF 0xFF|
+|ATmega32A|eeprom|10|0x04|0xFF 0xFF|
+|ATmega32C1|eeprom|5|0x41|0x00 0x00|
+|ATmega32|eeprom|10|0x04|0xFF 0xFF|
|ATmega32HVB|eeprom|10|0x41|0x00 0x00|
|ATmega32HVBrevB|eeprom|10|0x41|0x00 0x00|
-|ATmega32M1|eeprom|10|0x41|0x00 0x00|
+|ATmega32M1|eeprom|5|0x41|0x00 0x00|
|ATmega32U2|eeprom|20|0x41|0x00 0x00|
|ATmega32U4|eeprom|20|0x41|0x00 0x00|
-|ATmega48A|eeprom|20|0x41|0x00 0x00|
-|ATmega48|eeprom|20|0x41|0x00 0x00|
-|ATmega48PA|eeprom|20|0x41|0x00 0x00|
-|ATmega48PB|eeprom|20|0x41|0x00 0x00|
-|ATmega48P|eeprom|20|0x41|0x00 0x00|
+|ATmega48A|eeprom|5|0x41|0x00 0x00|
+|ATmega48|eeprom|5|0x41|0x00 0x00|
+|ATmega48PA|eeprom|5|0x41|0x00 0x00|
+|ATmega48PB|eeprom|5|0x41|0x00 0x00|
+|ATmega48P|eeprom|5|0x41|0x00 0x00|
|ATmega640|eeprom|10|0x41|0x00 0x00|
|ATmega644A|eeprom|10|0x41|0x00 0x00|
|ATmega644|eeprom|10|0x41|0x00 0x00|
@@ -134,51 +133,50 @@
|ATmega649|eeprom|10|0x41|0x00 0x00|
|ATmega649P|eeprom|10|0x41|0x00 0x00|
|ATmega64A|eeprom|20|0x04|0xFF 0xFF|
-|ATmega64C1|eeprom|10|0x41|0x00 0x00|
+|ATmega64C1|eeprom|5|0x41|0x00 0x00|
|ATmega64|eeprom|20|0x04|0xFF 0xFF|
-|ATmega64HVE2|eeprom|20|0x41|0x00 0x00|
-|ATmega64M1|eeprom|10|0x41|0x00 0x00|
+|ATmega64HVE2|eeprom|20|0x04|0xFF 0xFF|
+|ATmega64M1|eeprom|5|0x41|0x00 0x00|
|ATmega64RFR2|eeprom|50|0x41|0x00 0x00|
-|ATmega8515|eeprom|20|0x04|0xFF 0xFF|
-|ATmega8535|eeprom|20|0x04|0xFF 0xFF|
-|ATmega88A|eeprom|20|0x41|0x00 0x00|
-|ATmega88|eeprom|20|0x41|0x00 0x00|
-|ATmega88PA|eeprom|20|0x41|0x00 0x00|
-|ATmega88PB|eeprom|20|0x41|0x00 0x00|
-|ATmega88P|eeprom|20|0x41|0x00 0x00|
-|ATmega8A|eeprom|20|0x04|0xFF 0xFF|
-|ATmega8|eeprom|20|0x04|0xFF 0xFF|
-|ATmega8HVA|eeprom|20|0x41|0x00 0x00|
+|ATmega8515|eeprom|10|0x04|0xFF 0xFF|
+|ATmega8535|eeprom|10|0x04|0xFF 0xFF|
+|ATmega88A|eeprom|5|0x41|0x00 0x00|
+|ATmega88|eeprom|5|0x41|0x00 0x00|
+|ATmega88PA|eeprom|5|0x41|0x00 0x00|
+|ATmega88PB|eeprom|5|0x41|0x00 0x00|
+|ATmega88P|eeprom|5|0x41|0x00 0x00|
+|ATmega8A|eeprom|10|0x04|0xFF 0xFF|
+|ATmega8|eeprom|10|0x04|0xFF 0xFF|
|ATmega8U2|eeprom|20|0x41|0x00 0x00|
-|ATtiny12|eeprom|20|0x04|0xFF 0xFF|
+|ATtiny12|eeprom|8|0x02|0xFF 0xFF|
|ATtiny13A|eeprom|5|0x41|0x00 0x00|
|ATtiny13|eeprom|5|0x41|0x00 0x00|
-|ATtiny15|eeprom|20|0x04|0xFF 0xFF|
-|ATtiny1634|eeprom|20|0x41|0x00 0x00|
+|ATtiny15|eeprom|10|0x04|0xFF 0xFF|
+|ATtiny1634|eeprom|5|0x41|0x00 0x00|
|ATtiny167|eeprom|10|0x41|0x00 0x00|
|ATtiny2313A|eeprom|6|0x41|0x00 0x00|
|ATtiny2313|eeprom|6|0x41|0x00 0x00|
-|ATtiny24A|eeprom|10|0x41|0x00 0x00|
-|ATtiny24|eeprom|10|0x41|0x00 0x00|
+|ATtiny24A|eeprom|5|0x41|0x00 0x00|
+|ATtiny24|eeprom|5|0x41|0x00 0x00|
|ATtiny25|eeprom|5|0x41|0x00 0x00|
|ATtiny261A|eeprom|10|0x41|0x00 0x00|
|ATtiny261|eeprom|10|0x41|0x00 0x00|
-|ATtiny26|eeprom|20|0x04|0xFF 0xFF|
+|ATtiny26|eeprom|10|0x04|0xFF 0xFF|
|ATtiny4313|eeprom|6|0x41|0x00 0x00|
|ATtiny43U|eeprom|10|0x41|0x00 0x00|
-|ATtiny441|eeprom|10|0x41|0x00 0x00|
-|ATtiny44A|eeprom|10|0x41|0x00 0x00|
-|ATtiny44|eeprom|10|0x41|0x00 0x00|
+|ATtiny441|eeprom|5|0x41|0x00 0x00|
+|ATtiny44A|eeprom|5|0x41|0x00 0x00|
+|ATtiny44|eeprom|5|0x41|0x00 0x00|
|ATtiny45|eeprom|5|0x41|0x00 0x00|
|ATtiny461A|eeprom|10|0x41|0x00 0x00|
|ATtiny461|eeprom|10|0x41|0x00 0x00|
-|ATtiny48|eeprom|20|0x41|0x00 0x00|
-|ATtiny828|eeprom|20|0x41|0x00 0x00|
-|ATtiny841|eeprom|10|0x41|0x00 0x00|
-|ATtiny84A|eeprom|10|0x41|0x00 0x00|
-|ATtiny84|eeprom|10|0x41|0x00 0x00|
+|ATtiny48|eeprom|5|0x41|0x00 0x00|
+|ATtiny828|eeprom|5|0x41|0x00 0x00|
+|ATtiny841|eeprom|5|0x41|0x00 0x00|
+|ATtiny84A|eeprom|5|0x41|0x00 0x00|
+|ATtiny84|eeprom|5|0x41|0x00 0x00|
|ATtiny85|eeprom|5|0x41|0x00 0x00|
|ATtiny861A|eeprom|10|0x41|0x00 0x00|
|ATtiny861|eeprom|10|0x41|0x00 0x00|
|ATtiny87|eeprom|10|0x41|0x00 0x00|
-|ATtiny88|eeprom|20|0x41|0x00 0x00|
+|ATtiny88|eeprom|5|0x41|0x00 0x00| So what should we do about the STK600 parameters here? |
I think STK600 is not well supported as it is not popular (the adapters are just too expensive). @MCUdude has the STK600 but I am not so sure he has the adapter for some of the parts mentioned here. |
I think ATmega64HVE2 is a dead part so we may not really care for it. It does not exist any more from Microchip.com. Datasheet is only available from 3rd party web site using Google search. |
As for ATTiny12, is it possible that STK500 only supports High Voltage Serial programming (RDY/BSY polling) and STK600 only supports Low Voltage Serial Programming? Datasheet: |
OK, will merge soon with STK500 ISP programming values unless there are dissenting voices. |
I noted that some of classic parts have wrong values here. These parameters are used for the STK500 v2 programming and given in the ATDF files. I injected them using an automated mechanism (so either all is wrong or all is OK).
As mode is a bitfield I decided to give it as a hex number as it is easier to read. See Table 5-23, pg 11 in AVR068. That's the first commit. If you want to see which values have been corrected review the second commit.