From ed785c5798d356af7935857ca834adededae15a3 Mon Sep 17 00:00:00 2001 From: Eve Entropia Date: Tue, 30 Mar 2010 20:09:55 +0200 Subject: [PATCH] arduino-0018-linux-x64 --- arduino-0018-linux-x64/arduino | 22 + .../AnalogInOutSerial/AnalogInOutSerial.pde | 50 + .../Analog/AnalogInSerial/AnalogInSerial.pde | 29 + .../Analog/AnalogInput/AnalogInput.pde | 48 + .../AnalogWriteMega/AnalogWriteMega.pde | 42 + .../Analog/Calibration/Calibration.pde | 73 + .../examples/Analog/Fading/Fading.pde | 43 + .../examples/Analog/Smoothing/Smoothing.pde | 64 + .../examples/ArduinoISP/ArduinoISP.pde | 480 + .../Communication/ASCIITable/ASCIITable.pde | 73 + .../examples/Communication/Dimmer/Dimmer.pde | 360 + .../examples/Communication/Graph/Graph.pde | 578 + .../examples/Communication/MIDI/Midi.pde | 47 + .../MultiSerialMega/MultiSerialMega.pde | 31 + .../PhysicalPixel/PhysicalPixel.pde | 707 + .../SerialCallResponse/SerialCallResponse.pde | 1193 ++ .../SerialCallResponseASCII.pde | 1267 ++ .../VirtualColorMixer/VirtualColorMixer.pde | 697 + .../examples/Control/Arrays/Arrays.pde | 55 + .../ForLoopIteration/ForLoopIteration.pde | 45 + .../IfStatementConditional.pde | 53 + .../WhileStatementConditional.pde | 86 + .../Control/switchCase/switchCase.pde | 59 + .../Control/switchCase2/switchCase2.pde | 64 + .../examples/Digital/Blink/Blink.pde | 40 + .../BlinkWithoutDelay/BlinkWithoutDelay.pde | 58 + .../examples/Digital/Button/Button.pde | 54 + .../examples/Digital/Debounce/Debounce.pde | 74 + .../StateChangeDetection.pde | 90 + .../examples/Digital/toneKeyboard/pitches.h | 95 + .../Digital/toneKeyboard/toneKeyboard.pde | 49 + .../examples/Digital/toneMelody/pitches.h | 95 + .../Digital/toneMelody/toneMelody.pde | 48 + .../tonePitchFollower/tonePitchFollower.pde | 43 + .../RowColumnScanning/RowColumnScanning.pde | 112 + .../examples/Display/barGraph/barGraph.pde | 58 + .../examples/Sensors/ADXL3xx/ADXL3xx.pde | 62 + .../examples/Sensors/Knock/Knock.pde | 53 + .../Sensors/Memsic2125/Memsic2125.pde | 61 + .../examples/Sensors/Ping/Ping.pde | 82 + .../AnalogReadSerial/AnalogReadSerial.pde | 12 + .../Stubs/AnalogReadWrite/AnalogReadWrite.pde | 13 + .../Stubs/BareMinumum/BareMinumum.pde | 9 + .../DigitalReadSerial/DigitalReadSerial.pde | 13 + .../DigitalReadWrite/DigitalReadWrite.pde | 12 + .../examples/Stubs/HelloWorld/HelloWorld.pde | 9 + .../hardware/arduino/boards.txt | 220 + .../bootloaders/atmega/ATmegaBOOT_168.c | 1054 ++ .../atmega/ATmegaBOOT_168_atmega1280.hex | 245 + .../atmega/ATmegaBOOT_168_atmega328.hex | 125 + .../ATmegaBOOT_168_atmega328_pro_8MHz.hex | 124 + .../atmega/ATmegaBOOT_168_diecimila.hex | 126 + .../bootloaders/atmega/ATmegaBOOT_168_ng.hex | 110 + .../atmega/ATmegaBOOT_168_pro_8MHz.hex | 126 + .../arduino/bootloaders/atmega/Makefile | 224 + .../arduino/bootloaders/atmega8/ATmegaBOOT.c | 507 + .../bootloaders/atmega8/ATmegaBOOT.hex | 66 + .../arduino/bootloaders/atmega8/Makefile | 88 + .../arduino/bootloaders/bt/ATmegaBOOT_168.c | 1032 ++ .../arduino/bootloaders/bt/ATmegaBOOT_168.hex | 121 + .../bootloaders/lilypad/LilyPadBOOT_168.hex | 117 + .../bootloaders/lilypad/src/ATmegaBOOT.c | 979 ++ .../arduino/bootloaders/lilypad/src/Makefile | 84 + .../arduino/cores/arduino/HardwareSerial.cpp | 226 + .../arduino/cores/arduino/HardwareSerial.h | 66 + .../hardware/arduino/cores/arduino/Print.cpp | 206 + .../hardware/arduino/cores/arduino/Print.h | 62 + .../hardware/arduino/cores/arduino/Tone.cpp | 515 + .../arduino/cores/arduino/WConstants.h | 1 + .../arduino/cores/arduino/WInterrupts.c | 215 + .../hardware/arduino/cores/arduino/WMath.cpp | 60 + .../hardware/arduino/cores/arduino/WProgram.h | 32 + .../hardware/arduino/cores/arduino/binary.h | 515 + .../hardware/arduino/cores/arduino/main.cpp | 14 + .../arduino/cores/arduino/pins_arduino.c | 469 + .../arduino/cores/arduino/pins_arduino.h | 76 + .../hardware/arduino/cores/arduino/wiring.c | 238 + .../hardware/arduino/cores/arduino/wiring.h | 133 + .../arduino/cores/arduino/wiring_analog.c | 179 + .../arduino/cores/arduino/wiring_digital.c | 111 + .../arduino/cores/arduino/wiring_private.h | 68 + .../arduino/cores/arduino/wiring_pulse.c | 66 + .../arduino/cores/arduino/wiring_shift.c | 40 + .../hardware/arduino/programmers.txt | 20 + arduino-0018-linux-x64/hardware/tools/avrdude | Bin 0 -> 704076 bytes .../hardware/tools/avrdude.conf | 11914 ++++++++++++++++ .../hardware/tools/avrdude.conf~ | 11914 ++++++++++++++++ arduino-0018-linux-x64/lib/RXTXcomm.jar | Bin 0 -> 59464 bytes arduino-0018-linux-x64/lib/about.jpg | Bin 0 -> 115730 bytes arduino-0018-linux-x64/lib/antlr.jar | Bin 0 -> 443876 bytes arduino-0018-linux-x64/lib/core.jar | Bin 0 -> 230539 bytes arduino-0018-linux-x64/lib/ecj.jar | Bin 0 -> 1647271 bytes arduino-0018-linux-x64/lib/jna.jar | Bin 0 -> 625227 bytes arduino-0018-linux-x64/lib/keywords.txt | 173 + arduino-0018-linux-x64/lib/librxtxSerial.so | Bin 0 -> 174170 bytes arduino-0018-linux-x64/lib/oro.jar | Bin 0 -> 26707 bytes arduino-0018-linux-x64/lib/pde.jar | Bin 0 -> 538428 bytes arduino-0018-linux-x64/lib/preferences.txt | 227 + arduino-0018-linux-x64/lib/theme/buttons.gif | Bin 0 -> 2739 bytes arduino-0018-linux-x64/lib/theme/resize.gif | Bin 0 -> 869 bytes .../lib/theme/tab-sel-left.gif | Bin 0 -> 832 bytes .../lib/theme/tab-sel-menu.gif | Bin 0 -> 891 bytes .../lib/theme/tab-sel-mid.gif | Bin 0 -> 830 bytes .../lib/theme/tab-sel-right.gif | Bin 0 -> 834 bytes .../lib/theme/tab-unsel-left.gif | Bin 0 -> 844 bytes .../lib/theme/tab-unsel-menu.gif | Bin 0 -> 896 bytes .../lib/theme/tab-unsel-mid.gif | Bin 0 -> 828 bytes .../lib/theme/tab-unsel-right.gif | Bin 0 -> 842 bytes arduino-0018-linux-x64/lib/theme/theme.txt | 101 + .../libraries/EEPROM/EEPROM.cpp | 50 + .../libraries/EEPROM/EEPROM.h | 35 + .../examples/eeprom_clear/eeprom_clear.pde | 21 + .../examples/eeprom_read/eeprom_read.pde | 38 + .../examples/eeprom_write/eeprom_write.pde | 38 + .../libraries/EEPROM/keywords.txt | 18 + .../libraries/Ethernet/Client.cpp | 148 + .../libraries/Ethernet/Client.h | 31 + .../libraries/Ethernet/Ethernet.cpp | 38 + .../libraries/Ethernet/Ethernet.h | 22 + .../libraries/Ethernet/Server.cpp | 91 + .../libraries/Ethernet/Server.h | 25 + .../examples/ChatServer/ChatServer.pde | 34 + .../Ethernet/examples/WebClient/WebClient.pde | 41 + .../Ethernet/examples/WebServer/WebServer.pde | 61 + .../libraries/Ethernet/keywords.txt | 30 + .../libraries/Ethernet/utility/socket.c | 558 + .../libraries/Ethernet/utility/socket.h | 23 + .../libraries/Ethernet/utility/spi.h | 58 + .../libraries/Ethernet/utility/types.h | 165 + .../libraries/Ethernet/utility/w5100.c | 1302 ++ .../libraries/Ethernet/utility/w5100.h | 299 + .../libraries/Firmata/Firmata.cpp | 442 + .../libraries/Firmata/Firmata.h | 230 + .../libraries/Firmata/LICENSE.txt | 458 + .../libraries/Firmata/TODO.txt | 14 + .../AllInputsFirmata/AllInputsFirmata.pde | 71 + .../examples/AnalogFirmata/AnalogFirmata.pde | 83 + .../Firmata/examples/AnalogFirmata/Makefile | 263 + .../examples/EchoString/EchoString.pde | 40 + .../Firmata/examples/EchoString/Makefile | 263 + .../examples/I2CFirmata/I2CFirmata.pde | 217 + .../examples/OldStandardFirmata/LICENSE.txt | 458 + .../OldStandardFirmata/OldStandardFirmata.pde | 228 + .../Firmata/examples/ServoFirmata/Makefile | 263 + .../examples/ServoFirmata/ServoFirmata.pde | 39 + .../examples/SimpleAnalogFirmata/Makefile | 263 + .../SimpleAnalogFirmata.pde | 32 + .../examples/SimpleDigitalFirmata/Makefile | 263 + .../SimpleDigitalFirmata.pde | 57 + .../examples/StandardFirmata/LICENSE.txt | 458 + .../Firmata/examples/StandardFirmata/Makefile | 273 + .../StandardFirmata/StandardFirmata.pde | 302 + .../libraries/Firmata/keywords.txt | 62 + .../libraries/LiquidCrystal/LiquidCrystal.cpp | 309 + .../libraries/LiquidCrystal/LiquidCrystal.h | 104 + .../examples/Autoscroll/Autoscroll.pde | 70 + .../LiquidCrystal/examples/Blink/Blink.pde | 58 + .../LiquidCrystal/examples/Cursor/Cursor.pde | 58 + .../examples/Display/Display.pde | 58 + .../examples/HelloWorld/HelloWorld.pde | 56 + .../LiquidCrystal/examples/Scroll/Scroll.pde | 83 + .../examples/SerialDisplay/SerialDisplay.pde | 62 + .../examples/TextDirection/TextDirection.pde | 84 + .../examples/setCursor/setCursor.pde | 68 + .../libraries/LiquidCrystal/keywords.txt | 37 + .../libraries/Matrix/Matrix.cpp | 229 + .../libraries/Matrix/Matrix.h | 54 + .../examples/hello_matrix/hello_matrix.pde | 42 + .../sprite_animation/sprite_animation.pde | 48 + .../libraries/Matrix/keywords.txt | 22 + .../libraries/Servo/Servo.cpp | 337 + .../libraries/Servo/Servo.h | 127 + .../libraries/Servo/examples/Knob/Knob.pde | 22 + .../libraries/Servo/examples/Sweep/Sweep.pde | 29 + .../libraries/Servo/keywords.txt | 24 + .../SoftwareSerial/SoftwareSerial.cpp | 227 + .../libraries/SoftwareSerial/SoftwareSerial.h | 56 + .../libraries/SoftwareSerial/keywords.txt | 18 + .../libraries/Sprite/Sprite.cpp | 95 + .../libraries/Sprite/Sprite.h | 48 + .../libraries/Sprite/binary.h | 515 + .../libraries/Sprite/keywords.txt | 534 + .../libraries/Stepper/Stepper.cpp | 220 + .../libraries/Stepper/Stepper.h | 83 + .../Stepper/examples/MotorKnob/MotorKnob.pde | 40 + .../libraries/Stepper/keywords.txt | 28 + .../libraries/Wire/Wire.cpp | 265 + arduino-0018-linux-x64/libraries/Wire/Wire.h | 67 + .../SFRRanger_reader/SFRRanger_reader.pde | 84 + .../digital_potentiometer.pde | 34 + .../examples/master_reader/master_reader.pde | 29 + .../examples/master_writer/master_writer.pde | 28 + .../slave_receiver/slave_receiver.pde | 35 + .../examples/slave_sender/slave_sender.pde | 29 + .../libraries/Wire/keywords.txt | 31 + .../libraries/Wire/utility/twi.c | 479 + .../libraries/Wire/utility/twi.h | 57 + arduino-0018-linux-x64/readme.txt | 408 + .../reference/ASCIIchart.html | 232 + arduino-0018-linux-x64/reference/Abs.html | 89 + .../reference/AnalogRead.html | 107 + .../reference/AnalogReference.html | 99 + .../reference/AnalogWrite.html | 115 + .../reference/Arithmetic.html | 100 + arduino-0018-linux-x64/reference/Array.html | 119 + .../reference/Assignment.html | 86 + .../reference/AttachInterrupt.html | 115 + .../reference/BeginSerial.html | 85 + arduino-0018-linux-x64/reference/Bit.html | 85 + .../reference/BitClear.html | 87 + arduino-0018-linux-x64/reference/BitRead.html | 87 + arduino-0018-linux-x64/reference/BitSet.html | 87 + .../reference/BitWrite.html | 89 + .../reference/Bitshift.html | 119 + .../reference/BitwiseAnd.html | 169 + .../reference/BitwiseCompound.html | 185 + .../reference/BitwiseXorNot.html | 84 + arduino-0018-linux-x64/reference/Board.html | 132 + arduino-0018-linux-x64/reference/Boolean.html | 111 + .../reference/BooleanVariables.html | 102 + arduino-0018-linux-x64/reference/Braces.html | 119 + arduino-0018-linux-x64/reference/Break.html | 85 + arduino-0018-linux-x64/reference/Byte.html | 78 + .../reference/ByteCast.html | 82 + arduino-0018-linux-x64/reference/Cast.html | 90 + arduino-0018-linux-x64/reference/Changes.html | 89 + arduino-0018-linux-x64/reference/Char.html | 85 + .../reference/CharCast.html | 82 + .../reference/ClientAvailable.html | 126 + .../reference/ClientConnect.html | 127 + .../reference/ClientConnected.html | 127 + .../reference/ClientConstructor.html | 126 + .../reference/ClientFlush.html | 81 + .../reference/ClientPrint.html | 85 + .../reference/ClientPrintln.html | 85 + .../reference/ClientRead.html | 81 + .../reference/ClientStop.html | 82 + .../reference/ClientWrite.html | 80 + .../reference/Comments.html | 88 + .../reference/Comparison.html | 94 + arduino-0018-linux-x64/reference/Const.html | 90 + .../reference/Constants.html | 112 + .../reference/Constrain.html | 92 + .../reference/Continue.html | 84 + arduino-0018-linux-x64/reference/Cos.html | 84 + arduino-0018-linux-x64/reference/Define.html | 99 + arduino-0018-linux-x64/reference/Delay.html | 108 + .../reference/DelayMicroseconds.html | 110 + .../reference/DetachInterrupt.html | 76 + .../reference/DigitalRead.html | 110 + .../reference/DigitalWrite.html | 113 + arduino-0018-linux-x64/reference/DoWhile.html | 87 + arduino-0018-linux-x64/reference/Double.html | 78 + arduino-0018-linux-x64/reference/EEPROM.html | 73 + .../reference/EEPROMRead.html | 109 + .../reference/EEPROMWrite.html | 102 + arduino-0018-linux-x64/reference/Else.html | 103 + .../reference/Ethernet.html | 96 + .../reference/EthernetBegin.html | 102 + .../reference/Extended.html | 226 + arduino-0018-linux-x64/reference/FAQ.html | 125 + arduino-0018-linux-x64/reference/Float.html | 98 + .../reference/FloatCast.html | 82 + arduino-0018-linux-x64/reference/For.html | 105 + .../reference/Fpconstants.html | 86 + .../reference/FunctionDeclaration.html | 140 + arduino-0018-linux-x64/reference/Goto.html | 93 + .../reference/Guide_ArduinoBT.html | 80 + .../Guide_ArduinoEthernetShield.html | 73 + .../reference/Guide_ArduinoLilyPad.html | 81 + .../reference/Guide_ArduinoMini.html | 106 + .../reference/Guide_ArduinoNano.html | 73 + .../reference/Guide_ArduinoPro.html | 96 + .../reference/Guide_ArduinoProMini.html | 90 + .../reference/Guide_ArduinoXbeeShield.html | 150 + .../reference/Guide_Board.html | 82 + .../reference/Guide_Environment.html | 166 + .../reference/Guide_Guide.html | 61 + .../reference/Guide_HomePage.html | 81 + .../reference/Guide_Introduction.html | 79 + .../reference/Guide_MacOSX.html | 125 + .../reference/Guide_RecentChanges.html | 135 + .../reference/Guide_References.html | 82 + .../reference/Guide_Troubleshooting.html | 257 + .../reference/Guide_Windows.html | 137 + .../reference/Guide_index.html | 86 + .../reference/HighByte.html | 83 + .../reference/HomePage.html | 192 + arduino-0018-linux-x64/reference/If.html | 110 + arduino-0018-linux-x64/reference/Include.html | 84 + .../reference/Increment.html | 93 + .../reference/IncrementCompound.html | 92 + arduino-0018-linux-x64/reference/Int.html | 101 + arduino-0018-linux-x64/reference/IntCast.html | 82 + .../reference/IntegerConstants.html | 133 + .../reference/Interrupts.html | 94 + .../reference/Keywords.html | 275 + .../reference/Libraries.html | 120 + .../reference/LiquidCrystal.html | 101 + .../reference/LiquidCrystalAutoscroll.html | 81 + .../reference/LiquidCrystalBegin.html | 83 + .../reference/LiquidCrystalBlink.html | 84 + .../reference/LiquidCrystalClear.html | 79 + .../reference/LiquidCrystalConstructor.html | 99 + .../reference/LiquidCrystalCreateChar.html | 110 + .../reference/LiquidCrystalCursor.html | 83 + .../reference/LiquidCrystalDisplay.html | 83 + .../reference/LiquidCrystalHome.html | 79 + .../reference/LiquidCrystalLeftToRight.html | 81 + .../reference/LiquidCrystalNoAutoscroll.html | 81 + .../reference/LiquidCrystalNoBlink.html | 83 + .../reference/LiquidCrystalNoCursor.html | 83 + .../reference/LiquidCrystalNoDisplay.html | 83 + .../reference/LiquidCrystalPrint.html | 97 + .../reference/LiquidCrystalRightToLeft.html | 81 + .../LiquidCrystalScrollDisplayLeft.html | 83 + .../LiquidCrystalScrollDisplayRight.html | 83 + .../reference/LiquidCrystalSetCursor.html | 83 + .../reference/LiquidCrystalWrite.html | 100 + arduino-0018-linux-x64/reference/Long.html | 87 + .../reference/LongCast.html | 82 + arduino-0018-linux-x64/reference/Loop.html | 94 + arduino-0018-linux-x64/reference/LowByte.html | 83 + arduino-0018-linux-x64/reference/Map.html | 125 + arduino-0018-linux-x64/reference/Max.html | 98 + arduino-0018-linux-x64/reference/Micros.html | 100 + arduino-0018-linux-x64/reference/Millis.html | 102 + arduino-0018-linux-x64/reference/Min.html | 98 + arduino-0018-linux-x64/reference/Modulo.html | 110 + .../reference/NoInterrupts.html | 92 + arduino-0018-linux-x64/reference/NoTone.html | 82 + arduino-0018-linux-x64/reference/PROGMEM.html | 197 + arduino-0018-linux-x64/reference/PinMode.html | 109 + arduino-0018-linux-x64/reference/Pointer.html | 71 + .../reference/PortManipulation.html | 128 + arduino-0018-linux-x64/reference/Pow.html | 86 + .../reference/PrintBinary.html | 80 + .../reference/PrintByte.html | 80 + .../reference/PrintHex.html | 80 + .../reference/PrintInteger.html | 80 + .../reference/PrintMode.html | 79 + .../reference/PrintNewline.html | 80 + .../reference/PrintOctal.html | 80 + .../reference/PrintString.html | 80 + arduino-0018-linux-x64/reference/PulseIn.html | 103 + arduino-0018-linux-x64/reference/Random.html | 116 + .../reference/RandomSeed.html | 100 + .../reference/RecentChanges.html | 395 + arduino-0018-linux-x64/reference/Return.html | 103 + arduino-0018-linux-x64/reference/Scope.html | 96 + .../reference/SemiColon.html | 77 + arduino-0018-linux-x64/reference/Serial.html | 90 + .../reference/SerialAvailable.html | 82 + .../reference/SerialRead.html | 82 + .../reference/SerialWrite.html | 82 + .../reference/Serial_Available.html | 121 + .../reference/Serial_Begin.html | 108 + .../reference/Serial_Flush.html | 73 + .../reference/Serial_Print.html | 200 + .../reference/Serial_Println.html | 137 + .../reference/Serial_Read.html | 98 + .../reference/Serial_Write.html | 79 + .../reference/ServerAvailable.html | 113 + .../reference/ServerBegin.html | 113 + .../reference/ServerConstructor.html | 113 + .../reference/ServerPrint.html | 85 + .../reference/ServerPrintln.html | 85 + .../reference/ServerWrite.html | 113 + arduino-0018-linux-x64/reference/Servo.html | 86 + .../reference/ServoAttach.html | 102 + .../reference/ServoAttached.html | 85 + .../reference/ServoDetach.html | 82 + .../reference/ServoRead.html | 84 + .../reference/ServoWrite.html | 99 + .../reference/ServoWriteMicroseconds.html | 103 + arduino-0018-linux-x64/reference/Setup.html | 86 + .../reference/ShiftOut.html | 146 + arduino-0018-linux-x64/reference/Sin.html | 85 + arduino-0018-linux-x64/reference/Sizeof.html | 107 + .../reference/SoftwareSerial.html | 91 + .../reference/SoftwareSerialBegin.html | 105 + .../reference/SoftwareSerialConstructor.html | 88 + .../reference/SoftwareSerialExample.html | 124 + .../reference/SoftwareSerialPrint.html | 118 + .../reference/SoftwareSerialPrintln.html | 118 + .../reference/SoftwareSerialRead.html | 95 + arduino-0018-linux-x64/reference/Sq.html | 80 + arduino-0018-linux-x64/reference/Sqrt.html | 80 + arduino-0018-linux-x64/reference/Static.html | 123 + arduino-0018-linux-x64/reference/Stepper.html | 80 + .../reference/StepperBipolarCircuit.html | 72 + .../reference/StepperConstructor.html | 88 + .../reference/StepperExample.html | 108 + .../reference/StepperSetSpeed.html | 81 + .../reference/StepperStep.html | 81 + .../reference/StepperUnipolarCircuit.html | 73 + arduino-0018-linux-x64/reference/String.html | 138 + .../reference/StyleGuide.html | 192 + .../reference/SwitchCase.html | 109 + arduino-0018-linux-x64/reference/Tan.html | 85 + arduino-0018-linux-x64/reference/Tone.html | 90 + .../reference/UnsignedChar.html | 83 + .../reference/UnsignedInt.html | 97 + .../reference/UnsignedLong.html | 101 + .../reference/VariableDeclaration.html | 113 + arduino-0018-linux-x64/reference/Void.html | 89 + .../reference/Volatile.html | 102 + arduino-0018-linux-x64/reference/While.html | 88 + arduino-0018-linux-x64/reference/Wire.html | 84 + .../reference/WireAvailable.html | 79 + .../reference/WireBegin.html | 78 + .../reference/WireBeginTransmission.html | 80 + .../reference/WireEndTransmission.html | 80 + .../reference/WireOnReceive.html | 79 + .../reference/WireOnRequest.html | 79 + .../reference/WireReceive.html | 79 + .../reference/WireRequestFrom.html | 82 + .../reference/WireSend.html | 88 + arduino-0018-linux-x64/reference/Word.html | 77 + .../reference/WordCast.html | 86 + arduino-0018-linux-x64/reference/arduino.css | 140 + .../reference/environment.html | 3 + arduino-0018-linux-x64/reference/index.html | 195 + arduino-0018-linux-x64/tools/Mangler/make.sh | 11 + .../tools/Mangler/src/Mangler.java | 94 + arduino-0018-linux-x64/tools/howto.txt | 143 + 426 files changed, 76732 insertions(+) create mode 100755 arduino-0018-linux-x64/arduino create mode 100644 arduino-0018-linux-x64/examples/Analog/AnalogInOutSerial/AnalogInOutSerial.pde create mode 100644 arduino-0018-linux-x64/examples/Analog/AnalogInSerial/AnalogInSerial.pde create mode 100644 arduino-0018-linux-x64/examples/Analog/AnalogInput/AnalogInput.pde create mode 100644 arduino-0018-linux-x64/examples/Analog/AnalogWriteMega/AnalogWriteMega.pde create mode 100644 arduino-0018-linux-x64/examples/Analog/Calibration/Calibration.pde create mode 100644 arduino-0018-linux-x64/examples/Analog/Fading/Fading.pde create mode 100644 arduino-0018-linux-x64/examples/Analog/Smoothing/Smoothing.pde create mode 100644 arduino-0018-linux-x64/examples/ArduinoISP/ArduinoISP.pde create mode 100644 arduino-0018-linux-x64/examples/Communication/ASCIITable/ASCIITable.pde create mode 100644 arduino-0018-linux-x64/examples/Communication/Dimmer/Dimmer.pde create mode 100644 arduino-0018-linux-x64/examples/Communication/Graph/Graph.pde create mode 100644 arduino-0018-linux-x64/examples/Communication/MIDI/Midi.pde create mode 100644 arduino-0018-linux-x64/examples/Communication/MultiSerialMega/MultiSerialMega.pde create mode 100644 arduino-0018-linux-x64/examples/Communication/PhysicalPixel/PhysicalPixel.pde create mode 100644 arduino-0018-linux-x64/examples/Communication/SerialCallResponse/SerialCallResponse.pde create mode 100644 arduino-0018-linux-x64/examples/Communication/SerialCallResponseASCII/SerialCallResponseASCII.pde create mode 100644 arduino-0018-linux-x64/examples/Communication/VirtualColorMixer/VirtualColorMixer.pde create mode 100644 arduino-0018-linux-x64/examples/Control/Arrays/Arrays.pde create mode 100644 arduino-0018-linux-x64/examples/Control/ForLoopIteration/ForLoopIteration.pde create mode 100644 arduino-0018-linux-x64/examples/Control/IfStatementConditional/IfStatementConditional.pde create mode 100644 arduino-0018-linux-x64/examples/Control/WhileStatementConditional/WhileStatementConditional.pde create mode 100644 arduino-0018-linux-x64/examples/Control/switchCase/switchCase.pde create mode 100644 arduino-0018-linux-x64/examples/Control/switchCase2/switchCase2.pde create mode 100644 arduino-0018-linux-x64/examples/Digital/Blink/Blink.pde create mode 100644 arduino-0018-linux-x64/examples/Digital/BlinkWithoutDelay/BlinkWithoutDelay.pde create mode 100644 arduino-0018-linux-x64/examples/Digital/Button/Button.pde create mode 100644 arduino-0018-linux-x64/examples/Digital/Debounce/Debounce.pde create mode 100644 arduino-0018-linux-x64/examples/Digital/StateChangeDetection/StateChangeDetection.pde create mode 100644 arduino-0018-linux-x64/examples/Digital/toneKeyboard/pitches.h create mode 100644 arduino-0018-linux-x64/examples/Digital/toneKeyboard/toneKeyboard.pde create mode 100644 arduino-0018-linux-x64/examples/Digital/toneMelody/pitches.h create mode 100644 arduino-0018-linux-x64/examples/Digital/toneMelody/toneMelody.pde create mode 100644 arduino-0018-linux-x64/examples/Digital/tonePitchFollower/tonePitchFollower.pde create mode 100644 arduino-0018-linux-x64/examples/Display/RowColumnScanning/RowColumnScanning.pde create mode 100644 arduino-0018-linux-x64/examples/Display/barGraph/barGraph.pde create mode 100644 arduino-0018-linux-x64/examples/Sensors/ADXL3xx/ADXL3xx.pde create mode 100644 arduino-0018-linux-x64/examples/Sensors/Knock/Knock.pde create mode 100644 arduino-0018-linux-x64/examples/Sensors/Memsic2125/Memsic2125.pde create mode 100644 arduino-0018-linux-x64/examples/Sensors/Ping/Ping.pde create mode 100644 arduino-0018-linux-x64/examples/Stubs/AnalogReadSerial/AnalogReadSerial.pde create mode 100644 arduino-0018-linux-x64/examples/Stubs/AnalogReadWrite/AnalogReadWrite.pde create mode 100644 arduino-0018-linux-x64/examples/Stubs/BareMinumum/BareMinumum.pde create mode 100644 arduino-0018-linux-x64/examples/Stubs/DigitalReadSerial/DigitalReadSerial.pde create mode 100644 arduino-0018-linux-x64/examples/Stubs/DigitalReadWrite/DigitalReadWrite.pde create mode 100644 arduino-0018-linux-x64/examples/Stubs/HelloWorld/HelloWorld.pde create mode 100644 arduino-0018-linux-x64/hardware/arduino/boards.txt create mode 100755 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_ng.hex create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex create mode 100755 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/Makefile create mode 100755 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.hex create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega8/Makefile create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/bt/ATmegaBOOT_168.c create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/bt/ATmegaBOOT_168.hex create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/lilypad/LilyPadBOOT_168.hex create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/lilypad/src/ATmegaBOOT.c create mode 100644 arduino-0018-linux-x64/hardware/arduino/bootloaders/lilypad/src/Makefile create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/HardwareSerial.cpp create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/HardwareSerial.h create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/Print.cpp create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/Print.h create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/Tone.cpp create mode 100644 arduino-0018-linux-x64/hardware/arduino/cores/arduino/WConstants.h create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/WInterrupts.c create mode 100644 arduino-0018-linux-x64/hardware/arduino/cores/arduino/WMath.cpp create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/WProgram.h create mode 100644 arduino-0018-linux-x64/hardware/arduino/cores/arduino/binary.h create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/main.cpp create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/pins_arduino.c create mode 100644 arduino-0018-linux-x64/hardware/arduino/cores/arduino/pins_arduino.h create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring.c create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring.h create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_analog.c create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_digital.c create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_private.h create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_pulse.c create mode 100755 arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_shift.c create mode 100644 arduino-0018-linux-x64/hardware/arduino/programmers.txt create mode 100755 arduino-0018-linux-x64/hardware/tools/avrdude create mode 100644 arduino-0018-linux-x64/hardware/tools/avrdude.conf create mode 100644 arduino-0018-linux-x64/hardware/tools/avrdude.conf~ create mode 100644 arduino-0018-linux-x64/lib/RXTXcomm.jar create mode 100755 arduino-0018-linux-x64/lib/about.jpg create mode 100644 arduino-0018-linux-x64/lib/antlr.jar create mode 100644 arduino-0018-linux-x64/lib/core.jar create mode 100644 arduino-0018-linux-x64/lib/ecj.jar create mode 100644 arduino-0018-linux-x64/lib/jna.jar create mode 100644 arduino-0018-linux-x64/lib/keywords.txt create mode 100755 arduino-0018-linux-x64/lib/librxtxSerial.so create mode 100644 arduino-0018-linux-x64/lib/oro.jar create mode 100644 arduino-0018-linux-x64/lib/pde.jar create mode 100755 arduino-0018-linux-x64/lib/preferences.txt create mode 100644 arduino-0018-linux-x64/lib/theme/buttons.gif create mode 100644 arduino-0018-linux-x64/lib/theme/resize.gif create mode 100644 arduino-0018-linux-x64/lib/theme/tab-sel-left.gif create mode 100644 arduino-0018-linux-x64/lib/theme/tab-sel-menu.gif create mode 100644 arduino-0018-linux-x64/lib/theme/tab-sel-mid.gif create mode 100644 arduino-0018-linux-x64/lib/theme/tab-sel-right.gif create mode 100644 arduino-0018-linux-x64/lib/theme/tab-unsel-left.gif create mode 100644 arduino-0018-linux-x64/lib/theme/tab-unsel-menu.gif create mode 100644 arduino-0018-linux-x64/lib/theme/tab-unsel-mid.gif create mode 100644 arduino-0018-linux-x64/lib/theme/tab-unsel-right.gif create mode 100644 arduino-0018-linux-x64/lib/theme/theme.txt create mode 100755 arduino-0018-linux-x64/libraries/EEPROM/EEPROM.cpp create mode 100755 arduino-0018-linux-x64/libraries/EEPROM/EEPROM.h create mode 100644 arduino-0018-linux-x64/libraries/EEPROM/examples/eeprom_clear/eeprom_clear.pde create mode 100644 arduino-0018-linux-x64/libraries/EEPROM/examples/eeprom_read/eeprom_read.pde create mode 100644 arduino-0018-linux-x64/libraries/EEPROM/examples/eeprom_write/eeprom_write.pde create mode 100644 arduino-0018-linux-x64/libraries/EEPROM/keywords.txt create mode 100644 arduino-0018-linux-x64/libraries/Ethernet/Client.cpp create mode 100644 arduino-0018-linux-x64/libraries/Ethernet/Client.h create mode 100644 arduino-0018-linux-x64/libraries/Ethernet/Ethernet.cpp create mode 100644 arduino-0018-linux-x64/libraries/Ethernet/Ethernet.h create mode 100644 arduino-0018-linux-x64/libraries/Ethernet/Server.cpp create mode 100644 arduino-0018-linux-x64/libraries/Ethernet/Server.h create mode 100644 arduino-0018-linux-x64/libraries/Ethernet/examples/ChatServer/ChatServer.pde create mode 100644 arduino-0018-linux-x64/libraries/Ethernet/examples/WebClient/WebClient.pde create mode 100644 arduino-0018-linux-x64/libraries/Ethernet/examples/WebServer/WebServer.pde create mode 100644 arduino-0018-linux-x64/libraries/Ethernet/keywords.txt create mode 100755 arduino-0018-linux-x64/libraries/Ethernet/utility/socket.c create mode 100755 arduino-0018-linux-x64/libraries/Ethernet/utility/socket.h create mode 100755 arduino-0018-linux-x64/libraries/Ethernet/utility/spi.h create mode 100755 arduino-0018-linux-x64/libraries/Ethernet/utility/types.h create mode 100755 arduino-0018-linux-x64/libraries/Ethernet/utility/w5100.c create mode 100755 arduino-0018-linux-x64/libraries/Ethernet/utility/w5100.h create mode 100644 arduino-0018-linux-x64/libraries/Firmata/Firmata.cpp create mode 100644 arduino-0018-linux-x64/libraries/Firmata/Firmata.h create mode 100644 arduino-0018-linux-x64/libraries/Firmata/LICENSE.txt create mode 100644 arduino-0018-linux-x64/libraries/Firmata/TODO.txt create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/AllInputsFirmata/AllInputsFirmata.pde create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/AnalogFirmata/AnalogFirmata.pde create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/AnalogFirmata/Makefile create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/EchoString/EchoString.pde create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/EchoString/Makefile create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/I2CFirmata/I2CFirmata.pde create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/OldStandardFirmata/LICENSE.txt create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/OldStandardFirmata/OldStandardFirmata.pde create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/ServoFirmata/Makefile create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/ServoFirmata/ServoFirmata.pde create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/SimpleAnalogFirmata/Makefile create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/SimpleAnalogFirmata/SimpleAnalogFirmata.pde create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/SimpleDigitalFirmata/Makefile create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/SimpleDigitalFirmata/SimpleDigitalFirmata.pde create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/StandardFirmata/LICENSE.txt create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/StandardFirmata/Makefile create mode 100644 arduino-0018-linux-x64/libraries/Firmata/examples/StandardFirmata/StandardFirmata.pde create mode 100644 arduino-0018-linux-x64/libraries/Firmata/keywords.txt create mode 100755 arduino-0018-linux-x64/libraries/LiquidCrystal/LiquidCrystal.cpp create mode 100755 arduino-0018-linux-x64/libraries/LiquidCrystal/LiquidCrystal.h create mode 100644 arduino-0018-linux-x64/libraries/LiquidCrystal/examples/Autoscroll/Autoscroll.pde create mode 100644 arduino-0018-linux-x64/libraries/LiquidCrystal/examples/Blink/Blink.pde create mode 100644 arduino-0018-linux-x64/libraries/LiquidCrystal/examples/Cursor/Cursor.pde create mode 100644 arduino-0018-linux-x64/libraries/LiquidCrystal/examples/Display/Display.pde create mode 100644 arduino-0018-linux-x64/libraries/LiquidCrystal/examples/HelloWorld/HelloWorld.pde create mode 100644 arduino-0018-linux-x64/libraries/LiquidCrystal/examples/Scroll/Scroll.pde create mode 100644 arduino-0018-linux-x64/libraries/LiquidCrystal/examples/SerialDisplay/SerialDisplay.pde create mode 100644 arduino-0018-linux-x64/libraries/LiquidCrystal/examples/TextDirection/TextDirection.pde create mode 100644 arduino-0018-linux-x64/libraries/LiquidCrystal/examples/setCursor/setCursor.pde create mode 100755 arduino-0018-linux-x64/libraries/LiquidCrystal/keywords.txt create mode 100755 arduino-0018-linux-x64/libraries/Matrix/Matrix.cpp create mode 100755 arduino-0018-linux-x64/libraries/Matrix/Matrix.h create mode 100644 arduino-0018-linux-x64/libraries/Matrix/examples/hello_matrix/hello_matrix.pde create mode 100644 arduino-0018-linux-x64/libraries/Matrix/examples/sprite_animation/sprite_animation.pde create mode 100644 arduino-0018-linux-x64/libraries/Matrix/keywords.txt create mode 100755 arduino-0018-linux-x64/libraries/Servo/Servo.cpp create mode 100755 arduino-0018-linux-x64/libraries/Servo/Servo.h create mode 100644 arduino-0018-linux-x64/libraries/Servo/examples/Knob/Knob.pde create mode 100644 arduino-0018-linux-x64/libraries/Servo/examples/Sweep/Sweep.pde create mode 100755 arduino-0018-linux-x64/libraries/Servo/keywords.txt create mode 100755 arduino-0018-linux-x64/libraries/SoftwareSerial/SoftwareSerial.cpp create mode 100755 arduino-0018-linux-x64/libraries/SoftwareSerial/SoftwareSerial.h create mode 100644 arduino-0018-linux-x64/libraries/SoftwareSerial/keywords.txt create mode 100644 arduino-0018-linux-x64/libraries/Sprite/Sprite.cpp create mode 100644 arduino-0018-linux-x64/libraries/Sprite/Sprite.h create mode 100644 arduino-0018-linux-x64/libraries/Sprite/binary.h create mode 100644 arduino-0018-linux-x64/libraries/Sprite/keywords.txt create mode 100644 arduino-0018-linux-x64/libraries/Stepper/Stepper.cpp create mode 100644 arduino-0018-linux-x64/libraries/Stepper/Stepper.h create mode 100644 arduino-0018-linux-x64/libraries/Stepper/examples/MotorKnob/MotorKnob.pde create mode 100644 arduino-0018-linux-x64/libraries/Stepper/keywords.txt create mode 100755 arduino-0018-linux-x64/libraries/Wire/Wire.cpp create mode 100755 arduino-0018-linux-x64/libraries/Wire/Wire.h create mode 100755 arduino-0018-linux-x64/libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.pde create mode 100644 arduino-0018-linux-x64/libraries/Wire/examples/digital_potentiometer/digital_potentiometer.pde create mode 100644 arduino-0018-linux-x64/libraries/Wire/examples/master_reader/master_reader.pde create mode 100644 arduino-0018-linux-x64/libraries/Wire/examples/master_writer/master_writer.pde create mode 100644 arduino-0018-linux-x64/libraries/Wire/examples/slave_receiver/slave_receiver.pde create mode 100644 arduino-0018-linux-x64/libraries/Wire/examples/slave_sender/slave_sender.pde create mode 100644 arduino-0018-linux-x64/libraries/Wire/keywords.txt create mode 100644 arduino-0018-linux-x64/libraries/Wire/utility/twi.c create mode 100755 arduino-0018-linux-x64/libraries/Wire/utility/twi.h create mode 100644 arduino-0018-linux-x64/readme.txt create mode 100644 arduino-0018-linux-x64/reference/ASCIIchart.html create mode 100644 arduino-0018-linux-x64/reference/Abs.html create mode 100644 arduino-0018-linux-x64/reference/AnalogRead.html create mode 100644 arduino-0018-linux-x64/reference/AnalogReference.html create mode 100644 arduino-0018-linux-x64/reference/AnalogWrite.html create mode 100644 arduino-0018-linux-x64/reference/Arithmetic.html create mode 100644 arduino-0018-linux-x64/reference/Array.html create mode 100644 arduino-0018-linux-x64/reference/Assignment.html create mode 100644 arduino-0018-linux-x64/reference/AttachInterrupt.html create mode 100644 arduino-0018-linux-x64/reference/BeginSerial.html create mode 100644 arduino-0018-linux-x64/reference/Bit.html create mode 100644 arduino-0018-linux-x64/reference/BitClear.html create mode 100644 arduino-0018-linux-x64/reference/BitRead.html create mode 100644 arduino-0018-linux-x64/reference/BitSet.html create mode 100644 arduino-0018-linux-x64/reference/BitWrite.html create mode 100644 arduino-0018-linux-x64/reference/Bitshift.html create mode 100644 arduino-0018-linux-x64/reference/BitwiseAnd.html create mode 100644 arduino-0018-linux-x64/reference/BitwiseCompound.html create mode 100644 arduino-0018-linux-x64/reference/BitwiseXorNot.html create mode 100644 arduino-0018-linux-x64/reference/Board.html create mode 100644 arduino-0018-linux-x64/reference/Boolean.html create mode 100644 arduino-0018-linux-x64/reference/BooleanVariables.html create mode 100644 arduino-0018-linux-x64/reference/Braces.html create mode 100644 arduino-0018-linux-x64/reference/Break.html create mode 100644 arduino-0018-linux-x64/reference/Byte.html create mode 100644 arduino-0018-linux-x64/reference/ByteCast.html create mode 100644 arduino-0018-linux-x64/reference/Cast.html create mode 100644 arduino-0018-linux-x64/reference/Changes.html create mode 100644 arduino-0018-linux-x64/reference/Char.html create mode 100644 arduino-0018-linux-x64/reference/CharCast.html create mode 100644 arduino-0018-linux-x64/reference/ClientAvailable.html create mode 100644 arduino-0018-linux-x64/reference/ClientConnect.html create mode 100644 arduino-0018-linux-x64/reference/ClientConnected.html create mode 100644 arduino-0018-linux-x64/reference/ClientConstructor.html create mode 100644 arduino-0018-linux-x64/reference/ClientFlush.html create mode 100644 arduino-0018-linux-x64/reference/ClientPrint.html create mode 100644 arduino-0018-linux-x64/reference/ClientPrintln.html create mode 100644 arduino-0018-linux-x64/reference/ClientRead.html create mode 100644 arduino-0018-linux-x64/reference/ClientStop.html create mode 100644 arduino-0018-linux-x64/reference/ClientWrite.html create mode 100644 arduino-0018-linux-x64/reference/Comments.html create mode 100644 arduino-0018-linux-x64/reference/Comparison.html create mode 100644 arduino-0018-linux-x64/reference/Const.html create mode 100644 arduino-0018-linux-x64/reference/Constants.html create mode 100644 arduino-0018-linux-x64/reference/Constrain.html create mode 100644 arduino-0018-linux-x64/reference/Continue.html create mode 100644 arduino-0018-linux-x64/reference/Cos.html create mode 100644 arduino-0018-linux-x64/reference/Define.html create mode 100644 arduino-0018-linux-x64/reference/Delay.html create mode 100644 arduino-0018-linux-x64/reference/DelayMicroseconds.html create mode 100644 arduino-0018-linux-x64/reference/DetachInterrupt.html create mode 100644 arduino-0018-linux-x64/reference/DigitalRead.html create mode 100644 arduino-0018-linux-x64/reference/DigitalWrite.html create mode 100644 arduino-0018-linux-x64/reference/DoWhile.html create mode 100644 arduino-0018-linux-x64/reference/Double.html create mode 100644 arduino-0018-linux-x64/reference/EEPROM.html create mode 100644 arduino-0018-linux-x64/reference/EEPROMRead.html create mode 100644 arduino-0018-linux-x64/reference/EEPROMWrite.html create mode 100644 arduino-0018-linux-x64/reference/Else.html create mode 100644 arduino-0018-linux-x64/reference/Ethernet.html create mode 100644 arduino-0018-linux-x64/reference/EthernetBegin.html create mode 100644 arduino-0018-linux-x64/reference/Extended.html create mode 100644 arduino-0018-linux-x64/reference/FAQ.html create mode 100644 arduino-0018-linux-x64/reference/Float.html create mode 100644 arduino-0018-linux-x64/reference/FloatCast.html create mode 100644 arduino-0018-linux-x64/reference/For.html create mode 100644 arduino-0018-linux-x64/reference/Fpconstants.html create mode 100644 arduino-0018-linux-x64/reference/FunctionDeclaration.html create mode 100644 arduino-0018-linux-x64/reference/Goto.html create mode 100644 arduino-0018-linux-x64/reference/Guide_ArduinoBT.html create mode 100644 arduino-0018-linux-x64/reference/Guide_ArduinoEthernetShield.html create mode 100644 arduino-0018-linux-x64/reference/Guide_ArduinoLilyPad.html create mode 100644 arduino-0018-linux-x64/reference/Guide_ArduinoMini.html create mode 100644 arduino-0018-linux-x64/reference/Guide_ArduinoNano.html create mode 100644 arduino-0018-linux-x64/reference/Guide_ArduinoPro.html create mode 100644 arduino-0018-linux-x64/reference/Guide_ArduinoProMini.html create mode 100644 arduino-0018-linux-x64/reference/Guide_ArduinoXbeeShield.html create mode 100644 arduino-0018-linux-x64/reference/Guide_Board.html create mode 100644 arduino-0018-linux-x64/reference/Guide_Environment.html create mode 100644 arduino-0018-linux-x64/reference/Guide_Guide.html create mode 100644 arduino-0018-linux-x64/reference/Guide_HomePage.html create mode 100644 arduino-0018-linux-x64/reference/Guide_Introduction.html create mode 100644 arduino-0018-linux-x64/reference/Guide_MacOSX.html create mode 100644 arduino-0018-linux-x64/reference/Guide_RecentChanges.html create mode 100644 arduino-0018-linux-x64/reference/Guide_References.html create mode 100644 arduino-0018-linux-x64/reference/Guide_Troubleshooting.html create mode 100644 arduino-0018-linux-x64/reference/Guide_Windows.html create mode 100644 arduino-0018-linux-x64/reference/Guide_index.html create mode 100644 arduino-0018-linux-x64/reference/HighByte.html create mode 100644 arduino-0018-linux-x64/reference/HomePage.html create mode 100644 arduino-0018-linux-x64/reference/If.html create mode 100644 arduino-0018-linux-x64/reference/Include.html create mode 100644 arduino-0018-linux-x64/reference/Increment.html create mode 100644 arduino-0018-linux-x64/reference/IncrementCompound.html create mode 100644 arduino-0018-linux-x64/reference/Int.html create mode 100644 arduino-0018-linux-x64/reference/IntCast.html create mode 100644 arduino-0018-linux-x64/reference/IntegerConstants.html create mode 100644 arduino-0018-linux-x64/reference/Interrupts.html create mode 100644 arduino-0018-linux-x64/reference/Keywords.html create mode 100644 arduino-0018-linux-x64/reference/Libraries.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystal.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalAutoscroll.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalBegin.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalBlink.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalClear.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalConstructor.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalCreateChar.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalCursor.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalDisplay.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalHome.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalLeftToRight.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalNoAutoscroll.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalNoBlink.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalNoCursor.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalNoDisplay.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalPrint.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalRightToLeft.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalScrollDisplayLeft.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalScrollDisplayRight.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalSetCursor.html create mode 100644 arduino-0018-linux-x64/reference/LiquidCrystalWrite.html create mode 100644 arduino-0018-linux-x64/reference/Long.html create mode 100644 arduino-0018-linux-x64/reference/LongCast.html create mode 100644 arduino-0018-linux-x64/reference/Loop.html create mode 100644 arduino-0018-linux-x64/reference/LowByte.html create mode 100644 arduino-0018-linux-x64/reference/Map.html create mode 100644 arduino-0018-linux-x64/reference/Max.html create mode 100644 arduino-0018-linux-x64/reference/Micros.html create mode 100644 arduino-0018-linux-x64/reference/Millis.html create mode 100644 arduino-0018-linux-x64/reference/Min.html create mode 100644 arduino-0018-linux-x64/reference/Modulo.html create mode 100644 arduino-0018-linux-x64/reference/NoInterrupts.html create mode 100644 arduino-0018-linux-x64/reference/NoTone.html create mode 100644 arduino-0018-linux-x64/reference/PROGMEM.html create mode 100644 arduino-0018-linux-x64/reference/PinMode.html create mode 100644 arduino-0018-linux-x64/reference/Pointer.html create mode 100644 arduino-0018-linux-x64/reference/PortManipulation.html create mode 100644 arduino-0018-linux-x64/reference/Pow.html create mode 100644 arduino-0018-linux-x64/reference/PrintBinary.html create mode 100644 arduino-0018-linux-x64/reference/PrintByte.html create mode 100644 arduino-0018-linux-x64/reference/PrintHex.html create mode 100644 arduino-0018-linux-x64/reference/PrintInteger.html create mode 100644 arduino-0018-linux-x64/reference/PrintMode.html create mode 100644 arduino-0018-linux-x64/reference/PrintNewline.html create mode 100644 arduino-0018-linux-x64/reference/PrintOctal.html create mode 100644 arduino-0018-linux-x64/reference/PrintString.html create mode 100644 arduino-0018-linux-x64/reference/PulseIn.html create mode 100644 arduino-0018-linux-x64/reference/Random.html create mode 100644 arduino-0018-linux-x64/reference/RandomSeed.html create mode 100644 arduino-0018-linux-x64/reference/RecentChanges.html create mode 100644 arduino-0018-linux-x64/reference/Return.html create mode 100644 arduino-0018-linux-x64/reference/Scope.html create mode 100644 arduino-0018-linux-x64/reference/SemiColon.html create mode 100644 arduino-0018-linux-x64/reference/Serial.html create mode 100644 arduino-0018-linux-x64/reference/SerialAvailable.html create mode 100644 arduino-0018-linux-x64/reference/SerialRead.html create mode 100644 arduino-0018-linux-x64/reference/SerialWrite.html create mode 100644 arduino-0018-linux-x64/reference/Serial_Available.html create mode 100644 arduino-0018-linux-x64/reference/Serial_Begin.html create mode 100644 arduino-0018-linux-x64/reference/Serial_Flush.html create mode 100644 arduino-0018-linux-x64/reference/Serial_Print.html create mode 100644 arduino-0018-linux-x64/reference/Serial_Println.html create mode 100644 arduino-0018-linux-x64/reference/Serial_Read.html create mode 100644 arduino-0018-linux-x64/reference/Serial_Write.html create mode 100644 arduino-0018-linux-x64/reference/ServerAvailable.html create mode 100644 arduino-0018-linux-x64/reference/ServerBegin.html create mode 100644 arduino-0018-linux-x64/reference/ServerConstructor.html create mode 100644 arduino-0018-linux-x64/reference/ServerPrint.html create mode 100644 arduino-0018-linux-x64/reference/ServerPrintln.html create mode 100644 arduino-0018-linux-x64/reference/ServerWrite.html create mode 100644 arduino-0018-linux-x64/reference/Servo.html create mode 100644 arduino-0018-linux-x64/reference/ServoAttach.html create mode 100644 arduino-0018-linux-x64/reference/ServoAttached.html create mode 100644 arduino-0018-linux-x64/reference/ServoDetach.html create mode 100644 arduino-0018-linux-x64/reference/ServoRead.html create mode 100644 arduino-0018-linux-x64/reference/ServoWrite.html create mode 100644 arduino-0018-linux-x64/reference/ServoWriteMicroseconds.html create mode 100644 arduino-0018-linux-x64/reference/Setup.html create mode 100644 arduino-0018-linux-x64/reference/ShiftOut.html create mode 100644 arduino-0018-linux-x64/reference/Sin.html create mode 100644 arduino-0018-linux-x64/reference/Sizeof.html create mode 100644 arduino-0018-linux-x64/reference/SoftwareSerial.html create mode 100644 arduino-0018-linux-x64/reference/SoftwareSerialBegin.html create mode 100644 arduino-0018-linux-x64/reference/SoftwareSerialConstructor.html create mode 100644 arduino-0018-linux-x64/reference/SoftwareSerialExample.html create mode 100644 arduino-0018-linux-x64/reference/SoftwareSerialPrint.html create mode 100644 arduino-0018-linux-x64/reference/SoftwareSerialPrintln.html create mode 100644 arduino-0018-linux-x64/reference/SoftwareSerialRead.html create mode 100644 arduino-0018-linux-x64/reference/Sq.html create mode 100644 arduino-0018-linux-x64/reference/Sqrt.html create mode 100644 arduino-0018-linux-x64/reference/Static.html create mode 100644 arduino-0018-linux-x64/reference/Stepper.html create mode 100644 arduino-0018-linux-x64/reference/StepperBipolarCircuit.html create mode 100644 arduino-0018-linux-x64/reference/StepperConstructor.html create mode 100644 arduino-0018-linux-x64/reference/StepperExample.html create mode 100644 arduino-0018-linux-x64/reference/StepperSetSpeed.html create mode 100644 arduino-0018-linux-x64/reference/StepperStep.html create mode 100644 arduino-0018-linux-x64/reference/StepperUnipolarCircuit.html create mode 100644 arduino-0018-linux-x64/reference/String.html create mode 100644 arduino-0018-linux-x64/reference/StyleGuide.html create mode 100644 arduino-0018-linux-x64/reference/SwitchCase.html create mode 100644 arduino-0018-linux-x64/reference/Tan.html create mode 100644 arduino-0018-linux-x64/reference/Tone.html create mode 100644 arduino-0018-linux-x64/reference/UnsignedChar.html create mode 100644 arduino-0018-linux-x64/reference/UnsignedInt.html create mode 100644 arduino-0018-linux-x64/reference/UnsignedLong.html create mode 100644 arduino-0018-linux-x64/reference/VariableDeclaration.html create mode 100644 arduino-0018-linux-x64/reference/Void.html create mode 100644 arduino-0018-linux-x64/reference/Volatile.html create mode 100644 arduino-0018-linux-x64/reference/While.html create mode 100644 arduino-0018-linux-x64/reference/Wire.html create mode 100644 arduino-0018-linux-x64/reference/WireAvailable.html create mode 100644 arduino-0018-linux-x64/reference/WireBegin.html create mode 100644 arduino-0018-linux-x64/reference/WireBeginTransmission.html create mode 100644 arduino-0018-linux-x64/reference/WireEndTransmission.html create mode 100644 arduino-0018-linux-x64/reference/WireOnReceive.html create mode 100644 arduino-0018-linux-x64/reference/WireOnRequest.html create mode 100644 arduino-0018-linux-x64/reference/WireReceive.html create mode 100644 arduino-0018-linux-x64/reference/WireRequestFrom.html create mode 100644 arduino-0018-linux-x64/reference/WireSend.html create mode 100644 arduino-0018-linux-x64/reference/Word.html create mode 100644 arduino-0018-linux-x64/reference/WordCast.html create mode 100644 arduino-0018-linux-x64/reference/arduino.css create mode 100644 arduino-0018-linux-x64/reference/environment.html create mode 100644 arduino-0018-linux-x64/reference/index.html create mode 100755 arduino-0018-linux-x64/tools/Mangler/make.sh create mode 100644 arduino-0018-linux-x64/tools/Mangler/src/Mangler.java create mode 100644 arduino-0018-linux-x64/tools/howto.txt diff --git a/arduino-0018-linux-x64/arduino b/arduino-0018-linux-x64/arduino new file mode 100755 index 0000000..7128bac --- /dev/null +++ b/arduino-0018-linux-x64/arduino @@ -0,0 +1,22 @@ +#!/bin/sh + +APPDIR="$(dirname -- "${0}")" + +cd $APPDIR + +for LIB in \ + java/lib/rt.jar \ + java/lib/tools.jar \ + lib/*.jar \ + ; +do + CLASSPATH="${CLASSPATH}:${APPDIR}/${LIB}" +done +export CLASSPATH + +LD_LIBRARY_PATH=`pwd`/lib:${LD_LIBRARY_PATH} +export LD_LIBRARY_PATH + +export PATH="${APPDIR}/java/bin:${PATH}" + +java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel processing.app.Base diff --git a/arduino-0018-linux-x64/examples/Analog/AnalogInOutSerial/AnalogInOutSerial.pde b/arduino-0018-linux-x64/examples/Analog/AnalogInOutSerial/AnalogInOutSerial.pde new file mode 100644 index 0000000..81c8e81 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Analog/AnalogInOutSerial/AnalogInOutSerial.pde @@ -0,0 +1,50 @@ +/* + Analog input, analog output, serial output + + Reads an analog input pin, maps the result to a range from 0 to 255 + and uses the result to set the pulsewidth modulation (PWM) of an output pin. + Also prints the results to the serial monitor. + + The circuit: + * potentiometer connected to analog pin 0. + Center pin of the potentiometer goes to the analog pin. + side pins of the potentiometer go to +5V and ground + * LED connected from digital pin 9 to ground + + created 29 Dec. 2008 + by Tom Igoe + + */ + +// These constants won't change. They're used to give names +// to the pins used: +const int analogInPin = 0; // Analog input pin that the potentiometer is attached to +const int analogOutPin = 9; // Analog output pin that the LED is attached to + +int sensorValue = 0; // value read from the pot +int outputValue = 0; // value output to the PWM (analog out) + +void setup() { + // initialize serial communications at 9600 bps: + Serial.begin(9600); +} + +void loop() { + // read the analog in value: + sensorValue = analogRead(analogInPin); + // map it to the range of the analog out: + outputValue = map(sensorValue, 0, 1023, 0, 255); + // change the analog out value: + analogWrite(analogOutPin, outputValue); + + // print the results to the serial monitor: + Serial.print("sensor = " ); + Serial.print(sensorValue); + Serial.print("\t output = "); + Serial.println(outputValue); + + // wait 10 milliseconds before the next loop + // for the analog-to-digital converter to settle + // after the last reading: + delay(10); +} diff --git a/arduino-0018-linux-x64/examples/Analog/AnalogInSerial/AnalogInSerial.pde b/arduino-0018-linux-x64/examples/Analog/AnalogInSerial/AnalogInSerial.pde new file mode 100644 index 0000000..c8fa158 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Analog/AnalogInSerial/AnalogInSerial.pde @@ -0,0 +1,29 @@ +/* + Analog input, serial output + + Reads an analog input pin, prints the results to the serial monitor. + + The circuit: + + * potentiometer connected to analog pin 0. + Center pin of the potentiometer goes to the analog pin. + side pins of the potentiometer go to +5V and ground + + created over and over again + by Tom Igoe and everyone who's ever used Arduino + + */ + + void setup() { + Serial.begin(9600); + } + + void loop() { + // read the analog input into a variable: + int analogValue = analogRead(0); + // print the result: + Serial.println(analogValue); + // wait 10 milliseconds for the analog-to-digital converter + // to settle after the last reading: + delay(10); + } diff --git a/arduino-0018-linux-x64/examples/Analog/AnalogInput/AnalogInput.pde b/arduino-0018-linux-x64/examples/Analog/AnalogInput/AnalogInput.pde new file mode 100644 index 0000000..1ee8ee3 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Analog/AnalogInput/AnalogInput.pde @@ -0,0 +1,48 @@ +/* + Analog Input + Demonstrates analog input by reading an analog sensor on analog pin 0 and + turning on and off a light emitting diode(LED) connected to digital pin 13. + The amount of time the LED will be on and off depends on + the value obtained by analogRead(). + + The circuit: + * Potentiometer attached to analog input 0 + * center pin of the potentiometer to the analog pin + * one side pin (either one) to ground + * the other side pin to +5V + * LED anode (long leg) attached to digital output 13 + * LED cathode (short leg) attached to ground + + * Note: because most Arduinos have a built-in LED attached + to pin 13 on the board, the LED is optional. + + + Created by David Cuartielles + Modified 16 Jun 2009 + By Tom Igoe + + http://arduino.cc/en/Tutorial/AnalogInput + + */ + +int sensorPin = 0; // select the input pin for the potentiometer +int ledPin = 13; // select the pin for the LED +int sensorValue = 0; // variable to store the value coming from the sensor + +void setup() { + // declare the ledPin as an OUTPUT: + pinMode(ledPin, OUTPUT); +} + +void loop() { + // read the value from the sensor: + sensorValue = analogRead(sensorPin); + // turn the ledPin on + digitalWrite(ledPin, HIGH); + // stop the program for milliseconds: + delay(sensorValue); + // turn the ledPin off: + digitalWrite(ledPin, LOW); + // stop the program for for milliseconds: + delay(sensorValue); +} \ No newline at end of file diff --git a/arduino-0018-linux-x64/examples/Analog/AnalogWriteMega/AnalogWriteMega.pde b/arduino-0018-linux-x64/examples/Analog/AnalogWriteMega/AnalogWriteMega.pde new file mode 100644 index 0000000..3166952 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Analog/AnalogWriteMega/AnalogWriteMega.pde @@ -0,0 +1,42 @@ +/* + Mega analogWrite() test + + This sketch fades LEDs up and down one at a time on digital pins 2 through 13. + This sketch was written for the Arduino Mega, and will not work on previous boards. + + The circuit: + * LEDs attached from pins 2 through 13 to ground. + + created 8 Feb 2009 + by Tom Igoe + */ +// These constants won't change. They're used to give names +// to the pins used: +const int lowestPin = 2; +const int highestPin = 13; + + +void setup() { + // set pins 2 through 13 as outputs: + for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) { + pinMode(thisPin, OUTPUT); + } +} + +void loop() { + // iterate over the pins: + for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) { + // fade the LED on thisPin from off to brightest: + for (int brightness = 0; brightness < 255; brightness++) { + analogWrite(thisPin, brightness); + delay(2); + } + // fade the LED on thisPin from brithstest to off: + for (int brightness = 255; brightness >= 0; brightness--) { + analogWrite(thisPin, brightness); + delay(2); + } + // pause between LEDs: + delay(100); + } +} diff --git a/arduino-0018-linux-x64/examples/Analog/Calibration/Calibration.pde b/arduino-0018-linux-x64/examples/Analog/Calibration/Calibration.pde new file mode 100644 index 0000000..52c8d8d --- /dev/null +++ b/arduino-0018-linux-x64/examples/Analog/Calibration/Calibration.pde @@ -0,0 +1,73 @@ +/* + Calibration + + Demonstrates one techinque for calibrating sensor input. The + sensor readings during the first five seconds of the sketch + execution define the minimum and maximum of expected values + attached to the sensor pin. + + The sensor minumum and maximum initial values may seem backwards. + Initially, you set the minimum high and listen for anything + lower, saving it as the new minumum. Likewise, you set the + maximum low and listen for anything higher as the new maximum. + + The circuit: + * Analog sensor (potentiometer will do) attached to analog input 0 + * LED attached from digital pin 9 to ground + + created 29 Oct 2008 + By David A Mellis + Modified 17 Jun 2009 + By Tom Igoe + + http://arduino.cc/en/Tutorial/Calibration + + */ + +// These constants won't change: +const int sensorPin = 2; // pin that the sensor is attached to +const int ledPin = 9; // pin that the LED is attached to + +// variables: +int sensorValue = 0; // the sensor value +int sensorMin = 1023; // minimum sensor value +int sensorMax = 0; // maximum sensor value + + +void setup() { + // turn on LED to signal the start of the calibration period: + pinMode(13, OUTPUT); + digitalWrite(13, HIGH); + + // calibrate during the first five seconds + while (millis() < 5000) { + sensorValue = analogRead(sensorPin); + + // record the maximum sensor value + if (sensorValue > sensorMax) { + sensorMax = sensorValue; + } + + // record the minimum sensor value + if (sensorValue < sensorMin) { + sensorMin = sensorValue; + } + } + + // signal the end of the calibration period + digitalWrite(13, LOW); +} + +void loop() { + // read the sensor: + sensorValue = analogRead(sensorPin); + + // apply the calibration to the sensor reading + sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); + + // in case the sensor value is outside the range seen during calibration + sensorValue = constrain(sensorValue, 0, 255); + + // fade the LED using the calibrated value: + analogWrite(ledPin, sensorValue); +} \ No newline at end of file diff --git a/arduino-0018-linux-x64/examples/Analog/Fading/Fading.pde b/arduino-0018-linux-x64/examples/Analog/Fading/Fading.pde new file mode 100644 index 0000000..1205078 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Analog/Fading/Fading.pde @@ -0,0 +1,43 @@ +/* + Fading + + This example shows how to fade an LED using the analogWrite() function. + + The circuit: + * LED attached from digital pin 9 to ground. + + Created 1 Nov 2008 + By David A. Mellis + Modified 17 June 2009 + By Tom Igoe + + http://arduino.cc/en/Tutorial/Fading + + */ + + +int ledPin = 9; // LED connected to digital pin 9 + +void setup() { + // nothing happens in setup +} + +void loop() { + // fade in from min to max in increments of 5 points: + for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { + // sets the value (range from 0 to 255): + analogWrite(ledPin, fadeValue); + // wait for 30 milliseconds to see the dimming effect + delay(30); + } + + // fade out from max to min in increments of 5 points: + for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) { + // sets the value (range from 0 to 255): + analogWrite(ledPin, fadeValue); + // wait for 30 milliseconds to see the dimming effect + delay(30); + } +} + + diff --git a/arduino-0018-linux-x64/examples/Analog/Smoothing/Smoothing.pde b/arduino-0018-linux-x64/examples/Analog/Smoothing/Smoothing.pde new file mode 100644 index 0000000..881bb13 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Analog/Smoothing/Smoothing.pde @@ -0,0 +1,64 @@ +/* + + Smoothing + + Reads repeatedly from an analog input, calculating a running average + and printing it to the computer. Keeps ten readings in an array and + continually averages them. + + The circuit: + * Analog sensor (potentiometer will do) attached to analog input 0 + + Created 22 April 2007 + By David A. Mellis + + http://www.arduino.cc/en/Tutorial/Smoothing + + +*/ + + +// Define the number of samples to keep track of. The higher the number, +// the more the readings will be smoothed, but the slower the output will +// respond to the input. Using a constant rather than a normal variable lets +// use this value to determine the size of the readings array. +const int numReadings = 10; + +int readings[numReadings]; // the readings from the analog input +int index = 0; // the index of the current reading +int total = 0; // the running total +int average = 0; // the average + +int inputPin = 0; + +void setup() +{ + // initialize serial communication with computer: + Serial.begin(9600); + // initialize all the readings to 0: + for (int thisReading = 0; thisReading < numReadings; thisReading++) + readings[thisReading] = 0; +} + +void loop() { + // subtract the last reading: + total= total - readings[index]; + // read from the sensor: + readings[index] = analogRead(inputPin); + // add the reading to the total: + total= total + readings[index]; + // advance to the next position in the array: + index = index + 1; + + // if we're at the end of the array... + if (index >= numReadings) + // ...wrap around to the beginning: + index = 0; + + // calculate the average: + average = total / numReadings; + // send it to the computer (as ASCII digits) + Serial.println(average, DEC); +} + + diff --git a/arduino-0018-linux-x64/examples/ArduinoISP/ArduinoISP.pde b/arduino-0018-linux-x64/examples/ArduinoISP/ArduinoISP.pde new file mode 100644 index 0000000..0012c69 --- /dev/null +++ b/arduino-0018-linux-x64/examples/ArduinoISP/ArduinoISP.pde @@ -0,0 +1,480 @@ +// this sketch turns the Arduino into a AVRISP +// using the following pins: +// 10: slave reset +// 11: MOSI +// 12: MISO +// 13: SCK + +// Put an LED (with resistor) on the following pins: +// 9: Heartbeat - shows the programmer is running +// 8: Error - Lights up if something goes wrong (use red if that makes sense) +// 7: Programming - In communication with the slave +// +// October 2009 by David A. Mellis +// - Added support for the read signature command +// +// February 2009 by Randall Bohn +// - Added support for writing to EEPROM (what took so long?) +// Windows users should consider WinAVR's avrdude instead of the +// avrdude included with Arduino software. +// +// January 2008 by Randall Bohn +// - Thanks to Amplificar for helping me with the STK500 protocol +// - The AVRISP/STK500 (mk I) protocol is used in the arduino bootloader +// - The SPI functions herein were developed for the AVR910_ARD programmer +// - More information at http://code.google.com/p/mega-isp + +#define SCK 13 +#define MISO 12 +#define MOSI 11 +#define RESET 10 + +#define LED_HB 9 +#define LED_ERR 8 +#define LED_PMODE 7 + +#define HWVER 2 +#define SWMAJ 1 +#define SWMIN 18 + +// STK Definitions +#define STK_OK 0x10 +#define STK_FAILED 0x11 +#define STK_UNKNOWN 0x12 +#define STK_INSYNC 0x14 +#define STK_NOSYNC 0x15 +#define CRC_EOP 0x20 //ok it is a space... + +void pulse(int pin, int times); + +void setup() { + Serial.begin(19200); + pinMode(7, OUTPUT); + pulse(7, 2); + pinMode(8, OUTPUT); + pulse(8, 2); + pinMode(9, OUTPUT); + pulse(9, 2); +} + +int error=0; +int pmode=0; +// address for reading and writing, set by 'U' command +int here; +uint8_t buff[256]; // global block storage + +#define beget16(addr) (*addr * 256 + *(addr+1) ) +typedef struct param { + uint8_t devicecode; + uint8_t revision; + uint8_t progtype; + uint8_t parmode; + uint8_t polling; + uint8_t selftimed; + uint8_t lockbytes; + uint8_t fusebytes; + int flashpoll; + int eeprompoll; + int pagesize; + int eepromsize; + int flashsize; +} +parameter; + +parameter param; + +// this provides a heartbeat on pin 9, so you can tell the software is running. +uint8_t hbval=128; +int8_t hbdelta=8; +void heartbeat() { + if (hbval > 192) hbdelta = -hbdelta; + if (hbval < 32) hbdelta = -hbdelta; + hbval += hbdelta; + analogWrite(LED_HB, hbval); + delay(40); +} + + +void loop(void) { + // is pmode active? + if (pmode) digitalWrite(LED_PMODE, HIGH); + else digitalWrite(LED_PMODE, LOW); + // is there an error? + if (error) digitalWrite(LED_ERR, HIGH); + else digitalWrite(LED_ERR, LOW); + + // light the heartbeat LED + heartbeat(); + if (Serial.available()) { + avrisp(); + } +} + +uint8_t getch() { + while(!Serial.available()); + return Serial.read(); +} +void readbytes(int n) { + for (int x = 0; x < n; x++) { + buff[x] = Serial.read(); + } +} + +#define PTIME 30 +void pulse(int pin, int times) { + do { + digitalWrite(pin, HIGH); + delay(PTIME); + digitalWrite(pin, LOW); + delay(PTIME); + } + while (times--); +} + +void spi_init() { + uint8_t x; + SPCR = 0x53; + x=SPSR; + x=SPDR; +} + +void spi_wait() { + do { + } + while (!(SPSR & (1 << SPIF))); +} + +uint8_t spi_send(uint8_t b) { + uint8_t reply; + SPDR=b; + spi_wait(); + reply = SPDR; + return reply; +} + +uint8_t spi_transaction(uint8_t a, uint8_t b, uint8_t c, uint8_t d) { + uint8_t n; + spi_send(a); + n=spi_send(b); + //if (n != a) error = -1; + n=spi_send(c); + return spi_send(d); +} + +void empty_reply() { + if (CRC_EOP == getch()) { + Serial.print((char)STK_INSYNC); + Serial.print((char)STK_OK); + } + else { + Serial.print((char)STK_NOSYNC); + } +} + +void breply(uint8_t b) { + if (CRC_EOP == getch()) { + Serial.print((char)STK_INSYNC); + Serial.print((char)b); + Serial.print((char)STK_OK); + } + else { + Serial.print((char)STK_NOSYNC); + } +} + +void get_version(uint8_t c) { + switch(c) { + case 0x80: + breply(HWVER); + break; + case 0x81: + breply(SWMAJ); + break; + case 0x82: + breply(SWMIN); + break; + case 0x93: + breply('S'); // serial programmer + break; + default: + breply(0); + } +} + +void set_parameters() { + // call this after reading paramter packet into buff[] + param.devicecode = buff[0]; + param.revision = buff[1]; + param.progtype = buff[2]; + param.parmode = buff[3]; + param.polling = buff[4]; + param.selftimed = buff[5]; + param.lockbytes = buff[6]; + param.fusebytes = buff[7]; + param.flashpoll = buff[8]; + // ignore buff[9] (= buff[8]) + //getch(); // discard second value + + // WARNING: not sure about the byte order of the following + // following are 16 bits (big endian) + param.eeprompoll = beget16(&buff[10]); + param.pagesize = beget16(&buff[12]); + param.eepromsize = beget16(&buff[14]); + + // 32 bits flashsize (big endian) + param.flashsize = buff[16] * 0x01000000 + + buff[17] * 0x00010000 + + buff[18] * 0x00000100 + + buff[19]; + +} + +void start_pmode() { + spi_init(); + // following delays may not work on all targets... + pinMode(RESET, OUTPUT); + digitalWrite(RESET, HIGH); + pinMode(SCK, OUTPUT); + digitalWrite(SCK, LOW); + delay(50); + digitalWrite(RESET, LOW); + delay(50); + pinMode(MISO, INPUT); + pinMode(MOSI, OUTPUT); + spi_transaction(0xAC, 0x53, 0x00, 0x00); + pmode = 1; +} + +void end_pmode() { + pinMode(MISO, INPUT); + pinMode(MOSI, INPUT); + pinMode(SCK, INPUT); + pinMode(RESET, INPUT); + pmode = 0; +} + +void universal() { + int w; + uint8_t ch; + + for (w = 0; w < 4; w++) { + buff[w] = getch(); + } + ch = spi_transaction(buff[0], buff[1], buff[2], buff[3]); + breply(ch); +} + +void flash(uint8_t hilo, int addr, uint8_t data) { + spi_transaction(0x40+8*hilo, + addr>>8 & 0xFF, + addr & 0xFF, + data); +} +void commit(int addr) { + spi_transaction(0x4C, (addr >> 8) & 0xFF, addr & 0xFF, 0); +} + +//#define _current_page(x) (here & 0xFFFFE0) +int current_page(int addr) { + if (param.pagesize == 32) return here & 0xFFFFFFF0; + if (param.pagesize == 64) return here & 0xFFFFFFE0; + if (param.pagesize == 128) return here & 0xFFFFFFC0; + if (param.pagesize == 256) return here & 0xFFFFFF80; + return here; +} +uint8_t write_flash(int length) { + if (param.pagesize < 1) return STK_FAILED; + //if (param.pagesize != 64) return STK_FAILED; + int page = current_page(here); + int x = 0; + while (x < length) { + if (page != current_page(here)) { + commit(page); + page = current_page(here); + } + flash(LOW, here, buff[x++]); + flash(HIGH, here, buff[x++]); + here++; + } + + commit(page); + + return STK_OK; +} + +uint8_t write_eeprom(int length) { + // here is a word address, so we use here*2 + // this writes byte-by-byte, + // page writing may be faster (4 bytes at a time) + for (int x = 0; x < length; x++) { + spi_transaction(0xC0, 0x00, here*2+x, buff[x]); + delay(45); + } + return STK_OK; +} + +void program_page() { + char result = (char) STK_FAILED; + int length = 256 * getch() + getch(); + if (length > 256) { + Serial.print((char) STK_FAILED); + return; + } + char memtype = getch(); + for (int x = 0; x < length; x++) { + buff[x] = getch(); + } + if (CRC_EOP == getch()) { + Serial.print((char) STK_INSYNC); + if (memtype == 'F') result = (char)write_flash(length); + if (memtype == 'E') result = (char)write_eeprom(length); + Serial.print(result); + } + else { + Serial.print((char) STK_NOSYNC); + } +} +uint8_t flash_read(uint8_t hilo, int addr) { + return spi_transaction(0x20 + hilo * 8, + (addr >> 8) & 0xFF, + addr & 0xFF, + 0); +} + +char flash_read_page(int length) { + for (int x = 0; x < length; x+=2) { + uint8_t low = flash_read(LOW, here); + Serial.print((char) low); + uint8_t high = flash_read(HIGH, here); + Serial.print((char) high); + here++; + } + return STK_OK; +} + +char eeprom_read_page(int length) { + // here again we have a word address + for (int x = 0; x < length; x++) { + uint8_t ee = spi_transaction(0xA0, 0x00, here*2+x, 0xFF); + Serial.print((char) ee); + } + return STK_OK; +} + +void read_page() { + char result = (char)STK_FAILED; + int length = 256 * getch() + getch(); + char memtype = getch(); + if (CRC_EOP != getch()) { + Serial.print((char) STK_NOSYNC); + return; + } + Serial.print((char) STK_INSYNC); + if (memtype == 'F') result = flash_read_page(length); + if (memtype == 'E') result = eeprom_read_page(length); + Serial.print(result); + return; +} + +void read_signature() { + if (CRC_EOP != getch()) { + Serial.print((char) STK_NOSYNC); + return; + } + Serial.print((char) STK_INSYNC); + uint8_t high = spi_transaction(0x30, 0x00, 0x00, 0x00); + Serial.print((char) high); + uint8_t middle = spi_transaction(0x30, 0x00, 0x01, 0x00); + Serial.print((char) middle); + uint8_t low = spi_transaction(0x30, 0x00, 0x02, 0x00); + Serial.print((char) low); + Serial.print((char) STK_OK); +} +////////////////////////////////////////// +////////////////////////////////////////// + + +//////////////////////////////////// +//////////////////////////////////// +int avrisp() { + uint8_t data, low, high; + uint8_t ch = getch(); + switch (ch) { + case '0': // signon + empty_reply(); + break; + case '1': + if (getch() == CRC_EOP) { + Serial.print((char) STK_INSYNC); + Serial.print("AVR ISP"); + Serial.print((char) STK_OK); + } + break; + case 'A': + get_version(getch()); + break; + case 'B': + readbytes(20); + set_parameters(); + empty_reply(); + break; + case 'E': // extended parameters - ignore for now + readbytes(5); + empty_reply(); + break; + + case 'P': + start_pmode(); + empty_reply(); + break; + case 'U': + here = getch() + 256 * getch(); + empty_reply(); + break; + + case 0x60: //STK_PROG_FLASH + low = getch(); + high = getch(); + empty_reply(); + break; + case 0x61: //STK_PROG_DATA + data = getch(); + empty_reply(); + break; + + case 0x64: //STK_PROG_PAGE + program_page(); + break; + + case 0x74: //STK_READ_PAGE + read_page(); + break; + + case 'V': + universal(); + break; + case 'Q': + error=0; + end_pmode(); + empty_reply(); + break; + + case 0x75: //STK_READ_SIGN + read_signature(); + break; + + // expecting a command, not CRC_EOP + // this is how we can get back in sync + case CRC_EOP: + Serial.print((char) STK_NOSYNC); + break; + + // anything else we will return STK_UNKNOWN + default: + if (CRC_EOP == getch()) + Serial.print((char)STK_UNKNOWN); + else + Serial.print((char)STK_NOSYNC); + } +} + diff --git a/arduino-0018-linux-x64/examples/Communication/ASCIITable/ASCIITable.pde b/arduino-0018-linux-x64/examples/Communication/ASCIITable/ASCIITable.pde new file mode 100644 index 0000000..3a20603 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Communication/ASCIITable/ASCIITable.pde @@ -0,0 +1,73 @@ +/* + ASCII table + + Prints out byte values in all possible formats: + * as raw binary values + * as ASCII-encoded decimal, hex, octal, and binary values + + For more on ASCII, see http://www.asciitable.com and http://en.wikipedia.org/wiki/ASCII + + The circuit: No external hardware needed. + + created 2006 + by Nicholas Zambetti + modified 18 Jan 2009 + by Tom Igoe + + + */ +void setup() +{ + Serial.begin(9600); + + // prints title with ending line break + Serial.println("ASCII Table ~ Character Map"); +} + +// first visible ASCIIcharacter '!' is number 33: +int thisByte = 33; +// you can also write ASCII characters in single quotes. +// for example. '!' is the same as 33, so you could also use this: +//int thisByte = '!'; + +void loop() +{ + // prints value unaltered, i.e. the raw binary version of the + // byte. The serial monitor interprets all bytes as + // ASCII, so 33, the first number, will show up as '!' + Serial.print(thisByte, BYTE); + + Serial.print(", dec: "); + // prints value as string as an ASCII-encoded decimal (base 10). + // Decimal is the default format for Serial.print() and Serial.println(), + // so no modifier is needed: + Serial.print(thisByte); + // But you can declare the modifier for decimal if you want to. + //this also works if you uncomment it: + + // Serial.print(thisByte, DEC); + + + Serial.print(", hex: "); + // prints value as string in hexadecimal (base 16): + Serial.print(thisByte, HEX); + + Serial.print(", oct: "); + // prints value as string in octal (base 8); + Serial.print(thisByte, OCT); + + Serial.print(", bin: "); + // prints value as string in binary (base 2) + // also prints ending line break: + Serial.println(thisByte, BIN); + + // if printed last visible character '~' or 126, stop: + if(thisByte == 126) { // you could also use if (thisByte == '~') { + // This loop loops forever and does nothing + while(true) { + continue; + } + } + // go on to the next character + thisByte++; +} diff --git a/arduino-0018-linux-x64/examples/Communication/Dimmer/Dimmer.pde b/arduino-0018-linux-x64/examples/Communication/Dimmer/Dimmer.pde new file mode 100644 index 0000000..0990fe5 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Communication/Dimmer/Dimmer.pde @@ -0,0 +1,360 @@ +/* + Dimmer + + Demonstrates the sending data from the computer to the Arduino board, + in this case to control the brightness of an LED. The data is sent + in individual bytes, each of which ranges from 0 to 255. Arduino + reads these bytes and uses them to set the brightness of the LED. + + The circuit: + LED attached from digital pin 9 to ground. + Serial connection to Processing, Max/MSP, or another serial application + + created 2006 + by David A. Mellis + modified 14 Apr 2009 + by Tom Igoe and Scott Fitzgerald + + http://www.arduino.cc/en/Tutorial/Dimmer + */ + +const int ledPin = 9; // the pin that the LED is attached to + +void setup() +{ + // initialize the serial communication: + Serial.begin(9600); + // initialize the ledPin as an output: + pinMode(ledPin, OUTPUT); +} + +void loop() { + byte brightness; + + // check if data has been sent from the computer: + if (Serial.available()) { + // read the most recent byte (which will be from 0 to 255): + brightness = Serial.read(); + // set the brightness of the LED: + analogWrite(ledPin, brightness); + } +} + +/* Processing code for this example + // Dimmer - sends bytes over a serial port + // by David A. Mellis + + import processing.serial.*; + Serial port; + + void setup() { + size(256, 150); + + println("Available serial ports:"); + println(Serial.list()); + + // Uses the first port in this list (number 0). Change this to + // select the port corresponding to your Arduino board. The last + // parameter (e.g. 9600) is the speed of the communication. It + // has to correspond to the value passed to Serial.begin() in your + // Arduino sketch. + port = new Serial(this, Serial.list()[0], 9600); + + // If you know the name of the port used by the Arduino board, you + // can specify it directly like this. + //port = new Serial(this, "COM1", 9600); + } + + void draw() { + // draw a gradient from black to white + for (int i = 0; i < 256; i++) { + stroke(i); + line(i, 0, i, 150); + } + + // write the current X-position of the mouse to the serial port as + // a single byte + port.write(mouseX); + } + */ + +/* Max/MSP v5 patch for this example + + { + "boxes" : [ { + "box" : { + "maxclass" : "comment", + "text" : "Dimmer\n\nThis patch sends a binary number from 0 to 255 out the serial port to an Arduino connected to the port. It dims an LED attached to the Arduino.\n\ncreated 2006\nby David A. Mellis\nmodified 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 10, + "patching_rect" : [ 209.0, 55.0, 344.0, 144.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-32", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "change the slider to alter the brightness of the LED", + "linecount" : 3, + "patching_rect" : [ 90.0, 235.0, 117.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-7", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 215.0, 385.0, 50.0, 19.0 ], + "numoutlets" : 2, + "fontsize" : 10.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-6", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "slider", + "patching_rect" : [ 215.0, 235.0, 20.0, 140.0 ], + "numoutlets" : 1, + "outlettype" : [ "" ], + "bgcolor" : [ 0.94902, 0.94902, 0.94902, 0.0 ], + "id" : "obj-1", + "size" : 256.0, + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 342.0, 305.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 390.0, 396.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 415.0, 370.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 342.0, 396.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 364.0, 370.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 435.0, 344.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 342.0, 268.0, 15.0, 15.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 384.0, 344.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 259.0, 420.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to start", + "patching_rect" : [ 369.0, 268.0, 117.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "panel", + "patching_rect" : [ 215.0, 235.0, 21.0, 139.0 ], + "numoutlets" : 0, + "mode" : 1, + "grad1" : [ 1.0, 1.0, 1.0, 1.0 ], + "id" : "obj-8", + "grad2" : [ 0.509804, 0.509804, 0.509804, 1.0 ], + "numinlets" : 1, + "angle" : 270.0 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 351.0, 296.0, 351.5, 296.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 351.5, 416.5, 268.5, 416.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 373.5, 393.5, 268.5, 393.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 393.5, 365.5, 268.5, 365.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-1", 0 ], + "destination" : [ "obj-6", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-6", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 224.5, 411.5, 268.5, 411.5 ] + } + + } + ] + } + */ diff --git a/arduino-0018-linux-x64/examples/Communication/Graph/Graph.pde b/arduino-0018-linux-x64/examples/Communication/Graph/Graph.pde new file mode 100644 index 0000000..1f2fadd --- /dev/null +++ b/arduino-0018-linux-x64/examples/Communication/Graph/Graph.pde @@ -0,0 +1,578 @@ +/* + Graph + + A simple example of communication from the Arduino board to the computer: + the value of analog input 0 is sent out the serial port. We call this "serial" + communication because the connection appears to both the Arduino and the + computer as a serial port, even though it may actually use + a USB cable. Bytes are sent one after another (serially) from the Arduino + to the computer. + + You can use the Arduino serial monitor to view the sent data, or it can + be read by Processing, PD, Max/MSP, or any other program capable of reading + data from a serial port. The Processing code below graphs the data received + so you can see the value of the analog input changing over time. + + The circuit: + Any analog input sensor is attached to analog in pin 0. + + http://www.arduino.cc/en/Tutorial/Graph + + created 2006 + by David A. Mellis + modified 14 Apr 2009 + by Tom Igoe and Scott Fitzgerald + + http://www.arduino.cc/en/Tutorial/Graph + */ + +void setup() { + // initialize the serial communication: + Serial.begin(9600); +} + +void loop() { + // send the value of analog input 0: + Serial.println(analogRead(0)); + // wait a bit for the analog-to-digital converter + // to stabilize after the last reading: + delay(10); +} + +/* Processing code for this example + + // Graphing sketch + + + // This program takes ASCII-encoded strings + // from the serial port at 9600 baud and graphs them. It expects values in the + // range 0 to 1023, followed by a newline, or newline and carriage return + + // Created 20 Apr 2005 + // Updated 18 Jan 2008 + // by Tom Igoe + + import processing.serial.*; + + Serial myPort; // The serial port + int xPos = 1; // horizontal position of the graph + + void setup () { + // set the window size: + size(400, 300); + + // List all the available serial ports + println(Serial.list()); + // I know that the first port in the serial list on my mac + // is always my Arduino, so I open Serial.list()[0]. + // Open whatever port is the one you're using. + myPort = new Serial(this, Serial.list()[0], 9600); + // don't generate a serialEvent() unless you get a newline character: + myPort.bufferUntil('\n'); + // set inital background: + background(0); + } + void draw () { + // everything happens in the serialEvent() + } + + void serialEvent (Serial myPort) { + // get the ASCII string: + String inString = myPort.readStringUntil('\n'); + + if (inString != null) { + // trim off any whitespace: + inString = trim(inString); + // convert to an int and map to the screen height: + float inByte = float(inString); + inByte = map(inByte, 0, 1023, 0, height); + + // draw the line: + stroke(127,34,255); + line(xPos, height, xPos, height - inByte); + + // at the edge of the screen, go back to the beginning: + if (xPos >= width) { + xPos = 0; + background(0); + } + else { + // increment the horizontal position: + xPos++; + } + } + } + + */ + +/* Max/MSP v5 patch for this example + { + "boxes" : [ { + "box" : { + "maxclass" : "comment", + "text" : "Graph\n\nThis patch takes a string, containing ASCII formatted number from 0 to 1023, with a carriage return and linefeed at the end. It converts the string to an integer and graphs it.\n\ncreated 2006\nby David A. Mellis\nmodified 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 10, + "patching_rect" : [ 479.0, 6.0, 344.0, 144.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-32", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 327.0, 80.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 412.0, 231.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 412.0, 205.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 327.0, 231.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 349.0, 205.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "multislider", + "candicane7" : [ 0.878431, 0.243137, 0.145098, 1.0 ], + "patching_rect" : [ 302.0, 450.0, 246.0, 167.0 ], + "contdata" : 1, + "numoutlets" : 2, + "peakcolor" : [ 0.498039, 0.498039, 0.498039, 1.0 ], + "slidercolor" : [ 0.066667, 0.058824, 0.776471, 1.0 ], + "candicane8" : [ 0.027451, 0.447059, 0.501961, 1.0 ], + "outlettype" : [ "", "" ], + "setminmax" : [ 0.0, 1023.0 ], + "settype" : 0, + "candicane6" : [ 0.733333, 0.035294, 0.788235, 1.0 ], + "setstyle" : 3, + "bgcolor" : [ 0.231373, 0.713726, 1.0, 1.0 ], + "id" : "obj-1", + "candicane4" : [ 0.439216, 0.619608, 0.070588, 1.0 ], + "candicane5" : [ 0.584314, 0.827451, 0.431373, 1.0 ], + "candicane2" : [ 0.145098, 0.203922, 0.356863, 1.0 ], + "candicane3" : [ 0.290196, 0.411765, 0.713726, 1.0 ], + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 412.0, 179.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Here's the number from Arduino's analog input", + "linecount" : 2, + "patching_rect" : [ 153.0, 409.0, 138.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-3", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Convert ASCII to symbol", + "patching_rect" : [ 379.0, 378.0, 147.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-4", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Convert integer to ASCII", + "patching_rect" : [ 379.0, 355.0, 147.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-5", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 302.0, 414.0, 37.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ], + "id" : "obj-6", + "triscale" : 0.9, + "fontname" : "Arial", + "htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ], + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "fromsymbol", + "patching_rect" : [ 302.0, 378.0, 74.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-7", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "itoa", + "patching_rect" : [ 302.0, 355.0, 46.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-8", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 3 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "zl group 4", + "patching_rect" : [ 302.0, 332.0, 64.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "", "" ], + "id" : "obj-9", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 10 13", + "patching_rect" : [ 244.0, 281.0, 77.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-10", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 244.0, 43.0, 15.0, 15.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "qmetro 10", + "patching_rect" : [ 244.0, 80.0, 65.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "bang" ], + "id" : "obj-12", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 369.0, 179.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 244.0, 255.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Read serial input buffer every 10 milliseconds", + "linecount" : 2, + "patching_rect" : [ 53.0, 72.0, 185.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-15", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "If you get newline (ASCII 10), send the list. If you get return (ASCII 13) do nothing. Any other value, add to the list", + "linecount" : 3, + "patching_rect" : [ 332.0, 269.0, 320.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-16", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to open/close serial port and start/stop patch", + "linecount" : 2, + "patching_rect" : [ 271.0, 32.0, 199.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-6", 0 ], + "destination" : [ "obj-1", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-7", 0 ], + "destination" : [ "obj-6", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-8", 0 ], + "destination" : [ "obj-7", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-9", 0 ], + "destination" : [ "obj-8", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-10", 0 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ 253.5, 308.0, 311.5, 308.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-10", 2 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ 311.5, 320.0, 311.5, 320.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-10", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-12", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-12", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 378.5, 200.5, 253.5, 200.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 358.5, 228.5, 253.5, 228.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 336.5, 251.5, 253.5, 251.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 253.0, 71.0, 336.5, 71.0 ] + } + + } + ] + } + + */ diff --git a/arduino-0018-linux-x64/examples/Communication/MIDI/Midi.pde b/arduino-0018-linux-x64/examples/Communication/MIDI/Midi.pde new file mode 100644 index 0000000..feb3e82 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Communication/MIDI/Midi.pde @@ -0,0 +1,47 @@ +/* + MIDI note player + + This sketch shows how to use the serial transmit pin (pin 1) to send MIDI note data. + If this circuit is connected to a MIDI synth, it will play + the notes F#-0 (0x1E) to F#-5 (0x5A) in sequence. + + + The circuit: + * digital in 1 connected to MIDI jack pin 5 + * MIDI jack pin 2 connected to ground + * MIDI jack pin 4 connected to +5V through 220-ohm resistor + Attach a MIDI cable to the jack, then to a MIDI synth, and play music. + + created 13 Jun 2006 + modified 2 Jul 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/MIDI + + */ + +void setup() { + // Set MIDI baud rate: + Serial.begin(31250); +} + +void loop() { + // play notes from F#-0 (0x1E) to F#-5 (0x5A): + for (intnote = 0x1E; note < 0x5A; note ++) { + //Note on channel 1 (0x90), some note value (note), middle velocity (0x45): + noteOn(0x90, note, 0x45); + delay(100); + //Note on channel 1 (0x90), some note value (note), silent velocity (0x00): + noteOn(0x90, note, 0x00); + delay(100); + } +} + +// plays a MIDI note. Doesn't check to see that +// cmd is greater than 127, or that data values are less than 127: +void noteOn(int cmd, int pitch, int velocity) { + Serial.print(cmd, BYTE); + Serial.print(pitch, BYTE); + Serial.print(velocity, BYTE); +} + diff --git a/arduino-0018-linux-x64/examples/Communication/MultiSerialMega/MultiSerialMega.pde b/arduino-0018-linux-x64/examples/Communication/MultiSerialMega/MultiSerialMega.pde new file mode 100644 index 0000000..f587c63 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Communication/MultiSerialMega/MultiSerialMega.pde @@ -0,0 +1,31 @@ +/* + Mega multple serial test + + Receives from the main serial port, sends to the others. + Receives from serial port 1, sends to the main serial (Serial 0). + + This example works only on the Arduino Mega + + The circuit: + * Any serial device attached to Serial port 1 + * Serial monitor open on Serial port 0: + + created 30 Dec. 2008 + by Tom Igoe + + */ + + +void setup() { + // initialize both serial ports: + Serial.begin(9600); + Serial1.begin(9600); +} + +void loop() { + // read from port 1, send to port 0: + if (Serial1.available()) { + int inByte = Serial1.read(); + Serial.print(inByte, BYTE); + } +} diff --git a/arduino-0018-linux-x64/examples/Communication/PhysicalPixel/PhysicalPixel.pde b/arduino-0018-linux-x64/examples/Communication/PhysicalPixel/PhysicalPixel.pde new file mode 100644 index 0000000..b5006ec --- /dev/null +++ b/arduino-0018-linux-x64/examples/Communication/PhysicalPixel/PhysicalPixel.pde @@ -0,0 +1,707 @@ +/* + Physical Pixel + + An example of using the Arduino board to receive data from the + computer. In this case, the Arduino boards turns on an LED when + it receives the character 'H', and turns off the LED when it + receives the character 'L'. + + The data can be sent from the Arduino serial monitor, or another + program like Processing (see code below), Flash (via a serial-net + proxy), PD, or Max/MSP. + + The circuit: + * LED connected from digital pin 13 to ground + + created 2006 + by David A. Mellis + modified 14 Apr 2009 + by Tom Igoe and Scott Fitzgerald + + http://www.arduino.cc/en/Tutorial/PhysicalPixel + */ + +const int ledPin = 13; // the pin that the LED is attached to +int incomingByte; // a variable to read incoming serial data into + +void setup() { + // initialize serial communication: + Serial.begin(9600); + // initialize the LED pin as an output: + pinMode(ledPin, OUTPUT); +} + +void loop() { + // see if there's incoming serial data: + if (Serial.available() > 0) { + // read the oldest byte in the serial buffer: + incomingByte = Serial.read(); + // if it's a capital H (ASCII 72), turn on the LED: + if (incomingByte == 'H') { + digitalWrite(ledPin, HIGH); + } + // if it's an L (ASCII 76) turn off the LED: + if (incomingByte == 'L') { + digitalWrite(ledPin, LOW); + } + } +} + +/* Processing code for this example + + // mouseover serial + + // Demonstrates how to send data to the Arduino I/O board, in order to + // turn ON a light if the mouse is over a square and turn it off + // if the mouse is not. + + // created 2003-4 + // based on examples by Casey Reas and Hernando Barragan + // modified 18 Jan 2009 + // by Tom Igoe + + + import processing.serial.*; + + float boxX; + float boxY; + int boxSize = 20; + boolean mouseOverBox = false; + + Serial port; + + void setup() { + size(200, 200); + boxX = width/2.0; + boxY = height/2.0; + rectMode(RADIUS); + + // List all the available serial ports in the output pane. + // You will need to choose the port that the Arduino board is + // connected to from this list. The first port in the list is + // port #0 and the third port in the list is port #2. + println(Serial.list()); + + // Open the port that the Arduino board is connected to (in this case #0) + // Make sure to open the port at the same speed Arduino is using (9600bps) + port = new Serial(this, Serial.list()[0], 9600); + + } + + void draw() + { + background(0); + + // Test if the cursor is over the box + if (mouseX > boxX-boxSize && mouseX < boxX+boxSize && + mouseY > boxY-boxSize && mouseY < boxY+boxSize) { + mouseOverBox = true; + // draw a line around the box and change its color: + stroke(255); + fill(153); + // send an 'H' to indicate mouse is over square: + port.write('H'); + } + else { + // return the box to it's inactive state: + stroke(153); + fill(153); + // send an 'L' to turn the LED off: + port.write('L'); + mouseOverBox = false; + } + + // Draw the box + rect(boxX, boxY, boxSize, boxSize); + } + + + */ + +/* +{ + "boxes" : [ { + "box" : { + "maxclass" : "comment", + "text" : "Physical Pixel\n\nThis patch sends an ASCII H or an ASCII L out the serial port to turn on an LED attached to an Arduino board. It can also send alternating H and L characters once every second to make the LED blink.\n\ncreated 2006\nby David A. Mellis\nmodified 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 11, + "patching_rect" : [ 14.0, 35.0, 354.0, 158.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-1", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to blink every second", + "patching_rect" : [ 99.0, 251.0, 161.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-38", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 74.0, 251.0, 21.0, 21.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-39", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "p blink", + "patching_rect" : [ 74.0, 286.0, 45.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-37", + "fontname" : "Arial", + "numinlets" : 2, + "patcher" : { + "fileversion" : 1, + "rect" : [ 54.0, 94.0, 640.0, 480.0 ], + "bglocked" : 0, + "defrect" : [ 54.0, 94.0, 640.0, 480.0 ], + "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], + "openinpresentation" : 0, + "default_fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "gridonopen" : 0, + "gridsize" : [ 25.0, 25.0 ], + "gridsnaponopen" : 0, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "boxes" : [ { + "box" : { + "maxclass" : "newobj", + "text" : "* 1000", + "patching_rect" : [ 200.0, 150.0, 46.0, 19.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "int" ], + "id" : "obj-12", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 200.0, 75.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "" ], + "id" : "obj-11", + "numinlets" : 0, + "comment" : "" + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 125.0, 250.0, 20.0, 20.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-10", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "metro 1000", + "patching_rect" : [ 115.0, 190.0, 69.0, 19.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "bang" ], + "id" : "obj-3", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "outlet", + "patching_rect" : [ 125.0, 400.0, 25.0, 25.0 ], + "numoutlets" : 0, + "id" : "obj-2", + "numinlets" : 1, + "comment" : "" + } + + } + , { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 100.0, 25.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-1", + "numinlets" : 0, + "comment" : "" + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-12", 0 ], + "destination" : [ "obj-3", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-12", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-1", 0 ], + "destination" : [ "obj-3", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-10", 0 ], + "destination" : [ "obj-2", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-3", 0 ], + "destination" : [ "obj-10", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + ] + } + , + "saved_object_attributes" : { + "fontface" : 0, + "fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "default_fontsize" : 10.0, + "fontname" : "Verdana", + "globalpatchername" : "" + } + + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "convert to int", + "patching_rect" : [ 154.0, 386.0, 104.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-36", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "send L if 0, H if 1", + "patching_rect" : [ 154.0, 361.0, 104.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-35", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "is it on or off?", + "patching_rect" : [ 179.0, 336.0, 95.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-34", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "atoi", + "patching_rect" : [ 279.0, 386.0, 46.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "list" ], + "id" : "obj-33", + "fontname" : "Arial", + "numinlets" : 3 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "H", + "patching_rect" : [ 329.0, 361.0, 32.5, 17.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "" ], + "id" : "obj-32", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "L", + "patching_rect" : [ 279.0, 361.0, 32.5, 17.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "" ], + "id" : "obj-31", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 279.0, 336.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-25", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to turn the LED on and off", + "linecount" : 2, + "patching_rect" : [ 130.0, 205.0, 143.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-24", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 279.0, 211.0, 24.0, 24.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-23", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 381.0, 331.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 429.0, 422.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 454.0, 396.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 381.0, 422.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 403.0, 396.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 474.0, 370.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 381.0, 181.0, 21.0, 21.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 423.0, 370.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 279.0, 461.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to start", + "patching_rect" : [ 408.0, 181.0, 117.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-39", 0 ], + "destination" : [ "obj-37", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-37", 0 ], + "destination" : [ "obj-25", 0 ], + "hidden" : 0, + "midpoints" : [ 83.5, 320.5, 288.5, 320.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-33", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-32", 0 ], + "destination" : [ "obj-33", 0 ], + "hidden" : 0, + "midpoints" : [ 338.5, 381.5, 288.5, 381.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-31", 0 ], + "destination" : [ "obj-33", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-25", 0 ], + "destination" : [ "obj-31", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-25", 1 ], + "destination" : [ "obj-32", 0 ], + "hidden" : 0, + "midpoints" : [ 310.0, 358.0, 338.5, 358.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-23", 0 ], + "destination" : [ "obj-25", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 432.5, 389.0, 367.0, 389.0, 367.0, 411.0, 288.5, 411.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 412.5, 417.0, 288.5, 417.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 390.5, 450.0, 288.5, 450.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 390.5, 322.0, 390.5, 322.0 ] + } + + } + ] + } + + */ diff --git a/arduino-0018-linux-x64/examples/Communication/SerialCallResponse/SerialCallResponse.pde b/arduino-0018-linux-x64/examples/Communication/SerialCallResponse/SerialCallResponse.pde new file mode 100644 index 0000000..809bbf8 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Communication/SerialCallResponse/SerialCallResponse.pde @@ -0,0 +1,1193 @@ +/* + Serial Call and Response + Language: Wiring/Arduino + + This program sends an ASCII A (byte of value 65) on startup + and repeats that until it gets some data in. + Then it waits for a byte in the serial port, and + sends three sensor values whenever it gets a byte in. + + Thanks to Greg Shakar and Scott Fitzgerald for the improvements + + The circuit: + * potentiometers attached to analog inputs 0 and 1 + * pushbutton attached to digital I/O 2 + + + http://www.arduino.cc/en/Tutorial/SerialCallResponse + + Created 26 Sept. 2005 + by Tom Igoe + Modified 14 April 2009 + by Tom Igoe and Scott Fitzgerald + */ + +int firstSensor = 0; // first analog sensor +int secondSensor = 0; // second analog sensor +int thirdSensor = 0; // digital sensor +int inByte = 0; // incoming serial byte + +void setup() +{ + // start serial port at 9600 bps: + Serial.begin(9600); + pinMode(2, INPUT); // digital sensor is on digital pin 2 + establishContact(); // send a byte to establish contact until receiver responds +} + +void loop() +{ + // if we get a valid byte, read analog ins: + if (Serial.available() > 0) { + // get incoming byte: + inByte = Serial.read(); + // read first analog input, divide by 4 to make the range 0-255: + firstSensor = analogRead(0)/4; + // delay 10ms to let the ADC recover: + delay(10); + // read second analog input, divide by 4 to make the range 0-255: + secondSensor = analogRead(1)/4; + // read switch, map it to 0 or 255L + thirdSensor = map(digitalRead(2), 0, 1, 0, 255); + // send sensor values: + Serial.print(firstSensor, BYTE); + Serial.print(secondSensor, BYTE); + Serial.print(thirdSensor, BYTE); + } +} + +void establishContact() { + while (Serial.available() <= 0) { + Serial.print('A', BYTE); // send a capital A + delay(300); + } +} + +/* +Processing sketch to run with this example: + +import processing.serial.*; + +int bgcolor; // Background color +int fgcolor; // Fill color +Serial myPort; // The serial port +int[] serialInArray = new int[3]; // Where we'll put what we receive +int serialCount = 0; // A count of how many bytes we receive +int xpos, ypos; // Starting position of the ball +boolean firstContact = false; // Whether we've heard from the microcontroller + +void setup() { + size(256, 256); // Stage size + noStroke(); // No border on the next thing drawn + + // Set the starting position of the ball (middle of the stage) + xpos = width/2; + ypos = height/2; + + // Print a list of the serial ports, for debugging purposes: + println(Serial.list()); + + // I know that the first port in the serial list on my mac + // is always my FTDI adaptor, so I open Serial.list()[0]. + // On Windows machines, this generally opens COM1. + // Open whatever port is the one you're using. + String portName = Serial.list()[0]; + myPort = new Serial(this, portName, 9600); +} + +void draw() { + background(bgcolor); + fill(fgcolor); + // Draw the shape + ellipse(xpos, ypos, 20, 20); +} + +void serialEvent(Serial myPort) { + // read a byte from the serial port: + int inByte = myPort.read(); + // if this is the first byte received, and it's an A, + // clear the serial buffer and note that you've + // had first contact from the microcontroller. + // Otherwise, add the incoming byte to the array: + if (firstContact == false) { + if (inByte == 'A') { + myPort.clear(); // clear the serial port buffer + firstContact = true; // you've had first contact from the microcontroller + myPort.write('A'); // ask for more + } + } + else { + // Add the latest byte from the serial port to array: + serialInArray[serialCount] = inByte; + serialCount++; + + // If we have 3 bytes: + if (serialCount > 2 ) { + xpos = serialInArray[0]; + ypos = serialInArray[1]; + fgcolor = serialInArray[2]; + + // print the values (for debugging purposes only): + println(xpos + "\t" + ypos + "\t" + fgcolor); + + // Send a capital A to request new sensor readings: + myPort.write('A'); + // Reset serialCount: + serialCount = 0; + } + } +} +*/ + +/* +Max/MSP version 5 patch to run with this example: + +{ + "boxes" : [ { + "box" : { + "maxclass" : "message", + "text" : "65", + "patching_rect" : [ 339.0, 466.0, 32.5, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-9", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 1", + "patching_rect" : [ 339.0, 437.0, 36.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "bang", "" ], + "id" : "obj-6", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Serial Call-Response \n\nSends a byte out the serial port, and reads 3 bytes in. Sets foregound color, xpos, and ypos of a circle using the values returned from the serial port. \n\nNote: This patch assumes that the device on the other end of the serial port is going to send a single byte of value 65 (ASCII A) on startup. The sketch waits for that byte, then sends an ASCII A whenever it wants more data. \n\ncreated 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 11, + "patching_rect" : [ 404.0, 52.0, 464.0, 158.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-5", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "trigger (or [t]) forces right-left conventions. All the drawing and processing will happen before Max requests new values. When this trigger fires, it sends an ASCII A to ask Arduino for new values.", + "linecount" : 3, + "patching_rect" : [ 239.0, 505.0, 425.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-65", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "reinitializes the gates when turned on and off", + "linecount" : 2, + "patching_rect" : [ 170.0, 370.0, 135.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-64", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "checks for the ascii value of \"A\" to begin cominucation. After initial communication is made, this block shuts down.", + "linecount" : 3, + "patching_rect" : [ 460.0, 355.0, 233.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-63", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "p \"draw the circle\"", + "patching_rect" : [ 217.0, 645.0, 269.0, 19.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "" ], + "id" : "obj-62", + "fontname" : "Verdana", + "numinlets" : 3, + "patcher" : { + "fileversion" : 1, + "rect" : [ 54.0, 94.0, 640.0, 480.0 ], + "bglocked" : 0, + "defrect" : [ 54.0, 94.0, 640.0, 480.0 ], + "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], + "openinpresentation" : 0, + "default_fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "gridonopen" : 0, + "gridsize" : [ 25.0, 25.0 ], + "gridsnaponopen" : 0, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "boxes" : [ { + "box" : { + "maxclass" : "message", + "text" : "frgb 255 255 255", + "patching_rect" : [ 375.0, 150.0, 98.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-47", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "frgb 0 0 0", + "patching_rect" : [ 275.0, 125.0, 59.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-46", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 255 0", + "patching_rect" : [ 300.0, 100.0, 66.0, 21.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-45", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "pack 0 0 0 0", + "patching_rect" : [ 50.0, 125.0, 180.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-43", + "fontname" : "Verdana", + "numinlets" : 4 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "+ 10", + "patching_rect" : [ 200.0, 100.0, 40.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-42", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "+ 10", + "patching_rect" : [ 75.0, 100.0, 40.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-41", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "clear, paintoval $1 $2 $3 $4", + "patching_rect" : [ 50.0, 150.0, 152.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-40", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 57.5, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-58", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 120.0, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-59", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 300.0, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-60", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "outlet", + "patching_rect" : [ 228.333344, 228.0, 25.0, 25.0 ], + "numoutlets" : 0, + "id" : "obj-61", + "numinlets" : 1, + "comment" : "" + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-47", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-46", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-40", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-60", 0 ], + "destination" : [ "obj-45", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-59", 0 ], + "destination" : [ "obj-42", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-59", 0 ], + "destination" : [ "obj-43", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-58", 0 ], + "destination" : [ "obj-41", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-58", 0 ], + "destination" : [ "obj-43", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-42", 0 ], + "destination" : [ "obj-43", 3 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-41", 0 ], + "destination" : [ "obj-43", 2 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-45", 1 ], + "destination" : [ "obj-47", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-45", 0 ], + "destination" : [ "obj-46", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-43", 0 ], + "destination" : [ "obj-40", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + ] + } +, + "saved_object_attributes" : { + "fontface" : 0, + "fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "default_fontsize" : 10.0, + "fontname" : "Verdana", + "globalpatchername" : "" + } + + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "0", + "patching_rect" : [ 310.0, 378.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-57", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "!- 1", + "patching_rect" : [ 385.0, 436.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-55", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "gate 1 1", + "patching_rect" : [ 385.0, 355.0, 54.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-54", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 385.0, 405.0, 20.0, 20.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-53", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "gate 1 0", + "patching_rect" : [ 194.0, 455.0, 54.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-50", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 65", + "patching_rect" : [ 385.0, 380.0, 43.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "bang", "" ], + "id" : "obj-48", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "lcd", + "patching_rect" : [ 217.0, 695.0, 256.0, 256.0 ], + "numoutlets" : 4, + "outlettype" : [ "list", "list", "int", "" ], + "id" : "obj-39", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "t 65 l", + "patching_rect" : [ 194.0, 504.0, 42.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-35", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val3", + "patching_rect" : [ 535.0, 604.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-1", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 467.0, 604.0, 56.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-3", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val2", + "patching_rect" : [ 410.0, 605.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-18", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val1", + "patching_rect" : [ 282.0, 605.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-20", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 342.0, 605.0, 56.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-22", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 217.0, 605.0, 55.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-23", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "unpack 0 0 0", + "patching_rect" : [ 217.0, 570.0, 269.0, 21.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "int", "int", "int" ], + "id" : "obj-29", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "zl group 3", + "patching_rect" : [ 194.0, 480.0, 71.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "", "" ], + "id" : "obj-31", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 312.0, 200.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 360.0, 291.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 385.0, 265.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 312.0, 291.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 334.0, 265.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 405.0, 239.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 229.0, 155.0, 22.0, 22.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "qmetro 10", + "patching_rect" : [ 229.0, 200.0, 65.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "bang" ], + "id" : "obj-12", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 354.0, 239.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 229.0, 315.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Read serial input buffer every 10 milliseconds", + "linecount" : 2, + "patching_rect" : [ 13.0, 192.0, 210.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-15", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Click to start", + "patching_rect" : [ 256.0, 163.0, 117.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-12", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-12", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 363.5, 260.5, 238.5, 260.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 343.5, 288.5, 238.5, 288.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 321.5, 311.5, 238.5, 311.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 238.5, 191.0, 321.5, 191.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 2 ], + "destination" : [ "obj-3", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 0 ], + "destination" : [ "obj-23", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 1 ], + "destination" : [ "obj-22", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-50", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-50", 0 ], + "destination" : [ "obj-31", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-48", 0 ], + "destination" : [ "obj-53", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-50", 0 ], + "hidden" : 0, + "midpoints" : [ 394.5, 426.0, 203.5, 426.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-54", 1 ], + "hidden" : 0, + "midpoints" : [ 238.5, 342.0, 429.5, 342.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-54", 0 ], + "destination" : [ "obj-48", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-62", 0 ], + "destination" : [ "obj-39", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-3", 0 ], + "destination" : [ "obj-62", 2 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-22", 0 ], + "destination" : [ "obj-62", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-23", 0 ], + "destination" : [ "obj-62", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-55", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-55", 0 ], + "destination" : [ "obj-54", 0 ], + "hidden" : 0, + "midpoints" : [ 394.5, 459.0, 453.0, 459.0, 453.0, 351.0, 394.5, 351.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-57", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-57", 0 ], + "destination" : [ "obj-53", 0 ], + "hidden" : 0, + "midpoints" : [ 319.5, 401.0, 394.5, 401.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-35", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 203.5, 542.0, 167.0, 542.0, 167.0, 300.0, 238.5, 300.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-35", 1 ], + "destination" : [ "obj-29", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-31", 0 ], + "destination" : [ "obj-35", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-6", 0 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-6", 0 ], + "hidden" : 0, + "midpoints" : [ 394.5, 431.5, 348.5, 431.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-9", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + ] +} + + +*/ diff --git a/arduino-0018-linux-x64/examples/Communication/SerialCallResponseASCII/SerialCallResponseASCII.pde b/arduino-0018-linux-x64/examples/Communication/SerialCallResponseASCII/SerialCallResponseASCII.pde new file mode 100644 index 0000000..7c2528d --- /dev/null +++ b/arduino-0018-linux-x64/examples/Communication/SerialCallResponseASCII/SerialCallResponseASCII.pde @@ -0,0 +1,1267 @@ +/* + Serial Call and Response in ASCII + Language: Wiring/Arduino + + This program sends an ASCII A (byte of value 65) on startup + and repeats that until it gets some data in. + Then it waits for a byte in the serial port, and + sends three ASCII-encoded, comma-separated sensor values, + truncated by a linefeed and carriage return, + whenever it gets a byte in. + + Thanks to Greg Shakar and Scott Fitzgerald for the improvements + + The circuit: + * potentiometers attached to analog inputs 0 and 1 + * pushbutton attached to digital I/O 2 + + + http://www.arduino.cc/en/Tutorial/SerialCallResponseASCII + + Created 26 Sept. 2005 + by Tom Igoe + Modified 14 April 2009 + by Tom Igoe and Scott Fitzgerald + */ + +int firstSensor = 0; // first analog sensor +int secondSensor = 0; // second analog sensor +int thirdSensor = 0; // digital sensor +int inByte = 0; // incoming serial byte + +void setup() +{ + // start serial port at 9600 bps: + Serial.begin(9600); + pinMode(2, INPUT); // digital sensor is on digital pin 2 + establishContact(); // send a byte to establish contact until receiver responds +} + +void loop() +{ + // if we get a valid byte, read analog ins: + if (Serial.available() > 0) { + // get incoming byte: + inByte = Serial.read(); + // read first analog input, divide by 4 to make the range 0-255: + firstSensor = analogRead(0)/4; + // delay 10ms to let the ADC recover: + delay(10); + // read second analog input, divide by 4 to make the range 0-255: + secondSensor = analogRead(1)/4; + // read switch, map it to 0 or 255L + thirdSensor = map(digitalRead(2), 0, 1, 0, 255); + // send sensor values: + Serial.print(firstSensor, DEC); + Serial.print(","); + Serial.print(secondSensor, DEC); + Serial.print(","); + Serial.println(thirdSensor, DEC); + } +} + +void establishContact() { + while (Serial.available() <= 0) { + Serial.println("0,0,0"); // send an initial string + delay(300); + } +} + + +/* +Processing code to run with this example: + + +import processing.serial.*; // import the Processing serial library +Serial myPort; // The serial port + +float bgcolor; // Background color +float fgcolor; // Fill color +float xpos, ypos; // Starting position of the ball + +void setup() { + size(640,480); + + // List all the available serial ports + println(Serial.list()); + + // I know that the first port in the serial list on my mac + // is always my Arduino module, so I open Serial.list()[0]. + // Change the 0 to the appropriate number of the serial port + // that your microcontroller is attached to. + myPort = new Serial(this, Serial.list()[0], 9600); + + // read bytes into a buffer until you get a linefeed (ASCII 10): + myPort.bufferUntil('\n'); + + // draw with smooth edges: + smooth(); +} + +void draw() { + background(bgcolor); + fill(fgcolor); + // Draw the shape + ellipse(xpos, ypos, 20, 20); +} + +// serialEvent method is run automatically by the Processing applet +// whenever the buffer reaches the byte value set in the bufferUntil() +// method in the setup(): + +void serialEvent(Serial myPort) { + // read the serial buffer: + String myString = myPort.readStringUntil('\n'); + // if you got any bytes other than the linefeed: + myString = trim(myString); + + // split the string at the commas + // and convert the sections into integers: + int sensors[] = int(split(myString, ',')); + + // print out the values you got: + for (int sensorNum = 0; sensorNum < sensors.length; sensorNum++) { + print("Sensor " + sensorNum + ": " + sensors[sensorNum] + "\t"); + } + // add a linefeed after all the sensor values are printed: + println(); + if (sensors.length > 1) { + xpos = map(sensors[0], 0,1023,0,width); + ypos = map(sensors[1], 0,1023,0,height); + fgcolor = sensors[2]; + } + // send a byte to ask for more data: + myPort.write("A"); + } + +*/ + +/* +{ + "boxes" : [ { + "box" : { + "maxclass" : "newobj", + "text" : "fromsymbol", + "patching_rect" : [ 265.0, 585.0, 74.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-7", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "itoa", + "patching_rect" : [ 265.0, 562.0, 46.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-8", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 3 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "zl group", + "patching_rect" : [ 265.0, 539.0, 53.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "", "" ], + "id" : "obj-4", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "select 10 13", + "patching_rect" : [ 209.0, 501.0, 75.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-10", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "65", + "patching_rect" : [ 354.0, 481.0, 32.5, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-9", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 1", + "patching_rect" : [ 354.0, 452.0, 36.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "bang", "" ], + "id" : "obj-6", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Serial Call-Response ASCII \n\nSends a byte out the serial port, and reads 3 ASCII enoded, comma separated in, truncated by a linefeed. It then sets foregound color, xpos, and ypos of a circle using the values returned from the serial port. \n\nNote: This patch assumes that the device on the other end of the serial port is going to send a single byte of value 65 (ASCII A) on startup. The sketch waits for that byte, then sends an ASCII A whenever it wants more data. \n\ncreated 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 12, + "patching_rect" : [ 401.0, 67.0, 540.0, 172.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-5", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "trigger (or [t]) forces right-left conventions. All the drawing and processing will happen before Max requests new values. When this trigger fires, it sends an ASCII A to ask Arduino for new values.", + "linecount" : 3, + "patching_rect" : [ 254.0, 625.0, 425.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-65", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "reinitializes the gates when turned on and off", + "linecount" : 2, + "patching_rect" : [ 185.0, 385.0, 135.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-64", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "checks for the ascii value of newline to begin communication. After initial communication is made, this block shuts down.", + "linecount" : 3, + "patching_rect" : [ 475.0, 370.0, 252.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-63", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "p \"draw the circle\"", + "patching_rect" : [ 232.0, 765.0, 269.0, 19.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "" ], + "id" : "obj-62", + "fontname" : "Verdana", + "numinlets" : 3, + "patcher" : { + "fileversion" : 1, + "rect" : [ 54.0, 94.0, 640.0, 480.0 ], + "bglocked" : 0, + "defrect" : [ 54.0, 94.0, 640.0, 480.0 ], + "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], + "openinpresentation" : 0, + "default_fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "gridonopen" : 0, + "gridsize" : [ 25.0, 25.0 ], + "gridsnaponopen" : 0, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "boxes" : [ { + "box" : { + "maxclass" : "message", + "text" : "frgb 255 255 255", + "patching_rect" : [ 375.0, 150.0, 98.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-47", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "frgb 0 0 0", + "patching_rect" : [ 275.0, 125.0, 59.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-46", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 255 0", + "patching_rect" : [ 300.0, 100.0, 66.0, 21.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-45", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "pack 0 0 0 0", + "patching_rect" : [ 50.0, 125.0, 180.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-43", + "fontname" : "Verdana", + "numinlets" : 4 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "+ 10", + "patching_rect" : [ 200.0, 100.0, 40.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-42", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "+ 10", + "patching_rect" : [ 75.0, 100.0, 40.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-41", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "clear, paintoval $1 $2 $3 $4", + "patching_rect" : [ 50.0, 150.0, 152.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-40", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 57.5, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-58", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 120.0, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-59", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 300.0, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-60", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "outlet", + "patching_rect" : [ 228.333344, 228.0, 25.0, 25.0 ], + "numoutlets" : 0, + "id" : "obj-61", + "numinlets" : 1, + "comment" : "" + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-43", 0 ], + "destination" : [ "obj-40", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-45", 0 ], + "destination" : [ "obj-46", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-45", 1 ], + "destination" : [ "obj-47", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-41", 0 ], + "destination" : [ "obj-43", 2 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-42", 0 ], + "destination" : [ "obj-43", 3 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-58", 0 ], + "destination" : [ "obj-43", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-58", 0 ], + "destination" : [ "obj-41", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-59", 0 ], + "destination" : [ "obj-43", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-59", 0 ], + "destination" : [ "obj-42", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-60", 0 ], + "destination" : [ "obj-45", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-40", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-46", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-47", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + ] + } +, + "saved_object_attributes" : { + "fontface" : 0, + "fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "default_fontsize" : 10.0, + "fontname" : "Verdana", + "globalpatchername" : "" + } + + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "0", + "patching_rect" : [ 325.0, 393.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-57", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "!- 1", + "patching_rect" : [ 400.0, 451.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-55", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "gate 1 1", + "patching_rect" : [ 400.0, 370.0, 54.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-54", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 400.0, 420.0, 20.0, 20.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-53", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "gate 1 0", + "patching_rect" : [ 209.0, 470.0, 54.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-50", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 10", + "patching_rect" : [ 400.0, 393.0, 43.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "bang", "" ], + "id" : "obj-48", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "lcd", + "patching_rect" : [ 232.0, 815.0, 256.0, 256.0 ], + "numoutlets" : 4, + "outlettype" : [ "list", "list", "int", "" ], + "id" : "obj-39", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "t 65 l", + "patching_rect" : [ 209.0, 624.0, 42.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-35", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val3", + "patching_rect" : [ 553.0, 725.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-1", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 482.0, 725.0, 56.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-3", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val2", + "patching_rect" : [ 425.0, 725.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-18", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val1", + "patching_rect" : [ 297.0, 725.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-20", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 357.0, 725.0, 56.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-22", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 232.0, 725.0, 55.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-23", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "unpack 0 0 0 0 0", + "patching_rect" : [ 232.0, 690.0, 269.0, 21.0 ], + "numoutlets" : 5, + "fontsize" : 12.0, + "outlettype" : [ "int", "int", "int", "int", "int" ], + "id" : "obj-29", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 327.0, 215.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 375.0, 306.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 400.0, 280.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 327.0, 306.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 349.0, 280.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 420.0, 254.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 244.0, 170.0, 22.0, 22.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "qmetro 10", + "patching_rect" : [ 244.0, 215.0, 65.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "bang" ], + "id" : "obj-12", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 369.0, 254.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 244.0, 330.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Read serial input buffer every 10 milliseconds", + "linecount" : 2, + "patching_rect" : [ 28.0, 207.0, 210.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-15", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Click to start", + "patching_rect" : [ 271.0, 178.0, 117.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-54", 0 ], + "destination" : [ "obj-48", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-48", 0 ], + "destination" : [ "obj-53", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-9", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-6", 0 ], + "hidden" : 0, + "midpoints" : [ 409.5, 446.5, 363.5, 446.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-6", 0 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-35", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 218.5, 656.0, 182.0, 656.0, 182.0, 315.0, 253.5, 315.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-57", 0 ], + "destination" : [ "obj-53", 0 ], + "hidden" : 0, + "midpoints" : [ 334.5, 416.0, 409.5, 416.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-57", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-55", 0 ], + "destination" : [ "obj-54", 0 ], + "hidden" : 0, + "midpoints" : [ 409.5, 474.0, 468.0, 474.0, 468.0, 366.0, 409.5, 366.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-55", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-23", 0 ], + "destination" : [ "obj-62", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-22", 0 ], + "destination" : [ "obj-62", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-3", 0 ], + "destination" : [ "obj-62", 2 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-62", 0 ], + "destination" : [ "obj-39", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-54", 1 ], + "hidden" : 0, + "midpoints" : [ 253.5, 357.0, 444.5, 357.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-50", 0 ], + "hidden" : 0, + "midpoints" : [ 409.5, 441.0, 218.5, 441.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-50", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 253.5, 206.0, 336.5, 206.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 336.5, 326.5, 253.5, 326.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 358.5, 303.5, 253.5, 303.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 378.5, 275.5, 253.5, 275.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-12", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-12", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-10", 2 ], + "destination" : [ "obj-4", 0 ], + "hidden" : 0, + "midpoints" : [ 274.5, 542.0, 274.5, 542.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-10", 0 ], + "destination" : [ "obj-4", 0 ], + "hidden" : 0, + "midpoints" : [ 218.5, 529.5, 274.5, 529.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-4", 0 ], + "destination" : [ "obj-8", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-8", 0 ], + "destination" : [ "obj-7", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-7", 0 ], + "destination" : [ "obj-35", 0 ], + "hidden" : 0, + "midpoints" : [ 274.5, 614.0, 218.5, 614.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-50", 0 ], + "destination" : [ "obj-10", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 0 ], + "destination" : [ "obj-23", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-35", 1 ], + "destination" : [ "obj-29", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 4 ], + "destination" : [ "obj-3", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 2 ], + "destination" : [ "obj-22", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + ] +} + +*/ diff --git a/arduino-0018-linux-x64/examples/Communication/VirtualColorMixer/VirtualColorMixer.pde b/arduino-0018-linux-x64/examples/Communication/VirtualColorMixer/VirtualColorMixer.pde new file mode 100644 index 0000000..f23f147 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Communication/VirtualColorMixer/VirtualColorMixer.pde @@ -0,0 +1,697 @@ +/* + This example reads three analog sensors (potentiometers are easiest) + and sends their values serially. The Processing and Max/MSP programs at the bottom + take those three values and use them to change the background color of the screen. + + The circuit: + * potentiometers attached to analog inputs 0, 1, and 2 + + http://www.arduino.cc/en/Tutorial/VirtualColorMixer + + created 2 Dec 2006 + by David A. Mellis + modified 14 Apr 2009 + by Tom Igoe and Scott Fitzgerald + + */ + +const int redPin = 0; // sensor to control red color +const int greenPin = 1; // sensor to control green color +const int bluePin = 2; // sensor to control blue color + +void setup() +{ + Serial.begin(9600); +} + +void loop() +{ + Serial.print(analogRead(redPin)); + Serial.print(","); + Serial.print(analogRead(greenPin)); + Serial.print(","); + Serial.println(analogRead(bluePin)); +} + +/* Processing code for this example + + + import processing.serial.*; + + float redValue = 0; // red value + float greenValue = 0; // green value + float blueValue = 0; // blue value + + Serial myPort; + + void setup() { + size(200, 200); + + // List all the available serial ports + println(Serial.list()); + // I know that the first port in the serial list on my mac + // is always my Arduino, so I open Serial.list()[0]. + // Open whatever port is the one you're using. + myPort = new Serial(this, Serial.list()[0], 9600); + // don't generate a serialEvent() unless you get a newline character: + myPort.bufferUntil('\n'); + } + + void draw() { + // set the background color with the color values: + background(redValue, greenValue, blueValue); + } + + void serialEvent(Serial myPort) { + // get the ASCII string: + String inString = myPort.readStringUntil('\n'); + + if (inString != null) { + // trim off any whitespace: + inString = trim(inString); + // split the string on the commas and convert the + // resulting substrings into an integer array: + float[] colors = float(split(inString, ",")); + // if the array has at least three elements, you know + // you got the whole thing. Put the numbers in the + // color variables: + if (colors.length >=3) { + // map them to the range 0-255: + redValue = map(colors[0], 0, 1023, 0, 255); + greenValue = map(colors[1], 0, 1023, 0, 255); + blueValue = map(colors[2], 0, 1023, 0, 255); + } + } + } + */ + +/* Max/MSP patch for this example + { + "boxes" : [ { + "box" : { + "maxclass" : "newobj", + "text" : "/ 4", + "patching_rect" : [ 448.0, 502.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-25", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "/ 4", + "patching_rect" : [ 398.0, 502.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-24", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "/ 4", + "patching_rect" : [ 348.0, 502.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-23", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Virtual color mixer\n\nThis patch takes a string, containing three comma-separated ASCII formatted numbers from 0 to 1023, with a carriage return and linefeed at the end. It converts the string to three integers and uses them to set the background color.\n\n created 2 Dec 2006\n by David A. Mellis\nmodified 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 11, + "patching_rect" : [ 524.0, 51.0, 398.0, 158.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-32", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 372.0, 125.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 457.0, 276.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 457.0, 250.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 372.0, 276.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 394.0, 250.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 457.0, 224.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Convert ASCII to symbol", + "patching_rect" : [ 424.0, 423.0, 147.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-4", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Convert integer to ASCII", + "patching_rect" : [ 424.0, 400.0, 147.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-5", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "fromsymbol", + "patching_rect" : [ 347.0, 423.0, 74.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-7", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "itoa", + "patching_rect" : [ 347.0, 400.0, 46.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-8", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 3 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "zl group", + "patching_rect" : [ 347.0, 377.0, 53.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "", "" ], + "id" : "obj-9", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 10 13", + "patching_rect" : [ 289.0, 326.0, 77.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-10", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 289.0, 88.0, 15.0, 15.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "qmetro 10", + "patching_rect" : [ 289.0, 125.0, 65.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "bang" ], + "id" : "obj-12", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 414.0, 224.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 289.0, 300.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Read serial input buffer every 10 milliseconds", + "linecount" : 2, + "patching_rect" : [ 98.0, 117.0, 185.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-15", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "If you get newline (ASCII 10), send the list. If you get return (ASCII 13) do nothing. Any other value, add to the list", + "linecount" : 3, + "patching_rect" : [ 377.0, 314.0, 320.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-16", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to open/close serial port and start/stop patch", + "linecount" : 2, + "patching_rect" : [ 316.0, 77.0, 199.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "bgcolor 0 0 0", + "patching_rect" : [ 348.0, 585.0, 169.0, 19.0 ], + "numoutlets" : 0, + "fontsize" : 10.0, + "id" : "obj-6", + "fontname" : "Verdana", + "numinlets" : 4 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "unpack 0 0 0 0 0", + "patching_rect" : [ 347.0, 470.0, 119.0, 19.0 ], + "numoutlets" : 5, + "fontsize" : 10.0, + "outlettype" : [ "int", "int", "int", "int", "int" ], + "id" : "obj-20", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 448.0, 535.0, 50.0, 19.0 ], + "numoutlets" : 2, + "fontsize" : 10.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-18", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 398.0, 535.0, 50.0, 19.0 ], + "numoutlets" : 2, + "fontsize" : 10.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-1", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 348.0, 535.0, 50.0, 19.0 ], + "numoutlets" : 2, + "fontsize" : 10.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-22", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Here's the numbers from Arduino's analog input", + "linecount" : 3, + "patching_rect" : [ 198.0, 484.0, 138.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-3", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-18", 0 ], + "destination" : [ "obj-6", 2 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-1", 0 ], + "destination" : [ "obj-6", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-22", 0 ], + "destination" : [ "obj-6", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-25", 0 ], + "destination" : [ "obj-18", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-20", 4 ], + "destination" : [ "obj-25", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-20", 2 ], + "destination" : [ "obj-24", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-24", 0 ], + "destination" : [ "obj-1", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-23", 0 ], + "destination" : [ "obj-22", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-20", 0 ], + "destination" : [ "obj-23", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-8", 0 ], + "destination" : [ "obj-7", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-10", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-12", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-12", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 423.5, 245.5, 298.5, 245.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 403.5, 273.5, 298.5, 273.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 381.5, 296.5, 298.5, 296.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 298.0, 116.0, 381.5, 116.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-7", 0 ], + "destination" : [ "obj-20", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-9", 0 ], + "destination" : [ "obj-8", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-10", 0 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ 298.5, 353.0, 356.5, 353.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-10", 2 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ 356.5, 365.0, 356.5, 365.0 ] + } + + } + ] + } + + */ diff --git a/arduino-0018-linux-x64/examples/Control/Arrays/Arrays.pde b/arduino-0018-linux-x64/examples/Control/Arrays/Arrays.pde new file mode 100644 index 0000000..d9d9837 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Control/Arrays/Arrays.pde @@ -0,0 +1,55 @@ +/* + Arrays + + Demonstrates the use of an array to hold pin numbers + in order to iterate over the pins in a sequence. + Lights multiple LEDs in sequence, then in reverse. + + Unlike the For Loop tutorial, where the pins have to be + contiguous, here the pins can be in any random order. + + The circuit: + * LEDs from pins 2 through 7 to ground + + created 2006 + by David A. Mellis + modified 5 Jul 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/Array + */ + +int timer = 100; // The higher the number, the slower the timing. +int ledPins[] = { + 2, 7, 4, 6, 5, 3 }; // an array of pin numbers to which LEDs are attached +int pinCount = 6; // the number of pins (i.e. the length of the array) + +void setup() { + int thisPin; + // the array elements are numbered from 0 to (pinCount - 1). + // use a for loop to initialize each pin as an output: + for (int thisPin = 0; thisPin < pinCount; thisPin++) { + pinMode(ledPins[thisPin], OUTPUT); + } +} + +void loop() { + // loop from the lowest pin to the highest: + for (int thisPin = 0; thisPin < pinCount; thisPin++) { + // turn the pin on: + digitalWrite(ledPins[thisPin], HIGH); + delay(timer); + // turn the pin off: + digitalWrite(ledPins[thisPin], LOW); + + } + + // loop from the highest pin to the lowest: + for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) { + // turn the pin on: + digitalWrite(ledPins[thisPin], HIGH); + delay(timer); + // turn the pin off: + digitalWrite(ledPins[thisPin], LOW); + } +} diff --git a/arduino-0018-linux-x64/examples/Control/ForLoopIteration/ForLoopIteration.pde b/arduino-0018-linux-x64/examples/Control/ForLoopIteration/ForLoopIteration.pde new file mode 100644 index 0000000..4fd745d --- /dev/null +++ b/arduino-0018-linux-x64/examples/Control/ForLoopIteration/ForLoopIteration.pde @@ -0,0 +1,45 @@ +/* + For Loop Iteration + + Demonstrates the use of a for() loop. + Lights multiple LEDs in sequence, then in reverse. + + The circuit: + * LEDs from pins 2 through 7 to ground + + created 2006 + by David A. Mellis + modified 5 Jul 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/ForLoop + */ + +int timer = 100; // The higher the number, the slower the timing. + +void setup() { + // use a for loop to initialize each pin as an output: + for (int thisPin = 2; thisPin < 8; thisPin++) { + pinMode(thisPin, OUTPUT); + } +} + +void loop() { + // loop from the lowest pin to the highest: + for (int thisPin = 2; thisPin < 8; thisPin++) { + // turn the pin on: + digitalWrite(thisPin, HIGH); + delay(timer); + // turn the pin off: + digitalWrite(thisPin, LOW); + } + + // loop from the highest pin to the lowest: + for (int thisPin = 7; thisPin >= 2; thisPin--) { + // turn the pin on: + digitalWrite(thisPin, HIGH); + delay(timer); + // turn the pin off: + digitalWrite(thisPin, LOW); + } +} diff --git a/arduino-0018-linux-x64/examples/Control/IfStatementConditional/IfStatementConditional.pde b/arduino-0018-linux-x64/examples/Control/IfStatementConditional/IfStatementConditional.pde new file mode 100644 index 0000000..a763ae5 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Control/IfStatementConditional/IfStatementConditional.pde @@ -0,0 +1,53 @@ +/* + Conditionals - If statement + + This example demonstrates the use of if() statements. + It reads the state of a potentiometer (an analog input) and turns on an LED + only if the LED goes above a certain threshold level. It prints the analog value + regardless of the level. + + The circuit: + * potentiometer connected to analog pin 0. + Center pin of the potentiometer goes to the analog pin. + side pins of the potentiometer go to +5V and ground + * LED connected from digital pin 13 to ground + + * Note: On most Arduino boards, there is already an LED on the board + connected to pin 13, so you don't need any extra components for this example. + + created 17 Jan 2009 + by Tom Igoe + + http://arduino.cc/en/Tutorial/ + + */ + +// These constants won't change: +const int analogPin = 0; // pin that the sensor is attached to +const int ledPin = 13; // pin that the LED is attached to +const int threshold = 400; // an arbitrary threshold level that's in the range of the analog input + +void setup() { + // initialize the LED pin as an output: + pinMode(ledPin, OUTPUT); + // initialize serial communications: + Serial.begin(9600); +} + +void loop() { + // read the value of the potentiometer: + int analogValue = analogRead(analogPin); + + // if the analog value is high enough, turn on the LED: + if (analogValue > threshold) { + digitalWrite(ledPin, HIGH); + } + else { + digitalWrite(ledPin,LOW); + } + + // print the analog value: + Serial.println(analogValue, DEC); + +} + diff --git a/arduino-0018-linux-x64/examples/Control/WhileStatementConditional/WhileStatementConditional.pde b/arduino-0018-linux-x64/examples/Control/WhileStatementConditional/WhileStatementConditional.pde new file mode 100644 index 0000000..0500479 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Control/WhileStatementConditional/WhileStatementConditional.pde @@ -0,0 +1,86 @@ +/* + Conditionals - while statement + + This example demonstrates the use of while() statements. + + While the pushbutton is pressed, the sketch runs the calibration routine. + The sensor readings during the while loop define the minimum and maximum + of expected values from the photo resistor. + + This is a variation on the calibrate example. + + The circuit: + * photo resistor connected from +5V to analog in pin 0 + * 10K resistor connected from ground to analog in pin 0 + * LED connected from digital pin 9 to ground through 220 ohm resistor + * pushbutton attached from pin 2 to +5V + * 10K resistor attached from pin 2 to ground + + created 17 Jan 2009 + modified 25 Jun 2009 + by Tom Igoe + + http://arduino.cc/en/Tutorial/WhileLoop + + */ + + +// These constants won't change: +const int sensorPin = 2; // pin that the sensor is attached to +const int ledPin = 9; // pin that the LED is attached to +const int indicatorLedPin = 13; // pin that the built-in LED is attached to +const int buttonPin = 2; // pin that the button is attached to + + +// These variables will change: +int sensorMin = 1023; // minimum sensor value +int sensorMax = 0; // maximum sensor value +int sensorValue = 0; // the sensor value + + +void setup() { + // set the LED pins as outputs and the switch pin as input: + pinMode(indicatorLedPin, OUTPUT); + pinMode (ledPin, OUTPUT); + pinMode (buttonPin, INPUT); +} + +void loop() { + // while the button is pressed, take calibration readings: + while (digitalRead(buttonPin) == HIGH) { + calibrate(); + } + // signal the end of the calibration period + digitalWrite(indicatorLedPin, LOW); + + // read the sensor: + sensorValue = analogRead(sensorPin); + + // apply the calibration to the sensor reading + sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); + + // in case the sensor value is outside the range seen during calibration + sensorValue = constrain(sensorValue, 0, 255); + + // fade the LED using the calibrated value: + analogWrite(ledPin, sensorValue); +} + +void calibrate() { + // turn on the indicator LED to indicate that calibration is happening: + digitalWrite(indicatorLedPin, HIGH); + // read the sensor: + sensorValue = analogRead(sensorPin); + + // record the maximum sensor value + if (sensorValue > sensorMax) { + sensorMax = sensorValue; + } + + // record the minimum sensor value + if (sensorValue < sensorMin) { + sensorMin = sensorValue; + } +} + + diff --git a/arduino-0018-linux-x64/examples/Control/switchCase/switchCase.pde b/arduino-0018-linux-x64/examples/Control/switchCase/switchCase.pde new file mode 100644 index 0000000..10a2be1 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Control/switchCase/switchCase.pde @@ -0,0 +1,59 @@ +/* + Switch statement + + Demonstrates the use of a switch statement. The switch + statement allows you to choose from among a set of discrete values + of a variable. It's like a series of if statements. + + To see this sketch in action, but the board and sensor in a well-lit + room, open the serial monitor, and and move your hand gradually + down over the sensor. + + The circuit: + * photoresistor from analog in 0 to +5V + * 10K resistor from analog in 0 to ground + + created 1 Jul 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/SwitchCase + */ + +// these constants won't change: +const int sensorMin = 0; // sensor minimum, discovered through experiment +const int sensorMax = 600; // sensor maximum, discovered through experiment + +void setup() { + // initialize serial communication: + Serial.begin(9600); +} + +void loop() { + // read the sensor: + int sensorReading = analogRead(0); + // map the sensor range to a range of four options: + int range = map(sensorReading, sensorMin, sensorMax, 0, 3); + + // do something different depending on the + // range value: + switch (range) { + case 0: // your hand is on the sensor + Serial.println("dark"); + break; + case 1: // your hand is close to the sensor + Serial.println("dim"); + break; + case 2: // your hand is a few inches from the sensor + Serial.println("medium"); + break; + case 3: // your hand is nowhere near the sensor + Serial.println("bright"); + break; + } + +} + + + + + diff --git a/arduino-0018-linux-x64/examples/Control/switchCase2/switchCase2.pde b/arduino-0018-linux-x64/examples/Control/switchCase2/switchCase2.pde new file mode 100644 index 0000000..94a1b6c --- /dev/null +++ b/arduino-0018-linux-x64/examples/Control/switchCase2/switchCase2.pde @@ -0,0 +1,64 @@ +/* + Switch statement with serial input + + Demonstrates the use of a switch statement. The switch + statement allows you to choose from among a set of discrete values + of a variable. It's like a series of if statements. + + To see this sketch in action, open the Serial monitor and send any character. + The characters a, b, c, d, and e, will turn on LEDs. Any other character will turn + the LEDs off. + + The circuit: + * 5 LEDs attached to digital pins 2 through 6 through 220-ohm resistors + + created 1 Jul 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/SwitchCase2 + */ + +void setup() { + // initialize serial communication: + Serial.begin(9600); + // initialize the LED pins: + for (int thisPin = 2; thisPin < 7; thisPin++) { + pinMode(thisPin, OUTPUT); + } +} + +void loop() { + // read the sensor: + if (Serial.available() > 0) { + int inByte = Serial.read(); + // do something different depending on the character received. + // The switch statement expects single number values for each case; + // in this exmaple, though, you're using single quotes to tell + // the controller to get the ASCII value for the character. For + // example 'a' = 97, 'b' = 98, and so forth: + + switch (inByte) { + case 'a': + digitalWrite(2, HIGH); + break; + case 'b': + digitalWrite(3, HIGH); + break; + case 'c': + digitalWrite(4, HIGH); + break; + case 'd': + digitalWrite(5, HIGH); + break; + case 'e': + digitalWrite(6, HIGH); + break; + default: + // turn all the LEDs off: + for (int thisPin = 2; thisPin < 7; thisPin++) { + digitalWrite(thisPin, LOW); + } + } + } +} + diff --git a/arduino-0018-linux-x64/examples/Digital/Blink/Blink.pde b/arduino-0018-linux-x64/examples/Digital/Blink/Blink.pde new file mode 100644 index 0000000..5d27483 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Digital/Blink/Blink.pde @@ -0,0 +1,40 @@ +/* + Blink + + Turns on an LED on for one second, then off for one second, repeatedly. + + The circuit: + * LED connected from digital pin 13 to ground. + + * Note: On most Arduino boards, there is already an LED on the board + connected to pin 13, so you don't need any extra components for this example. + + + Created 1 June 2005 + By David Cuartielles + + http://arduino.cc/en/Tutorial/Blink + + based on an orginal by H. Barragan for the Wiring i/o board + + */ + +int ledPin = 13; // LED connected to digital pin 13 + +// The setup() method runs once, when the sketch starts + +void setup() { + // initialize the digital pin as an output: + pinMode(ledPin, OUTPUT); +} + +// the loop() method runs over and over again, +// as long as the Arduino has power + +void loop() +{ + digitalWrite(ledPin, HIGH); // set the LED on + delay(1000); // wait for a second + digitalWrite(ledPin, LOW); // set the LED off + delay(1000); // wait for a second +} diff --git a/arduino-0018-linux-x64/examples/Digital/BlinkWithoutDelay/BlinkWithoutDelay.pde b/arduino-0018-linux-x64/examples/Digital/BlinkWithoutDelay/BlinkWithoutDelay.pde new file mode 100644 index 0000000..f1d6984 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Digital/BlinkWithoutDelay/BlinkWithoutDelay.pde @@ -0,0 +1,58 @@ +/* Blink without Delay + + Turns on and off a light emitting diode(LED) connected to a digital + pin, without using the delay() function. This means that other code + can run at the same time without being interrupted by the LED code. + + The circuit: + * LED attached from pin 13 to ground. + * Note: on most Arduinos, there is already an LED on the board + that's attached to pin 13, so no hardware is needed for this example. + + + created 2005 + by David A. Mellis + modified 17 Jun 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay + */ + +// constants won't change. Used here to +// set pin numbers: +const int ledPin = 13; // the number of the LED pin + +// Variables will change: +int ledState = LOW; // ledState used to set the LED +long previousMillis = 0; // will store last time LED was updated + +// the follow variables is a long because the time, measured in miliseconds, +// will quickly become a bigger number than can be stored in an int. +long interval = 1000; // interval at which to blink (milliseconds) + +void setup() { + // set the digital pin as output: + pinMode(ledPin, OUTPUT); +} + +void loop() +{ + // here is where you'd put code that needs to be running all the time. + + // check to see if it's time to blink the LED; that is, is the difference + // between the current time and last time we blinked the LED bigger than + // the interval at which we want to blink the LED. + if (millis() - previousMillis > interval) { + // save the last time you blinked the LED + previousMillis = millis(); + + // if the LED is off turn it on and vice-versa: + if (ledState == LOW) + ledState = HIGH; + else + ledState = LOW; + + // set the LED with the ledState of the variable: + digitalWrite(ledPin, ledState); + } +} \ No newline at end of file diff --git a/arduino-0018-linux-x64/examples/Digital/Button/Button.pde b/arduino-0018-linux-x64/examples/Digital/Button/Button.pde new file mode 100644 index 0000000..8df98ec --- /dev/null +++ b/arduino-0018-linux-x64/examples/Digital/Button/Button.pde @@ -0,0 +1,54 @@ +/* + Button + + Turns on and off a light emitting diode(LED) connected to digital + pin 13, when pressing a pushbutton attached to pin 7. + + + The circuit: + * LED attached from pin 13 to ground + * pushbutton attached to pin 2 from +5V + * 10K resistor attached to pin 2 from ground + + * Note: on most Arduinos there is already an LED on the board + attached to pin 13. + + + created 2005 + by DojoDave + modified 17 Jun 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/Button + */ + +// constants won't change. They're used here to +// set pin numbers: +const int buttonPin = 2; // the number of the pushbutton pin +const int ledPin = 13; // the number of the LED pin + +// variables will change: +int buttonState = 0; // variable for reading the pushbutton status + +void setup() { + // initialize the LED pin as an output: + pinMode(ledPin, OUTPUT); + // initialize the pushbutton pin as an input: + pinMode(buttonPin, INPUT); +} + +void loop(){ + // read the state of the pushbutton value: + buttonState = digitalRead(buttonPin); + + // check if the pushbutton is pressed. + // if it is, the buttonState is HIGH: + if (buttonState == HIGH) { + // turn LED on: + digitalWrite(ledPin, HIGH); + } + else { + // turn LED off: + digitalWrite(ledPin, LOW); + } +} \ No newline at end of file diff --git a/arduino-0018-linux-x64/examples/Digital/Debounce/Debounce.pde b/arduino-0018-linux-x64/examples/Digital/Debounce/Debounce.pde new file mode 100644 index 0000000..568100f --- /dev/null +++ b/arduino-0018-linux-x64/examples/Digital/Debounce/Debounce.pde @@ -0,0 +1,74 @@ +/* + Debounce + + Each time the input pin goes from LOW to HIGH (e.g. because of a push-button + press), the output pin is toggled from LOW to HIGH or HIGH to LOW. There's + a minimum delay between toggles to debounce the circuit (i.e. to ignore + noise). + + The circuit: + * LED attached from pin 13 to ground + * pushbutton attached from pin 2 to +5V + * 10K resistor attached from pin 2 to ground + + * Note: On most Arduino boards, there is already an LED on the board + connected to pin 13, so you don't need any extra components for this example. + + + created 21 November 2006 + by David A. Mellis + modified 3 Jul 2009 + by Limor Fried + + + http://www.arduino.cc/en/Tutorial/Debounce + */ + +// constants won't change. They're used here to +// set pin numbers: +const int buttonPin = 2; // the number of the pushbutton pin +const int ledPin = 13; // the number of the LED pin + +// Variables will change: +int ledState = HIGH; // the current state of the output pin +int buttonState; // the current reading from the input pin +int lastButtonState = LOW; // the previous reading from the input pin + +// the following variables are long's because the time, measured in miliseconds, +// will quickly become a bigger number than can be stored in an int. +long lastDebounceTime = 0; // the last time the output pin was toggled +long debounceDelay = 50; // the debounce time; increase if the output flickers + +void setup() { + pinMode(buttonPin, INPUT); + pinMode(ledPin, OUTPUT); +} + +void loop() { + // read the state of the switch into a local variable: + int reading = digitalRead(buttonPin); + + // check to see if you just pressed the button + // (i.e. the input went from LOW to HIGH), and you've waited + // long enough since the last press to ignore any noise: + + // If the switch changed, due to noise or pressing: + if (reading != lastButtonState) { + // reset the debouncing timer + lastDebounceTime = millis(); + } + + if ((millis() - lastDebounceTime) > debounceDelay) { + // whatever the reading is at, it's been there for longer + // than the debounce delay, so take it as the actual current state: + buttonState = reading; + } + + // set the LED using the state of the button: + digitalWrite(ledPin, buttonState); + + // save the reading. Next time through the loop, + // it'll be the lastButtonState: + lastButtonState = reading; +} + diff --git a/arduino-0018-linux-x64/examples/Digital/StateChangeDetection/StateChangeDetection.pde b/arduino-0018-linux-x64/examples/Digital/StateChangeDetection/StateChangeDetection.pde new file mode 100644 index 0000000..607dfc9 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Digital/StateChangeDetection/StateChangeDetection.pde @@ -0,0 +1,90 @@ +/* + State change detection (edge detection) + + Often, you don't need to know the state of a digital input all the time, + but you just need to know when the input changes from one state to another. + For example, you want to know when a button goes from OFF to ON. This is called + state change detection, or edge detection. + + This example shows how to detect when a button or button changes from off to on + and on to off. + + The circuit: + * pushbutton attached to pin 2 from +5V + * 10K resistor attached to pin 2 from ground + * LED attached from pin 13 to ground (or use the built-in LED on + most Arduino boards) + + created 27 Sep 2005 + modified 30 Dec 2009 + by Tom Igoe + + http://arduino.cc/en/Tutorial/ButtonStateChange + + */ + +// this constant won't change: +const int buttonPin = 2; // the pin that the pushbutton is attached to +const int ledPin = 13; // the pin that the LED is attached to + +// Variables will change: +int buttonPushCounter = 0; // counter for the number of button presses +int buttonState = 0; // current state of the button +int lastButtonState = 0; // previous state of the button + +void setup() { + // initialize the button pin as a input: + pinMode(buttonPin, INPUT); + // initialize the LED as an output: + pinMode(ledPin, OUTPUT); + // initialize serial communication: + Serial.begin(9600); +} + + +void loop() { + // read the pushbutton input pin: + buttonState = digitalRead(buttonPin); + + // compare the buttonState to its previous state + if (buttonState != lastButtonState) { + // if the state has changed, increment the counter + if (buttonState == HIGH) { + // if the current state is HIGH then the button + // wend from off to on: + buttonPushCounter++; + Serial.println("on"); + Serial.print("number of button pushes: "); + Serial.println(buttonPushCounter, DEC); + } + else { + // if the current state is LOW then the button + // wend from on to off: + Serial.println("off"); + } + + // save the current state as the last state, + //for next time through the loop + lastButtonState = buttonState; + } + + // turns on the LED every four button pushes by + // checking the modulo of the button push counter. + // the modulo function gives you the remainder of + // the division of two numbers: + if (buttonPushCounter % 4 == 0) { + digitalWrite(ledPin, HIGH); + } else { + digitalWrite(ledPin, LOW); + } + +} + + + + + + + + + diff --git a/arduino-0018-linux-x64/examples/Digital/toneKeyboard/pitches.h b/arduino-0018-linux-x64/examples/Digital/toneKeyboard/pitches.h new file mode 100644 index 0000000..55c7d54 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Digital/toneKeyboard/pitches.h @@ -0,0 +1,95 @@ +/************************************************* + * Public Constants + *************************************************/ + +#define NOTE_B0 31 +#define NOTE_C1 33 +#define NOTE_CS1 35 +#define NOTE_D1 37 +#define NOTE_DS1 39 +#define NOTE_E1 41 +#define NOTE_F1 44 +#define NOTE_FS1 46 +#define NOTE_G1 49 +#define NOTE_GS1 52 +#define NOTE_A1 55 +#define NOTE_AS1 58 +#define NOTE_B1 62 +#define NOTE_C2 65 +#define NOTE_CS2 69 +#define NOTE_D2 73 +#define NOTE_DS2 78 +#define NOTE_E2 82 +#define NOTE_F2 87 +#define NOTE_FS2 93 +#define NOTE_G2 98 +#define NOTE_GS2 104 +#define NOTE_A2 110 +#define NOTE_AS2 117 +#define NOTE_B2 123 +#define NOTE_C3 131 +#define NOTE_CS3 139 +#define NOTE_D3 147 +#define NOTE_DS3 156 +#define NOTE_E3 165 +#define NOTE_F3 175 +#define NOTE_FS3 185 +#define NOTE_G3 196 +#define NOTE_GS3 208 +#define NOTE_A3 220 +#define NOTE_AS3 233 +#define NOTE_B3 247 +#define NOTE_C4 262 +#define NOTE_CS4 277 +#define NOTE_D4 294 +#define NOTE_DS4 311 +#define NOTE_E4 330 +#define NOTE_F4 349 +#define NOTE_FS4 370 +#define NOTE_G4 392 +#define NOTE_GS4 415 +#define NOTE_A4 440 +#define NOTE_AS4 466 +#define NOTE_B4 494 +#define NOTE_C5 523 +#define NOTE_CS5 554 +#define NOTE_D5 587 +#define NOTE_DS5 622 +#define NOTE_E5 659 +#define NOTE_F5 698 +#define NOTE_FS5 740 +#define NOTE_G5 784 +#define NOTE_GS5 831 +#define NOTE_A5 880 +#define NOTE_AS5 932 +#define NOTE_B5 988 +#define NOTE_C6 1047 +#define NOTE_CS6 1109 +#define NOTE_D6 1175 +#define NOTE_DS6 1245 +#define NOTE_E6 1319 +#define NOTE_F6 1397 +#define NOTE_FS6 1480 +#define NOTE_G6 1568 +#define NOTE_GS6 1661 +#define NOTE_A6 1760 +#define NOTE_AS6 1865 +#define NOTE_B6 1976 +#define NOTE_C7 2093 +#define NOTE_CS7 2217 +#define NOTE_D7 2349 +#define NOTE_DS7 2489 +#define NOTE_E7 2637 +#define NOTE_F7 2794 +#define NOTE_FS7 2960 +#define NOTE_G7 3136 +#define NOTE_GS7 3322 +#define NOTE_A7 3520 +#define NOTE_AS7 3729 +#define NOTE_B7 3951 +#define NOTE_C8 4186 +#define NOTE_CS8 4435 +#define NOTE_D8 4699 +#define NOTE_DS8 4978 + + diff --git a/arduino-0018-linux-x64/examples/Digital/toneKeyboard/toneKeyboard.pde b/arduino-0018-linux-x64/examples/Digital/toneKeyboard/toneKeyboard.pde new file mode 100644 index 0000000..57279ef --- /dev/null +++ b/arduino-0018-linux-x64/examples/Digital/toneKeyboard/toneKeyboard.pde @@ -0,0 +1,49 @@ +/* + keyboard + + Plays a pitch that changes based on a changing analog input + + circuit: + * 3 force-sensing resistors from +5V to analog in 0 through 5 + * 3 10K resistors from analog in 0 through 5 to ground + * 8-ohm speaker on digital pin 8 + + created 21 Jan 2010 + by Tom Igoe + + http://arduino.cc/en/Tutorial/Tone3 + + */ + +#include "pitches.h" + +const int threshold = 10; // minimum reading of the sensors that generates a note + +// notes to play, corresponding to the 3 sensors: +int notes[] = { + NOTE_A4, NOTE_B4,NOTE_C3 }; + +void setup() { + +} + +void loop() { + for (int thisSensor = 0; thisSensor < 3; thisSensor++) { + // get a sensor reading: + int sensorReading = analogRead(thisSensor); + + // if the sensor is pressed hard enough: + if (sensorReading > threshold) { + // play the note corresponding to this sensor: + tone(8, notes[thisSensor], 20); + } + } + Serial.println(); +} + + + + + + + diff --git a/arduino-0018-linux-x64/examples/Digital/toneMelody/pitches.h b/arduino-0018-linux-x64/examples/Digital/toneMelody/pitches.h new file mode 100644 index 0000000..55c7d54 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Digital/toneMelody/pitches.h @@ -0,0 +1,95 @@ +/************************************************* + * Public Constants + *************************************************/ + +#define NOTE_B0 31 +#define NOTE_C1 33 +#define NOTE_CS1 35 +#define NOTE_D1 37 +#define NOTE_DS1 39 +#define NOTE_E1 41 +#define NOTE_F1 44 +#define NOTE_FS1 46 +#define NOTE_G1 49 +#define NOTE_GS1 52 +#define NOTE_A1 55 +#define NOTE_AS1 58 +#define NOTE_B1 62 +#define NOTE_C2 65 +#define NOTE_CS2 69 +#define NOTE_D2 73 +#define NOTE_DS2 78 +#define NOTE_E2 82 +#define NOTE_F2 87 +#define NOTE_FS2 93 +#define NOTE_G2 98 +#define NOTE_GS2 104 +#define NOTE_A2 110 +#define NOTE_AS2 117 +#define NOTE_B2 123 +#define NOTE_C3 131 +#define NOTE_CS3 139 +#define NOTE_D3 147 +#define NOTE_DS3 156 +#define NOTE_E3 165 +#define NOTE_F3 175 +#define NOTE_FS3 185 +#define NOTE_G3 196 +#define NOTE_GS3 208 +#define NOTE_A3 220 +#define NOTE_AS3 233 +#define NOTE_B3 247 +#define NOTE_C4 262 +#define NOTE_CS4 277 +#define NOTE_D4 294 +#define NOTE_DS4 311 +#define NOTE_E4 330 +#define NOTE_F4 349 +#define NOTE_FS4 370 +#define NOTE_G4 392 +#define NOTE_GS4 415 +#define NOTE_A4 440 +#define NOTE_AS4 466 +#define NOTE_B4 494 +#define NOTE_C5 523 +#define NOTE_CS5 554 +#define NOTE_D5 587 +#define NOTE_DS5 622 +#define NOTE_E5 659 +#define NOTE_F5 698 +#define NOTE_FS5 740 +#define NOTE_G5 784 +#define NOTE_GS5 831 +#define NOTE_A5 880 +#define NOTE_AS5 932 +#define NOTE_B5 988 +#define NOTE_C6 1047 +#define NOTE_CS6 1109 +#define NOTE_D6 1175 +#define NOTE_DS6 1245 +#define NOTE_E6 1319 +#define NOTE_F6 1397 +#define NOTE_FS6 1480 +#define NOTE_G6 1568 +#define NOTE_GS6 1661 +#define NOTE_A6 1760 +#define NOTE_AS6 1865 +#define NOTE_B6 1976 +#define NOTE_C7 2093 +#define NOTE_CS7 2217 +#define NOTE_D7 2349 +#define NOTE_DS7 2489 +#define NOTE_E7 2637 +#define NOTE_F7 2794 +#define NOTE_FS7 2960 +#define NOTE_G7 3136 +#define NOTE_GS7 3322 +#define NOTE_A7 3520 +#define NOTE_AS7 3729 +#define NOTE_B7 3951 +#define NOTE_C8 4186 +#define NOTE_CS8 4435 +#define NOTE_D8 4699 +#define NOTE_DS8 4978 + + diff --git a/arduino-0018-linux-x64/examples/Digital/toneMelody/toneMelody.pde b/arduino-0018-linux-x64/examples/Digital/toneMelody/toneMelody.pde new file mode 100644 index 0000000..b6e88d0 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Digital/toneMelody/toneMelody.pde @@ -0,0 +1,48 @@ +/* + Melody + + Plays a melody + + circuit: + * 8-ohm speaker on digital pin 8 + + created 21 Jan 2010 + by Tom Igoe + + http://arduino.cc/en/Tutorial/Tone + + */ + #include "pitches.h" + +// notes in the melody: +int melody[] = { + NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4}; + +// note durations: 4 = quarter note, 8 = eighth note, etc.: +int noteDurations[] = { + 4, 8, 8, 4,4,4,4,4 }; + +void setup() { + // iterate over the notes of the melody: + for (int thisNote = 0; thisNote < 8; thisNote++) { + + // to calculate the note duration, take one second + // divided by the note type. + //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. + int noteDuration = 1000/noteDurations[thisNote]; + tone(8, melody[thisNote],noteDuration); + + // to distinguish the notes, set a minimum time between them. + // the note's duration + 30% seems to work well: + int pauseBetweenNotes = noteDuration * 1.30; + delay(pauseBetweenNotes); + } +} + +void loop() { + // no need to repeat the melody. +} + + + + diff --git a/arduino-0018-linux-x64/examples/Digital/tonePitchFollower/tonePitchFollower.pde b/arduino-0018-linux-x64/examples/Digital/tonePitchFollower/tonePitchFollower.pde new file mode 100644 index 0000000..403b2c1 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Digital/tonePitchFollower/tonePitchFollower.pde @@ -0,0 +1,43 @@ +/* + Pitch follower + + Plays a pitch that changes based on a changing analog input + + circuit: + * 8-ohm speaker on digital pin 8 + * photoresistor on analog 0 to 5V + * 4.7K resistor on analog 0 to ground + + created 21 Jan 2010 + by Tom Igoe + + http://arduino.cc/en/Tutorial/Tone2 + + */ + + +void setup() { + // initialize serial communications (for debugging only): + Serial.begin(9600); +} + +void loop() { + // read the sensor: + int sensorReading = analogRead(0); + // print the sensor reading so you know its range + Serial.println(sensorReading); + // map the pitch to the range of the analog input. + // change the minimum and maximum input numbers below + // depending on the range your sensor's giving: + int thisPitch = map(sensorReading, 400, 1000, 100, 1000); + + // play the pitch: + tone(8, thisPitch, 10); + +} + + + + + + diff --git a/arduino-0018-linux-x64/examples/Display/RowColumnScanning/RowColumnScanning.pde b/arduino-0018-linux-x64/examples/Display/RowColumnScanning/RowColumnScanning.pde new file mode 100644 index 0000000..49f6ab7 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Display/RowColumnScanning/RowColumnScanning.pde @@ -0,0 +1,112 @@ +/* + Row-Column Scanning an 8x8 LED matrix with X-Y input + + This example controls an 8x8 LED matrix using two analog inputs + + created 27 May 2009 + modified 29 Jun 2009 + by Tom Igoe + + This example works for the Lumex LDM-24488NI Matrix. See + http://sigma.octopart.com/140413/datasheet/Lumex-LDM-24488NI.pdf + for the pin connections + + For other LED cathode column matrixes, you should only need to change + the pin numbers in the row[] and column[] arrays + + rows are the anodes + cols are the cathodes + --------- + + Pin numbers: + Matrix: + * Digital pins 2 through 13, + * analog pins 2 through 5 used as digital 16 through 19 + Potentiometers: + * center pins are attached to analog pins 0 and 1, respectively + * side pins attached to +5V and ground, respectively. + + http://www.arduino.cc/en/Tutorial/RowColumnScanning + + see also http://www.tigoe.net/pcomp/code/category/arduinowiring/514 for more + */ + + +// 2-dimensional array of row pin numbers: +const int row[8] = { + 2,7,19,5,13,18,12,16 }; + +// 2-dimensional array of column pin numbers: +const int col[8] = { + 6,11,10,3,17,4,8,9 }; + +// 2-dimensional array of pixels: +int pixels[8][8]; + +// cursor position: +int x = 5; +int y = 5; + +void setup() { + Serial.begin(9600); + // initialize the I/O pins as outputs: + + // iterate over the pins: + for (int thisPin = 0; thisPin < 8; thisPin++) { + // initialize the output pins: + pinMode(col[thisPin], OUTPUT); + pinMode(row[thisPin], OUTPUT); + // take the col pins (i.e. the cathodes) high to ensure that + // the LEDS are off: + digitalWrite(col[thisPin], HIGH); + } + + // initialize the pixel matrix: + for (int x = 0; x < 8; x++) { + for (int y = 0; y < 8; y++) { + pixels[x][y] = HIGH; + } + } +} + +void loop() { + // read input: + readSensors(); + + // draw the screen: + refreshScreen(); +} + +void readSensors() { + // turn off the last position: + pixels[x][y] = HIGH; + // read the sensors for X and Y values: + x = 7 - map(analogRead(0), 0, 1023, 0, 7); + y = map(analogRead(1), 0, 1023, 0, 7); + // set the new pixel position low so that the LED will turn on + // in the next screen refresh: + pixels[x][y] = LOW; + +} + +void refreshScreen() { + // iterate over the rows (anodes): + for (int thisRow = 0; thisRow < 8; thisRow++) { + // take the row pin (anode) high: + digitalWrite(row[thisRow], HIGH); + // iterate over the cols (cathodes): + for (int thisCol = 0; thisCol < 8; thisCol++) { + // get the state of the current pixel; + int thisPixel = pixels[thisRow][thisCol]; + // when the row is HIGH and the col is LOW, + // the LED where they meet turns on: + digitalWrite(col[thisCol], thisPixel); + // turn the pixel off: + if (thisPixel == LOW) { + digitalWrite(col[thisCol], HIGH); + } + } + // take the row pin low to turn off the whole row: + digitalWrite(row[thisRow], LOW); + } +} diff --git a/arduino-0018-linux-x64/examples/Display/barGraph/barGraph.pde b/arduino-0018-linux-x64/examples/Display/barGraph/barGraph.pde new file mode 100644 index 0000000..3e6664a --- /dev/null +++ b/arduino-0018-linux-x64/examples/Display/barGraph/barGraph.pde @@ -0,0 +1,58 @@ +/* + LED bar graph + + Turns on a series of LEDs based on the value of an analog sensor. + This is a simple way to make a bar graph display. Though this graph + uses 10 LEDs, you can use any number by changing the LED count + and the pins in the array. + + This method can be used to control any series of digital outputs that + depends on an analog input. + + The circuit: + * LEDs from pins 2 through 11 to ground + + created 26 Jun 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/BarGraph + */ + + +// these constants won't change: +const int analogPin = 0; // the pin that the potentiometer is attached to +const int ledCount = 10; // the number of LEDs in the bar graph + +int ledPins[] = { + 2, 3, 4, 5, 6, 7,8,9,10,11 }; // an array of pin numbers to which LEDs are attached + + +void setup() { + // loop over the pin array and set them all to output: + for (int thisLed = 0; thisLed < ledCount; thisLed++) { + pinMode(ledPins[thisLed], OUTPUT); + } +} + +void loop() { + // read the potentiometer: + int sensorReading = analogRead(analogPin); + // map the result to a range from 0 to the number of LEDs: + int ledLevel = map(sensorReading, 0, 1023, 0, ledCount); + + // loop over the LED array: + for (int thisLed = 0; thisLed < ledCount; thisLed++) { + // if the array element's index is less than ledLevel, + // turn the pin for this element on: + if (thisLed < ledLevel) { + digitalWrite(ledPins[thisLed], HIGH); + } + // turn off all pins higher than the ledLevel: + else { + digitalWrite(ledPins[thisLed], LOW); + } + } +} + + + diff --git a/arduino-0018-linux-x64/examples/Sensors/ADXL3xx/ADXL3xx.pde b/arduino-0018-linux-x64/examples/Sensors/ADXL3xx/ADXL3xx.pde new file mode 100644 index 0000000..5609c42 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Sensors/ADXL3xx/ADXL3xx.pde @@ -0,0 +1,62 @@ + +/* + ADXL3xx + + Reads an Analog Devices ADXL3xx accelerometer and communicates the + acceleration to the computer. The pins used are designed to be easily + compatible with the breakout boards from Sparkfun, available from: + http://www.sparkfun.com/commerce/categories.php?c=80 + + http://www.arduino.cc/en/Tutorial/ADXL3xx + + The circuit: + analog 0: accelerometer self test + analog 1: z-axis + analog 2: y-axis + analog 3: x-axis + analog 4: ground + analog 5: vcc + + created 2 Jul 2008 + by David A. Mellis + modified 26 Jun 2009 + by Tom Igoe + +*/ + +// these constants describe the pins. They won't change: +const int groundpin = 18; // analog input pin 4 -- ground +const int powerpin = 19; // analog input pin 5 -- voltage +const int xpin = 3; // x-axis of the accelerometer +const int ypin = 2; // y-axis +const int zpin = 1; // z-axis (only on 3-axis models) + +void setup() +{ + // initialize the serial communications: + Serial.begin(9600); + + // Provide ground and power by using the analog inputs as normal + // digital pins. This makes it possible to directly connect the + // breakout board to the Arduino. If you use the normal 5V and + // GND pins on the Arduino, you can remove these lines. + pinMode(groundpin, OUTPUT); + pinMode(powerpin, OUTPUT); + digitalWrite(groundpin, LOW); + digitalWrite(powerpin, HIGH); +} + +void loop() +{ + // print the sensor values: + Serial.print(analogRead(xpin)); + // print a tab between values: + Serial.print("\t"); + Serial.print(analogRead(ypin)); + // print a tab between values: + Serial.print("\t"); + Serial.print(analogRead(zpin)); + Serial.println(); + // delay before next reading: + delay(100); +} diff --git a/arduino-0018-linux-x64/examples/Sensors/Knock/Knock.pde b/arduino-0018-linux-x64/examples/Sensors/Knock/Knock.pde new file mode 100644 index 0000000..05e4632 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Sensors/Knock/Knock.pde @@ -0,0 +1,53 @@ +/* Knock Sensor + + This sketch reads a piezo element to detect a knocking sound. + It reads an analog pin and compares the result to a set threshold. + If the result is greater than the threshold, it writes + "knock" to the serial port, and toggles the LED on pin 13. + + The circuit: + * + connection of the piezo attached to analog in 0 + * - connection of the piezo attached to ground + * 1-megohm resistor attached from analog in 0 to ground + + http://www.arduino.cc/en/Tutorial/Knock + + created 25 Mar 2007 + by David Cuartielles + modified 30 Jun 2009 + by Tom Igoe + + */ + + +// these constants won't change: +const int ledPin = 13; // led connected to digital pin 13 +const int knockSensor = 0; // the piezo is connected to analog pin 0 +const int threshold = 100; // threshold value to decide when the detected sound is a knock or not + + +// these variables will change: +int sensorReading = 0; // variable to store the value read from the sensor pin +int ledState = LOW; // variable used to store the last LED status, to toggle the light + +void setup() { + pinMode(ledPin, OUTPUT); // declare the ledPin as as OUTPUT + Serial.begin(9600); // use the serial port +} + +void loop() { + // read the sensor and store it in the variable sensorReading: + sensorReading = analogRead(knockSensor); + + // if the sensor reading is greater than the threshold: + if (sensorReading >= threshold) { + // toggle the status of the ledPin: + ledState = !ledState; + // update the LED pin itself: + digitalWrite(ledPin, ledState); + // send the string "Knock!" back to the computer, followed by newline + Serial.println("Knock!"); + } + delay(100); // delay to avoid overloading the serial port buffer +} + diff --git a/arduino-0018-linux-x64/examples/Sensors/Memsic2125/Memsic2125.pde b/arduino-0018-linux-x64/examples/Sensors/Memsic2125/Memsic2125.pde new file mode 100644 index 0000000..a69e31d --- /dev/null +++ b/arduino-0018-linux-x64/examples/Sensors/Memsic2125/Memsic2125.pde @@ -0,0 +1,61 @@ +/* + Memsic2125 + + Read the Memsic 2125 two-axis accelerometer. Converts the + pulses output by the 2125 into milli-g's (1/1000 of earth's + gravity) and prints them over the serial connection to the + computer. + + The circuit: + * X output of accelerometer to digital pin 2 + * Y output of accelerometer to digital pin 3 + * +V of accelerometer to +5V + * GND of accelerometer to ground + + http://www.arduino.cc/en/Tutorial/Memsic2125 + + created 6 Nov 2008 + by David A. Mellis + modified 30 Jun 2009 + by Tom Igoe + + */ + +// these constants won't change: +const int xPin = 2; // X output of the accelerometer +const int yPin = 3; // Y output of the accelerometer + +void setup() { + // initialize serial communications: + Serial.begin(9600); + // initialize the pins connected to the accelerometer + // as inputs: + pinMode(xPin, INPUT); + pinMode(yPin, INPUT); +} + +void loop() { + // variables to read the pulse widths: + int pulseX, pulseY; + // variables to contain the resulting accelerations + int accelerationX, accelerationY; + + // read pulse from x- and y-axes: + pulseX = pulseIn(xPin,HIGH); + pulseY = pulseIn(yPin,HIGH); + + // convert the pulse width into acceleration + // accelerationX and accelerationY are in milli-g's: + // earth's gravity is 1000 milli-g's, or 1g. + accelerationX = ((pulseX / 10) - 500) * 8; + accelerationY = ((pulseY / 10) - 500) * 8; + + // print the acceleration + Serial.print(accelerationX); + // print a tab character: + Serial.print("\t"); + Serial.print(accelerationY); + Serial.println(); + + delay(100); +} diff --git a/arduino-0018-linux-x64/examples/Sensors/Ping/Ping.pde b/arduino-0018-linux-x64/examples/Sensors/Ping/Ping.pde new file mode 100644 index 0000000..3e89744 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Sensors/Ping/Ping.pde @@ -0,0 +1,82 @@ +/* Ping))) Sensor + + This sketch reads a PING))) ultrasonic rangefinder and returns the + distance to the closest object in range. To do this, it sends a pulse + to the sensor to initiate a reading, then listens for a pulse + to return. The length of the returning pulse is proportional to + the distance of the object from the sensor. + + The circuit: + * +V connection of the PING))) attached to +5V + * GND connection of the PING))) attached to ground + * SIG connection of the PING))) attached to digital pin 7 + + http://www.arduino.cc/en/Tutorial/Ping + + created 3 Nov 2008 + by David A. Mellis + modified 30 Jun 2009 + by Tom Igoe + + */ + +// this constant won't change. It's the pin number +// of the sensor's output: +const int pingPin = 7; + +void setup() { + // initialize serial communication: + Serial.begin(9600); +} + +void loop() +{ + // establish variables for duration of the ping, + // and the distance result in inches and centimeters: + long duration, inches, cm; + + // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. + // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: + pinMode(pingPin, OUTPUT); + digitalWrite(pingPin, LOW); + delayMicroseconds(2); + digitalWrite(pingPin, HIGH); + delayMicroseconds(5); + digitalWrite(pingPin, LOW); + + // The same pin is used to read the signal from the PING))): a HIGH + // pulse whose duration is the time (in microseconds) from the sending + // of the ping to the reception of its echo off of an object. + pinMode(pingPin, INPUT); + duration = pulseIn(pingPin, HIGH); + + // convert the time into a distance + inches = microsecondsToInches(duration); + cm = microsecondsToCentimeters(duration); + + Serial.print(inches); + Serial.print("in, "); + Serial.print(cm); + Serial.print("cm"); + Serial.println(); + + delay(100); +} + +long microsecondsToInches(long microseconds) +{ + // According to Parallax's datasheet for the PING))), there are + // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per + // second). This gives the distance travelled by the ping, outbound + // and return, so we divide by 2 to get the distance of the obstacle. + // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf + return microseconds / 74 / 2; +} + +long microsecondsToCentimeters(long microseconds) +{ + // The speed of sound is 340 m/s or 29 microseconds per centimeter. + // The ping travels out and back, so to find the distance of the + // object we take half of the distance travelled. + return microseconds / 29 / 2; +} diff --git a/arduino-0018-linux-x64/examples/Stubs/AnalogReadSerial/AnalogReadSerial.pde b/arduino-0018-linux-x64/examples/Stubs/AnalogReadSerial/AnalogReadSerial.pde new file mode 100644 index 0000000..f0ce8f4 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Stubs/AnalogReadSerial/AnalogReadSerial.pde @@ -0,0 +1,12 @@ + +void setup() { + Serial.begin(9600); +} + +void loop() { + int sensorValue = analogRead(0); + Serial.println(sensorValue, DEC); +} + + + diff --git a/arduino-0018-linux-x64/examples/Stubs/AnalogReadWrite/AnalogReadWrite.pde b/arduino-0018-linux-x64/examples/Stubs/AnalogReadWrite/AnalogReadWrite.pde new file mode 100644 index 0000000..3dc8052 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Stubs/AnalogReadWrite/AnalogReadWrite.pde @@ -0,0 +1,13 @@ + +void setup() { + pinMode(6, OUTPUT); +} + +void loop() { + int sensorValue = analogRead(2); + int ledFadeValue = map(sensorValue, 0, 1023, 0, 255); + analogWrite(6, ledFadeValue); +} + + + diff --git a/arduino-0018-linux-x64/examples/Stubs/BareMinumum/BareMinumum.pde b/arduino-0018-linux-x64/examples/Stubs/BareMinumum/BareMinumum.pde new file mode 100644 index 0000000..b1a29e5 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Stubs/BareMinumum/BareMinumum.pde @@ -0,0 +1,9 @@ +void setup() { + +} + +void loop() { + +} + + diff --git a/arduino-0018-linux-x64/examples/Stubs/DigitalReadSerial/DigitalReadSerial.pde b/arduino-0018-linux-x64/examples/Stubs/DigitalReadSerial/DigitalReadSerial.pde new file mode 100644 index 0000000..369b9a4 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Stubs/DigitalReadSerial/DigitalReadSerial.pde @@ -0,0 +1,13 @@ + +void setup() { + Serial.begin(9600); + pinMode(2, INPUT); +} + +void loop() { + int sensorValue = digitalRead(2); + Serial.println(sensorValue, DEC); +} + + + diff --git a/arduino-0018-linux-x64/examples/Stubs/DigitalReadWrite/DigitalReadWrite.pde b/arduino-0018-linux-x64/examples/Stubs/DigitalReadWrite/DigitalReadWrite.pde new file mode 100644 index 0000000..f4ca3c5 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Stubs/DigitalReadWrite/DigitalReadWrite.pde @@ -0,0 +1,12 @@ + +void setup() { + pinMode(13, OUTPUT); +} + +void loop() { + int switchValue = digitalRead(2); + digitalWrite(13, switchValue); +} + + + diff --git a/arduino-0018-linux-x64/examples/Stubs/HelloWorld/HelloWorld.pde b/arduino-0018-linux-x64/examples/Stubs/HelloWorld/HelloWorld.pde new file mode 100644 index 0000000..628a9f3 --- /dev/null +++ b/arduino-0018-linux-x64/examples/Stubs/HelloWorld/HelloWorld.pde @@ -0,0 +1,9 @@ +void setup() { + Serial.begin(9600); +} + +void loop() { + Serial.println("Hello World!"); +} + + diff --git a/arduino-0018-linux-x64/hardware/arduino/boards.txt b/arduino-0018-linux-x64/hardware/arduino/boards.txt new file mode 100644 index 0000000..4ae4ac9 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/boards.txt @@ -0,0 +1,220 @@ +############################################################## + +atmega328.name=Arduino Duemilanove or Nano w/ ATmega328 + +atmega328.upload.protocol=stk500 +atmega328.upload.maximum_size=30720 +atmega328.upload.speed=57600 + +atmega328.bootloader.low_fuses=0xFF +atmega328.bootloader.high_fuses=0xDA +atmega328.bootloader.extended_fuses=0x05 +atmega328.bootloader.path=atmega +atmega328.bootloader.file=ATmegaBOOT_168_atmega328.hex +atmega328.bootloader.unlock_bits=0x3F +atmega328.bootloader.lock_bits=0x0F + +atmega328.build.mcu=atmega328p +atmega328.build.f_cpu=16000000L +atmega328.build.core=arduino + +############################################################## + +diecimila.name=Arduino Diecimila, Duemilanove, or Nano w/ ATmega168 + +diecimila.upload.protocol=stk500 +diecimila.upload.maximum_size=14336 +diecimila.upload.speed=19200 + +diecimila.bootloader.low_fuses=0xff +diecimila.bootloader.high_fuses=0xdd +diecimila.bootloader.extended_fuses=0x00 +diecimila.bootloader.path=atmega +diecimila.bootloader.file=ATmegaBOOT_168_diecimila.hex +diecimila.bootloader.unlock_bits=0x3F +diecimila.bootloader.lock_bits=0x0F + +diecimila.build.mcu=atmega168 +diecimila.build.f_cpu=16000000L +diecimila.build.core=arduino + +############################################################## + +mega.name=Arduino Mega + +mega.upload.protocol=stk500 +mega.upload.maximum_size=126976 +mega.upload.speed=57600 + +mega.bootloader.low_fuses=0xFF +mega.bootloader.high_fuses=0xDA +mega.bootloader.extended_fuses=0xF5 +mega.bootloader.path=atmega +mega.bootloader.file=ATmegaBOOT_168_atmega1280.hex +mega.bootloader.unlock_bits=0x3F +mega.bootloader.lock_bits=0x0F + +mega.build.mcu=atmega1280 +mega.build.f_cpu=16000000L +mega.build.core=arduino + +############################################################## + +mini.name=Arduino Mini + +mini.upload.protocol=stk500 +mini.upload.maximum_size=14336 +mini.upload.speed=19200 + +mini.bootloader.low_fuses=0xff +mini.bootloader.high_fuses=0xdd +mini.bootloader.extended_fuses=0x00 +mini.bootloader.path=atmega +mini.bootloader.file=ATmegaBOOT_168_ng.hex +mini.bootloader.unlock_bits=0x3F +mini.bootloader.lock_bits=0x0F + +mini.build.mcu=atmega168 +mini.build.f_cpu=16000000L +mini.build.core=arduino + +############################################################## + +bt.name=Arduino BT + +bt.upload.protocol=stk500 +bt.upload.maximum_size=14336 +bt.upload.speed=19200 +bt.upload.disable_flushing=true + +bt.bootloader.low_fuses=0xff +bt.bootloader.high_fuses=0xdd +bt.bootloader.extended_fuses=0x00 +bt.bootloader.path=bt +bt.bootloader.file=ATmegaBOOT_168.hex +bt.bootloader.unlock_bits=0x3F +bt.bootloader.lock_bits=0x0F + +bt.build.mcu=atmega168 +bt.build.f_cpu=16000000L +bt.build.core=arduino + +############################################################## + +lilypad328.name=LilyPad Arduino w/ ATmega328 + +lilypad328.upload.protocol=stk500 +lilypad328.upload.maximum_size=30720 +lilypad328.upload.speed=57600 + +lilypad328.bootloader.low_fuses=0xFF +lilypad328.bootloader.high_fuses=0xDA +lilypad328.bootloader.extended_fuses=0x05 +lilypad328.bootloader.path=atmega +lilypad328.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex +lilypad328.bootloader.unlock_bits=0x3F +lilypad328.bootloader.lock_bits=0x0F + +lilypad328.build.mcu=atmega328p +lilypad328.build.f_cpu=8000000L +lilypad328.build.core=arduino + +############################################################## + +lilypad.name=LilyPad Arduino w/ ATmega168 + +lilypad.upload.protocol=stk500 +lilypad.upload.maximum_size=14336 +lilypad.upload.speed=19200 + +lilypad.bootloader.low_fuses=0xe2 +lilypad.bootloader.high_fuses=0xdd +lilypad.bootloader.extended_fuses=0x00 +lilypad.bootloader.path=lilypad +lilypad.bootloader.file=LilyPadBOOT_168.hex +lilypad.bootloader.unlock_bits=0x3F +lilypad.bootloader.lock_bits=0x0F + +lilypad.build.mcu=atmega168 +lilypad.build.f_cpu=8000000L +lilypad.build.core=arduino + +############################################################## + +pro328.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328 + +pro328.upload.protocol=stk500 +pro328.upload.maximum_size=30720 +pro328.upload.speed=57600 + +pro328.bootloader.low_fuses=0xFF +pro328.bootloader.high_fuses=0xDA +pro328.bootloader.extended_fuses=0x05 +pro328.bootloader.path=atmega +pro328.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex +pro328.bootloader.unlock_bits=0x3F +pro328.bootloader.lock_bits=0x0F + +pro328.build.mcu=atmega328p +pro328.build.f_cpu=8000000L +pro328.build.core=arduino + +############################################################## + +pro.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168 + +pro.upload.protocol=stk500 +pro.upload.maximum_size=14336 +pro.upload.speed=19200 + +pro.bootloader.low_fuses=0xc6 +pro.bootloader.high_fuses=0xdd +pro.bootloader.extended_fuses=0x00 +pro.bootloader.path=atmega +pro.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex +pro.bootloader.unlock_bits=0x3F +pro.bootloader.lock_bits=0x0F + +pro.build.mcu=atmega168 +pro.build.f_cpu=8000000L +pro.build.core=arduino + +############################################################## + +atmega168.name=Arduino NG or older w/ ATmega168 + +atmega168.upload.protocol=stk500 +atmega168.upload.maximum_size=14336 +atmega168.upload.speed=19200 + +atmega168.bootloader.low_fuses=0xff +atmega168.bootloader.high_fuses=0xdd +atmega168.bootloader.extended_fuses=0x00 +atmega168.bootloader.path=atmega +atmega168.bootloader.file=ATmegaBOOT_168_ng.hex +atmega168.bootloader.unlock_bits=0x3F +atmega168.bootloader.lock_bits=0x0F + +atmega168.build.mcu=atmega168 +atmega168.build.f_cpu=16000000L +atmega168.build.core=arduino + +############################################################## + +atmega8.name=Arduino NG or older w/ ATmega8 + +atmega8.upload.protocol=stk500 +atmega8.upload.maximum_size=7168 +atmega8.upload.speed=19200 + +atmega8.bootloader.low_fuses=0xdf +atmega8.bootloader.high_fuses=0xca +atmega8.bootloader.path=atmega8 +atmega8.bootloader.file=ATmegaBOOT.hex +atmega8.bootloader.unlock_bits=0x3F +atmega8.bootloader.lock_bits=0x0F + +atmega8.build.mcu=atmega8 +atmega8.build.f_cpu=16000000L +atmega8.build.core=arduino + diff --git a/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c new file mode 100755 index 0000000..2b9fefa --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c @@ -0,0 +1,1054 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega8, ATmega128 and ATmega168 */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* */ +/* 20090308: integrated Mega changes into main bootloader */ +/* source by D. Mellis */ +/* 20080930: hacked for Arduino Mega (with the 1280 */ +/* processor, backwards compatible) */ +/* by D. Cuartielles */ +/* 20070626: hacked for Arduino Diecimila (which auto- */ +/* resets when a USB connection is made to it) */ +/* by D. Mellis */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m168 */ +/**********************************************************/ + +/* $Id$ */ + + +/* some includes */ +#include +#include +#include +#include +#include +#include + +/* the current avr-libc eeprom functions do not support the ATmega168 */ +/* own eeprom write/read functions are used instead */ +#if !defined(__AVR_ATmega168__) || !defined(__AVR_ATmega328P__) +#include +#endif + +/* Use the F_CPU defined in Makefile */ + +/* 20060803: hacked by DojoCorp */ +/* 20070626: hacked by David A. Mellis to decrease waiting time for auto-reset */ +/* set the waiting time for the bootloader */ +/* get this from the Makefile instead */ +/* #define MAX_TIME_COUNT (F_CPU>>4) */ + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20060803: hacked by DojoCorp */ +//#define BAUD_RATE 115200 +#ifndef BAUD_RATE +#define BAUD_RATE 19200 +#endif + + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ +/* ATmega1280 has four UARTS, but for Arduino Mega, we will only use RXD0 to get code */ +/* BL0... means UART0, BL1... means UART1 */ +#ifdef __AVR_ATmega128__ +#define BL_DDR DDRF +#define BL_PORT PORTF +#define BL_PIN PINF +#define BL0 PINF7 +#define BL1 PINF6 +#elif defined __AVR_ATmega1280__ +/* we just don't do anything for the MEGA and enter bootloader on reset anyway*/ +#else +/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ +#define BL_DDR DDRD +#define BL_PORT PORTD +#define BL_PIN PIND +#define BL PIND6 +#endif + + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#if defined __AVR_ATmega128__ || defined __AVR_ATmega1280__ +/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128, Arduino Mega) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB7 +#else +/* Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, and Duomilanuove */ +/* other boards like e.g. Crumb8, Crumb168 are using PB2 */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB5 +#endif + + +/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) +#define MONITOR 1 +#endif + + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( + +#if defined __AVR_ATmega1280__ +#define SIG2 0x97 +#define SIG3 0x03 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega1281__ +#define SIG2 0x97 +#define SIG3 0x04 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega128__ +#define SIG2 0x97 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega64__ +#define SIG2 0x96 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega32__ +#define SIG2 0x95 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega16__ +#define SIG2 0x94 +#define SIG3 0x03 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8__ +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega88__ +#define SIG2 0x93 +#define SIG3 0x0a +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega168__ +#define SIG2 0x94 +#define SIG3 0x06 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega328P__ +#define SIG2 0x95 +#define SIG3 0x0F +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega162__ +#define SIG2 0x94 +#define SIG3 0x04 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega163__ +#define SIG2 0x94 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega169__ +#define SIG2 0x94 +#define SIG3 0x05 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8515__ +#define SIG2 0x93 +#define SIG3 0x06 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega8535__ +#define SIG2 0x93 +#define SIG3 0x08 +#define PAGE_SIZE 0x20U //32 words +#endif + + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union { + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union { + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct { + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +uint8_t address_high; + +uint8_t pagesz=0x80; + +uint8_t i; +uint8_t bootuart = 0; + +uint8_t error_count = 0; + +void (*app_start)(void) = 0x0000; + + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + +#ifdef WATCHDOG_MODS + ch = MCUSR; + MCUSR = 0; + + WDTCSR |= _BV(WDCE) | _BV(WDE); + WDTCSR = 0; + + // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. + if (! (ch & _BV(EXTRF))) // if its a not an external reset... + app_start(); // skip bootloader +#else + asm volatile("nop\n\t"); +#endif + + /* set pin direction for bootloader pin and enable pullup */ + /* for ATmega128, two pins need to be initialized */ +#ifdef __AVR_ATmega128__ + BL_DDR &= ~_BV(BL0); + BL_DDR &= ~_BV(BL1); + BL_PORT |= _BV(BL0); + BL_PORT |= _BV(BL1); +#else + /* We run the bootloader regardless of the state of this pin. Thus, don't + put it in a different state than the other pins. --DAM, 070709 + This also applies to Arduino Mega -- DC, 080930 + BL_DDR &= ~_BV(BL); + BL_PORT |= _BV(BL); + */ +#endif + + +#ifdef __AVR_ATmega128__ + /* check which UART should be used for booting */ + if(bit_is_clear(BL_PIN, BL0)) { + bootuart = 1; + } + else if(bit_is_clear(BL_PIN, BL1)) { + bootuart = 2; + } +#endif + +#if defined __AVR_ATmega1280__ + /* the mega1280 chip has four serial ports ... we could eventually use any of them, or not? */ + /* however, we don't wanna confuse people, to avoid making a mess, we will stick to RXD0, TXD0 */ + bootuart = 1; +#endif + + /* check if flash is programmed already, if not start bootloader anyway */ + if(pgm_read_byte_near(0x0000) != 0xFF) { + +#ifdef __AVR_ATmega128__ + /* no UART was selected, start application */ + if(!bootuart) { + app_start(); + } +#else + /* check if bootloader pin is set low */ + /* we don't start this part neither for the m8, nor m168 */ + //if(bit_is_set(BL_PIN, BL)) { + // app_start(); + // } +#endif + } + +#ifdef __AVR_ATmega128__ + /* no bootuart was selected, default to uart 0 */ + if(!bootuart) { + bootuart = 1; + } +#endif + + + /* initialize UART(s) depending on CPU defined */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + if(bootuart == 1) { + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0A = 0x00; + UCSR0C = 0x06; + UCSR0B = _BV(TXEN0)|_BV(RXEN0); + } + if(bootuart == 2) { + UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR1A = 0x00; + UCSR1C = 0x06; + UCSR1B = _BV(TXEN1)|_BV(RXEN1); + } +#elif defined __AVR_ATmega163__ + UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSRA = 0x00; + UCSRB = _BV(TXEN)|_BV(RXEN); +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + +#ifdef DOUBLE_SPEED + UCSR0A = (1<> 8; +#else + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; +#endif + + UCSR0B = (1<>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + UCSRA = 0x00; + UCSRC = 0x06; + UCSRB = _BV(TXEN)|_BV(RXEN); +#endif + +#if defined __AVR_ATmega1280__ + /* Enable internal pull-up resistor on pin D0 (RX), in order + to supress line noise that prevents the bootloader from + timing out (DAM: 20070509) */ + /* feature added to the Arduino Mega --DC: 080930 */ + DDRE &= ~_BV(PINE0); + PORTE |= _BV(PINE0); +#endif + + + /* set LED pin as output */ + LED_DDR |= _BV(LED); + + + /* flash onboard LED to signal entering of bootloader */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + // 4x for UART0, 5x for UART1 + flash_led(NUM_LED_FLASHES + bootuart); +#else + flash_led(NUM_LED_FLASHES); +#endif + + /* 20050803: by DojoCorp, this is one of the parts provoking the + system to stop listening, cancelled from the original */ + //putch('\0'); + + /* forever loop */ + for (;;) { + + /* get character from UART */ + ch = getch(); + + /* A bunch of if...else if... gives smaller code than switch...case ! */ + + /* Hello is anyone home ? */ + if(ch=='0') { + nothing_response(); + } + + + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') { + if (getch() == ' ') { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') { + getNch(5); + nothing_response(); + } + + + /* P: Enter programming mode */ + /* R: Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='P' || ch=='R') { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') { + nothing_response(); +#ifdef WATCHDOG_MODS + // autoreset via watchdog (sneaky!) + WDTCSR = _BV(WDE); + while (1); // 16 ms +#endif + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') { + if (getch() == 0x30) { + getch(); + ch = getch(); + getch(); + if (ch == 0) { + byte_response(SIG1); + } else if (ch == 1) { + byte_response(SIG2); + } else { + byte_response(SIG3); + } + } else { + getNch(3); + byte_response(0x00); + } + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + else address_high = 0x00; +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) + RAMPZ = address_high; +#endif + address.word = address.word << 1; //address * 2 -> byte location + /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ + if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) + while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete +#else + while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete +#endif + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in bytes) + "lds r31,address+1 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "wait_spm1: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "wait_spm2: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm2 \n\t" + + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + + "wait_spm3: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "wait_spm4: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm4 \n\t" +#ifdef __AVR_ATmega163__ + "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write +#endif + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" + "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) +#endif + "wait_spm5: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register +#if defined __AVR_ATmega168__ || __AVR_ATmega328P__ || __AVR_ATmega128__ || __AVR_ATmega1280__ || __AVR_ATmega1281__ + : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#else + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#endif + ); + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* Read memory block mode, length is big endian. */ + else if(ch=='t') { + length.byte[1] = getch(); + length.byte[0] = getch(); +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME + else flags.rampz = 0; +#endif + address.word = address.word << 1; // address * 2 -> byte location + if (getch() == 'E') flags.eeprom = 1; + else flags.eeprom = 0; + if (getch() == ' ') { // Command terminator + putch(0x14); + for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay + if (flags.eeprom) { // Byte access EEPROM read +#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + while(EECR & (1<= 'a') { + return (a - 'a' + 0x0a); + } else if(a >= '0') { + return(a - '0'); + } + return a; +} + + +char gethex(void) { + return (gethexnib() << 4) + gethexnib(); +} + + +void puthex(char ch) { + char ah; + + ah = ch >> 4; + if(ah >= 0x0a) { + ah = ah - 0x0a + 'a'; + } else { + ah += '0'; + } + + ch &= 0x0f; + if(ch >= 0x0a) { + ch = ch - 0x0a + 'a'; + } else { + ch += '0'; + } + + putch(ah); + putch(ch); +} + + +void putch(char ch) +{ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + if(bootuart == 1) { + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; + } + else if (bootuart == 2) { + while (!(UCSR1A & _BV(UDRE1))); + UDR1 = ch; + } +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +#else + /* m8,16,32,169,8515,8535,163 */ + while (!(UCSRA & _BV(UDRE))); + UDR = ch; +#endif +} + + +char getch(void) +{ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + uint32_t count = 0; + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))) { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + + return UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))) { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + + return UDR1; + } + return 0; +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + uint32_t count = 0; + while(!(UCSR0A & _BV(RXC0))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR0; +#else + /* m8,16,32,169,8515,8535,163 */ + uint32_t count = 0; + while(!(UCSRA & _BV(RXC))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR; +#endif +} + + +void getNch(uint8_t count) +{ + while(count--) { +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))); + UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))); + UDR1; + } +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + getch(); +#else + /* m8,16,32,169,8515,8535,163 */ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + //while(!(UCSRA & _BV(RXC))); + //UDR; + getch(); // need to handle time out +#endif + } +} + + +void byte_response(uint8_t val) +{ + if (getch() == ' ') { + putch(0x14); + putch(val); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } +} + + +void nothing_response(void) +{ + if (getch() == ' ') { + putch(0x14); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } +} + +void flash_led(uint8_t count) +{ + while (count--) { + LED_PORT |= _BV(LED); + _delay_ms(100); + LED_PORT &= ~_BV(LED); + _delay_ms(100); + } +} + + +/* end of file ATmegaBOOT.c */ diff --git a/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex new file mode 100644 index 0000000..f16e877 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex @@ -0,0 +1,245 @@ +:020000021000EC +:10F000000C9472F80C9492F80C9492F80C9492F878 +:10F010000C9492F80C9492F80C9492F80C9492F848 +:10F020000C9492F80C9492F80C9492F80C9492F838 +:10F030000C9492F80C9492F80C9492F80C9492F828 +:10F040000C9492F80C9492F80C9492F80C9492F818 +:10F050000C9492F80C9492F80C9492F80C9492F808 +:10F060000C9492F80C9492F80C9492F80C9492F8F8 +:10F070000C9492F80C9492F80C9492F80C9492F8E8 +:10F080000C9492F80C9492F80C9492F80C9492F8D8 +:10F090000C9492F80C9492F80C9492F80C9492F8C8 +:10F0A0000C9492F80C9492F80C9492F80C9492F8B8 +:10F0B0000C9492F80C9492F80C9492F80C9492F8A8 +:10F0C0000C9492F80C9492F80C9492F80C9492F898 +:10F0D0000C9492F80C9492F80C9492F80C9492F888 +:10F0E0000C9492F811241FBECFEFD1E2DEBFCDBF4A +:10F0F00012E0A0E0B2E0EEEDFEEF01E00BBF02C0D7 +:10F1000007900D92A833B107D9F71BBE13E0A8E30F +:10F11000B2E001C01D92A334B107E1F70E9412FAD8 +:10F120000C946DFF0C9400F8982F959595959595F6 +:10F130009595905D8F708A301CF1282F295A809107 +:10F140003802813019F0823071F008958091C0004A +:10F1500085FFFCCF9093C6008091C00085FFFCCF57 +:10F160002093C60008958091C80085FFFCCF90933E +:10F17000CE008091C80085FFFCCF2093CE0008957B +:10F18000282F205DDCCF982F80913802813019F034 +:10F19000823041F008958091C00085FFFCCF9093AC +:10F1A000C60008958091C80085FFFCCF9093CE00E3 +:10F1B0000895EF92FF920F931F9380913802813050 +:10F1C00069F1823031F080E01F910F91FF90EF9054 +:10F1D0000895EE24FF2487018091C80087FD17C0A1 +:10F1E0000894E11CF11C011D111D81E4E81682E464 +:10F1F000F8068FE0080780E0180770F3E0913A0204 +:10F20000F0913B0209958091C80087FFE9CF80917A +:10F21000CE001F910F91FF90EF900895EE24FF24F0 +:10F2200087018091C00087FD17C00894E11CF11C84 +:10F23000011D111D81E4E81682E4F8068FE008073D +:10F2400080E0180770F3E0913A02F0913B020995D3 +:10F250008091C00087FFE9CF8091C6001F910F9178 +:10F26000FF90EF9008950E94D9F8982F809138026E +:10F27000813049F0823091F091366CF490330CF08B +:10F280009053892F08958091C00085FFFCCF909303 +:10F29000C60091369CF39755892F08958091C80038 +:10F2A00085FFFCCF9093CE00E7CF1F930E9433F9E8 +:10F2B000182F0E9433F91295107F810F1F91089526 +:10F2C000982F20913802992339F0213031F02230E3 +:10F2D00061F091509923C9F708958091C00087FF8C +:10F2E000FCCF8091C6009150F5CF8091C80087FF78 +:10F2F000FCCF8091CE009150EDCF1F93182F0E942C +:10F30000D9F8803249F0809139028F5F80933902B9 +:10F31000853091F11F910895809138028130B9F0C4 +:10F320008230C1F78091C80085FFFCCF84E18093D3 +:10F33000CE008091C80085FFFCCF1093CE00809155 +:10F34000C80085FFFCCF80E18093CE00E3CF8091A1 +:10F35000C00085FFFCCF84E18093C6008091C0008F +:10F3600085FFFCCF1093C6008091C00085FFFCCFC5 +:10F3700080E18093C600CECFE0913A02F0913B024B +:10F3800009951F9108950E94D9F8803241F080912B +:10F3900039028F5F80933902853029F10895809179 +:10F3A0003802813089F08230C9F78091C80085FF2A +:10F3B000FCCF84E18093CE008091C80085FFFCCF14 +:10F3C00080E18093CE0008958091C00085FFFCCF3E +:10F3D00084E18093C6008091C00085FFFCCF80E16E +:10F3E0008093C6000895E0913A02F0913B0209959E +:10F3F000089540E951E08823A1F02F9A28EE33E0E8 +:10F40000FA013197F1F721503040D1F72F9828EECB +:10F4100033E0FA013197F1F721503040D1F78150B4 +:10F4200061F708952F923F924F925F926F927F9271 +:10F430008F929F92AF92BF92CF92DF92EF92FF9204 +:10F440000F931F93CF93DF93000081E080933802E6 +:10F4500080E18093C4001092C5001092C00086E045 +:10F460008093C20088E18093C1006898709A279ABF +:10F4700081E00E94F9F9E4E1EE2E7EE1D72E67E902 +:10F48000C62E53E0B52E40E1A42E9924939431E486 +:10F49000832E26E5722E92E5692E80E2582E09E42D +:10F4A000402E13E5312EB0E52B2E0E94D9F8803383 +:10F4B000C9F1813309F452C0803409F4C8C08134E1 +:10F4C00009F4EAC0823489F1853409F4CAC0803570 +:10F4D00049F1823539F1813529F1853509F4ECC0DE +:10F4E000863509F409C1843609F428C1843709F442 +:10F4F000ABC1853709F473C2863709F4D9C08132AC +:10F5000009F4B7C2809139028F5F80933902853048 +:10F5100061F6E0913A02F0913B0209950E94D9F818 +:10F52000803339F60E94C3F9C0CF2091380293E1AD +:10F5300005C0223061F09923A9F391502130C9F719 +:10F540008091C00087FFFCCF8091C600F4CF8091EE +:10F55000C80087FFFCCF8091CE00EDCF0E94D9F884 +:10F56000803281F6809138028130D1F1823009F009 +:10F570009CCF8091C80085FFFCCFE092CE008091A7 +:10F58000C80085FFFCCF8092CE008091C80085FF27 +:10F59000FCCF7092CE008091C80085FFFCCF6092B6 +:10F5A000CE008091C80085FFFCCF5092CE008091A4 +:10F5B000C80085FFFCCF4092CE008091C80085FF37 +:10F5C000FCCF3092CE008091C80085FFFCCF209206 +:10F5D000CE008091C80085FFFCCFA092CE0065CF01 +:10F5E0008091C00085FFFCCFE092C6008091C000F2 +:10F5F00085FFFCCF8092C6008091C00085FFFCCFC4 +:10F600007092C6008091C00085FFFCCF6092C6005A +:10F610008091C00085FFFCCF5092C6008091C00051 +:10F6200085FFFCCF4092C6008091C00085FFFCCFD3 +:10F630003092C6008091C00085FFFCCF2092C600AA +:10F640008091C00085FFFCCFA092C6002ECF0E9403 +:10F65000D9F8863808F466CF0E94D9F80E94C3F919 +:10F6600024CF2091380294E0213041F0223069F01B +:10F67000992309F457CF91502130C1F78091C000F0 +:10F6800087FFFCCF8091C600F3CF8091C80087FF31 +:10F69000FCCF8091CE00ECCF0E94D9F8803841F1A8 +:10F6A000813809F447C0823809F4CAC08839E1F0CA +:10F6B00080E00E947DF9F9CE0E94D9F880933C0247 +:10F6C0000E94D9F880933D020E94C3F9EECE0E94B9 +:10F6D000D9F80E94D9F8182F0E94D9F8112309F4FB +:10F6E0007EC2113009F40AC283E00E947DF9DDCEAA +:10F6F00082E00E947DF9D9CE0E94D9F8803339F397 +:10F700002091380292E0213039F0223061F09923C3 +:10F7100079F291502130C9F78091C00087FFFCCF6A +:10F720008091C600F4CF8091C80087FFFCCF809104 +:10F73000CE00EDCF81E00E947DF9B7CE0E94D9F8CE +:10F7400080933F030E94D9F880933E038091420347 +:10F750008E7F809342030E94D9F8853409F4B3C1A7 +:10F7600080913E0390913F03892B89F000E010E0E7 +:10F770000E94D9F8F801E25CFD4F80830F5F1F4FB4 +:10F7800080913E0390913F030817190788F30E9468 +:10F79000D9F8803209F0B6CE8091420380FFB2C121 +:10F7A00040913C0250913D02440F551F50933D0241 +:10F7B00040933C0260913E0370913F0361157105D7 +:10F7C000F1F080E090E09A01280F391FFC01E25C23 +:10F7D000FD4FE081F999FECF1FBA32BD21BDE0BDDA +:10F7E0000FB6F894FA9AF99A0FBE01968617970702 +:10F7F00050F3460F571F50933D0240933C028091B7 +:10F800003802813081F0823009F04FCE8091C800FB +:10F8100085FFFCCFE092CE008091C80085FFFCCF31 +:10F82000A092CE0042CE8091C00085FFFCCFE09236 +:10F83000C6008091C00085FFFCCFA092C60035CEE7 +:10F8400080E10E947DF931CE0E94D9F880933F0378 +:10F850000E94D9F880933E0320913C0230913D02F2 +:10F8600037FD46C1809142038D7F80934203220F72 +:10F87000331F30933D0220933C020E94D9F8853417 +:10F8800009F430C1809142038E7F809342030E942D +:10F89000D9F8803209F009CE60913802613009F45C +:10F8A0006FC0623009F473C000913E0310913F03B2 +:10F8B0000115110509F440C080914203782F717041 +:10F8C000F82EF69481E0F82240913C0250913D02DE +:10F8D00020E030E013C0FF2009F060C0FA019491ED +:10F8E000613009F43BC0623009F441C0CA0101969D +:10F8F0002F5F3F4FAC0120173107D0F4772359F326 +:10F90000F999FECF52BD41BDF89A90B56130F9F03A +:10F91000623061F78091C80085FFFCCF9093CE00E4 +:10F92000CA0101962F5F3F4FAC012017310730F31A +:10F9300090933D0280933C02613009F4CAC062306A +:10F9400009F0B3CD8091C80085FFFCCF46CE8091F1 +:10F95000C00085FFFCCF9093C600C8CF8091C00047 +:10F9600085FDF9CF8091C00085FFF8CFF4CF80915D +:10F97000C80085FDD3CF8091C80085FFF8CFCECFDA +:10F980008091C00085FFFCCFE092C6008DCF8091B2 +:10F99000C80085FFFCCFE092CE0086CFCA01A0E070 +:10F9A000B0E080509040AF4FBF4FABBFFC0197918C +:10F9B000613061F0623009F099CF8091C80085FD17 +:10F9C000ADCF8091C80085FFF8CFA8CF8091C0004F +:10F9D00085FDC1CF8091C00085FFF8CFBCCF0E94CC +:10F9E000D9F8803209F08ECD80913802813011F142 +:10F9F000823009F05ACD8091C80085FFFCCFE0929B +:10FA0000CE008091C80085FFFCCFD092CE008091BF +:10FA1000C80085FFFCCFC092CE008091C80085FF52 +:10FA2000FCCFB092CE008091C80085FFFCCFA092A1 +:10FA3000CE003BCD8091C00085FFFCCFE092C60098 +:10FA40008091C00085FFFCCFD092C6008091C0009D +:10FA500085FFFCCFC092C6008091C00085FFFCCF1F +:10FA6000B092C6008091C00085FFFCCFA092C60076 +:10FA70001CCD0E94D9F8813209F017CD0E94D9F827 +:10FA8000813209F012CD279A2F98109240032091CD +:10FA90003802E1E491E00EC0223009F4A4C0909352 +:10FAA0004003E92FF0E0E050FE4FE0819F5FEE233E +:10FAB00009F4A0C0213081F78091C00085FFFCCF00 +:10FAC000E093C600ECCF80914203816080934203B3 +:10FAD00047CE8091C00085FDB7CD8091C00085FFE5 +:10FAE000F8CFB2CD80914203816080934203CFCEA4 +:10FAF00080914203826080934203B9CE87E90E94DD +:10FB00007DF9D3CC80913D028823880F880B892111 +:10FB1000809341038BBF80913C0290913D02880FFE +:10FB2000991F90933D0280933C0280913E0380FF99 +:10FB300009C080913E0390913F03019690933F034B +:10FB400080933E03F894F999FECF1127E0913C028F +:10FB5000F0913D02CEE3D2E080913E0390913F03CD +:10FB6000103091F40091570001700130D9F303E097 +:10FB700000935700E8950091570001700130D9F3C8 +:10FB800001E100935700E895099019900091570002 +:10FB900001700130D9F301E000935700E895139507 +:10FBA000103898F011270091570001700130D9F3F7 +:10FBB00005E000935700E89500915700017001306F +:10FBC000D9F301E100935700E8953296029709F0C6 +:10FBD000C7CF103011F00296E5CF112410CE8EE180 +:10FBE0000E947DF962CC8091C80085FFFCCFE09334 +:10FBF000CE0055CF7AE0B72E6DE0A62E5AE3952EB3 +:10FC000040E2842E3DE3732E90E3692E81E3582E6B +:10FC1000213009F442C0223009F45FC00E94D9F8B3 +:10FC2000982F20913802213089F1223009F44EC0FA +:10FC3000943709F46BC0923709F405C1973709F47A +:10FC40007BC0953799F0923609F4BDC09A3601F71A +:10FC5000E0913A02F0913B02099520913802D8CF09 +:10FC60008091C00085FFFCCF9093C6000E94D9F818 +:10FC7000982F80913802813099F38230B9F78091C2 +:10FC8000C80085FFFCCF9093CE00F0CF8091C000DC +:10FC900085FFFCCF9093C600CBCF8091C00085FF3D +:10FCA000FCCFB092C6008091C00085FFFCCFA0922F +:10FCB000C6008091C00085FFFCCF9092C600809165 +:10FCC000C00085FFFCCF8092C600A8CF8091C800FD +:10FCD00085FFFCCF9093CE00ABCF8091C80085FF0D +:10FCE000FCCFB092CE008091C80085FFFCCFA092DF +:10FCF000CE008091C80085FFFCCF9092CE0080910D +:10FD0000C80085FFFCCF8092CE0088CF1F9947C0E6 +:10FD10002F9A213051F0223009F07ACF8091C8001B +:10FD200085FFFCCF6092CE0073CF8091C00085FF2D +:10FD3000FCCF6092C6006CCF0E94D9F8982F8091BA +:10FD400038028130F1F0823009F4ABC00E9455F9DD +:10FD5000082F0E9455F9182F0E94D9F8982F8091EA +:10FD600038028130A9F0823009F4A2C00E9455F90E +:10FD7000D02ECC24F601E10FF11D808320913802B2 +:10FD800047CF8091C00085FFFCCF9093C600DECFA7 +:10FD90008091C00085FFFCCF9093C600E7CF2F98DD +:10FDA000213051F0223009F033CF8091C80085FF17 +:10FDB000FCCF5092CE002CCF8091C00085FFFCCFAD +:10FDC0005092C60025CF213041F1223081F080E8E9 +:10FDD00085BF109274001092750080E091E1FC01E3 +:10FDE000819180E091E13097D1F3CF01F8CF8091FC +:10FDF000C80085FFFCCF82E68093CE008091C800CA +:10FE000085FFFCCF85E78093CE008091C80085FFF9 +:10FE1000FCCF83E78093CE00DACF8091C00085FFCE +:10FE2000FCCF82E68093C6008091C00085FFFCCFA6 +:10FE300085E78093C6008091C00085FFFCCF83E7F3 +:10FE40008093C600C4CF0E94D9F8982F80913802C1 +:10FE50008130C9F08230D1F10E9455F9182F0E94EB +:10FE600055F9982F809138028130A1F0823039F114 +:10FE7000F12EEE24F701E90FF11D80810E9494F824 +:10FE800020913802C5CE8091C00085FFFCCF9093B1 +:10FE9000C600E2CF8091C00085FFFCCF7092C60003 +:10FEA000E7CF8091C80085FFFCCF9093CE004ECF66 +:10FEB0008091C80085FFFCCF9093CE0057CF8091F2 +:10FEC000C80085FFFCCF7092CE00D2CF8091C800D1 +:0EFED00085FFFCCF9093CE00BFCFF894FFCFFC +:10FEDE0041546D656761424F4F54202F204172642B +:10FEEE0075696E6F204D656761202D20284329208E +:10FEFE0041726475696E6F204C4C43202D20303951 +:08FF0E00303933300A0D008088 +:040000031000F000F9 +:00000001FF diff --git a/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex new file mode 100644 index 0000000..43a8b30 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex @@ -0,0 +1,125 @@ +:107800000C94343C0C94513C0C94513C0C94513CE1 +:107810000C94513C0C94513C0C94513C0C94513CB4 +:107820000C94513C0C94513C0C94513C0C94513CA4 +:107830000C94513C0C94513C0C94513C0C94513C94 +:107840000C94513C0C94513C0C94513C0C94513C84 +:107850000C94513C0C94513C0C94513C0C94513C74 +:107860000C94513C0C94513C11241FBECFEFD8E036 +:10787000DEBFCDBF11E0A0E0B1E0ECE9FFE702C060 +:1078800005900D92A230B107D9F712E0A2E0B1E065 +:1078900001C01D92AD30B107E1F70E942D3D0C945F +:1078A000CC3F0C94003C982F959595959595959582 +:1078B000905D8F708A307CF0282F295A8091C0000B +:1078C00085FFFCCF9093C6008091C00085FFFCCF60 +:1078D0002093C6000895282F205DF0CF982F809127 +:1078E000C00085FFFCCF9093C6000895EF92FF92F1 +:1078F0000F931F93EE24FF2487018091C00087FD22 +:1079000017C00894E11CF11C011D111D81E4E8164B +:1079100082E4F8068FE0080780E0180770F3E09132 +:107920000401F091050109958091C00087FFE9CF1E +:107930008091C6001F910F91FF90EF9008950E94D3 +:10794000763C982F8091C00085FFFCCF9093C600B5 +:1079500091362CF490330CF09053892F089597555D +:10796000892F08951F930E949F3C182F0E949F3CCF +:107970001295107F810F1F9108951F93182F882350 +:1079800021F00E94763C1150E1F71F9108951F935A +:10799000182F0E94763C803249F0809103018F5F5E +:1079A000809303018530C1F01F9108958091C0003C +:1079B00085FFFCCF84E18093C6008091C00085FFE5 +:1079C000FCCF1093C6008091C00085FFFCCF80E102 +:1079D0008093C6001F910895E0910401F091050184 +:1079E00009951F9108950E94763C803241F0809164 +:1079F00003018F5F80930301853081F008958091AA +:107A0000C00085FFFCCF84E18093C6008091C00058 +:107A100085FFFCCF80E18093C6000895E0910401CA +:107A2000F09105010995089540E951E08823A1F0FE +:107A30002D9A28EE33E0FA013197F1F721503040CA +:107A4000D1F72D9828EE33E0FA013197F1F7215064 +:107A50003040D1F7815061F708953F924F925F9285 +:107A60006F927F928F929F92AF92BF92CF92DF924E +:107A7000EF92FF920F931F93CF93DF93000080E16B +:107A80008093C4001092C50088E18093C10086E015 +:107A90008093C2005098589A259A81E00E94143D24 +:107AA00024E1F22E9EE1E92E85E9D82E0FE0C02ECA +:107AB00010E1B12EAA24A394B1E49B2EA6E58A2E50 +:107AC000F2E57F2EE0E26E2E79E4572E63E5462E36 +:107AD00050E5352E0E94763C8033B1F18133B9F107 +:107AE000803409F46FC0813409F476C0823409F41B +:107AF00085C0853409F488C0803531F1823521F1A3 +:107B0000813511F1853509F485C0863509F48DC0BC +:107B1000843609F496C0843709F403C1853709F423 +:107B200072C1863709F466C0809103018F5F80932C +:107B30000301853079F6E0910401F0910501099582 +:107B40000E94763C803351F60E94F33CC3CF0E94E2 +:107B5000763C803249F78091C00085FFFCCFF092DF +:107B6000C6008091C00085FFFCCF9092C600809136 +:107B7000C00085FFFCCF8092C6008091C00085FFC9 +:107B8000FCCF7092C6008091C00085FFFCCF609250 +:107B9000C6008091C00085FFFCCF5092C600809146 +:107BA000C00085FFFCCF4092C6008091C00085FFD9 +:107BB000FCCF3092C6008091C00085FFFCCFB09210 +:107BC000C60088CF0E94763C863808F4BDCF0E945C +:107BD000763C0E94F33C7ECF0E94763C803809F4CC +:107BE0009CC0813809F40BC1823809F43CC1883942 +:107BF00009F48FC080E00E94C73C6CCF84E10E94F2 +:107C0000BD3C0E94F33C66CF85E00E94BD3C0E94D3 +:107C1000F33C60CF0E94763C809306010E94763C44 +:107C2000809307010E94F33C55CF0E94763C80333D +:107C300009F41DC183E00E94BD3C80E00E94C73C66 +:107C400049CF0E94763C809309020E94763C809343 +:107C5000080280910C028E7F80930C020E94763C79 +:107C6000853409F415C18091080290910902892B8D +:107C700089F000E010E00E94763CF801E85FFE4FDA +:107C800080830F5F1F4F80910802909109020817AF +:107C9000190788F30E94763C803209F045CF809125 +:107CA0000C0280FF01C16091060170910701660F0F +:107CB000771F7093070160930601A0910802B091AD +:107CC00009021097C9F0E8E0F1E09B01AD014E0F09 +:107CD0005F1FF999FECF32BD21BD819180BDFA9A17 +:107CE000F99A2F5F3F4FE417F50799F76A0F7B1F4B +:107CF00070930701609306018091C00085FFFCCF5F +:107D0000F092C6008091C00085FFFCCFB092C60003 +:107D1000E1CE83E00E94C73CDDCE82E00E94C73CFA +:107D2000D9CE0E94763C809309020E94763C8093D3 +:107D300008028091060190910701880F991F909386 +:107D40000701809306010E94763C853409F4A6C0A1 +:107D500080910C028E7F80930C020E94763C8032D0 +:107D600009F0B8CE8091C00085FFFCCFF092C6002C +:107D7000609108027091090261157105B9F140E046 +:107D800050E080910C02A82FA170B82FB27011C0E2 +:107D9000BB2309F45CC0E0910601F0910701319624 +:107DA000F0930701E09306014F5F5F4F46175707B7 +:107DB000E8F4AA2369F3F999FECF209106013091E6 +:107DC000070132BD21BDF89A90B58091C00085FFB2 +:107DD000FCCF9093C6002F5F3F4F30930701209355 +:107DE00006014F5F5F4F4617570718F38091C00099 +:107DF00085FDE5CE8091C00085FFF8CFE0CE81E023 +:107E00000E94C73C67CE0E94763C803209F08CCE3F +:107E10008091C00085FFFCCFF092C6008091C00029 +:107E200085FFFCCFE092C6008091C00085FFFCCFAB +:107E3000D092C6008091C00085FFFCCFC092C600E2 +:107E40008091C00085FFFCCFB092C60043CEE09188 +:107E50000601F091070194918091C00085FFFCCF4D +:107E60009093C6009CCF80E10E94C73C33CE0E9415 +:107E7000763C0E94763C182F0E94763C112309F430 +:107E800083C0113009F484C08FE00E94C73C22CE29 +:107E900080910C02816080930C02E5CE80910C02EF +:107EA000816080930C0259CF809107018823880F4D +:107EB000880B8A2180930B02809106019091070123 +:107EC000880F991F90930701809306018091080203 +:107ED00080FF09C080910802909109020196909359 +:107EE000090280930802F894F999FECF1127E091D6 +:107EF0000601F0910701C8E0D1E08091080290915D +:107F00000902103091F40091570001700130D9F34B +:107F100003E000935700E89500915700017001308D +:107F2000D9F301E100935700E89509901990009169 +:107F3000570001700130D9F301E000935700E89534 +:107F40001395103498F011270091570001700130FB +:107F5000D9F305E000935700E895009157000170B0 +:107F60000130D9F301E100935700E895329602976A +:107F700009F0C7CF103011F00296E5CF112480919F +:107F8000C00085FFB9CEBCCE8EE10E94C73CA2CD19 +:0C7F900085E90E94C73C9ECDF894FFCF0D +:027F9C00800063 +:040000030000780081 +:00000001FF diff --git a/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex new file mode 100644 index 0000000..9753e2e --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex @@ -0,0 +1,124 @@ +:107800000C94343C0C94513C0C94513C0C94513CE1 +:107810000C94513C0C94513C0C94513C0C94513CB4 +:107820000C94513C0C94513C0C94513C0C94513CA4 +:107830000C94513C0C94513C0C94513C0C94513C94 +:107840000C94513C0C94513C0C94513C0C94513C84 +:107850000C94513C0C94513C0C94513C0C94513C74 +:107860000C94513C0C94513C11241FBECFEFD8E036 +:10787000DEBFCDBF11E0A0E0B1E0EAE8FFE702C063 +:1078800005900D92A230B107D9F712E0A2E0B1E065 +:1078900001C01D92AD30B107E1F70E942D3D0C945F +:1078A000C33F0C94003C982F95959595959595958B +:1078B000905D8F708A307CF0282F295A8091C0000B +:1078C00085FFFCCF9093C6008091C00085FFFCCF60 +:1078D0002093C6000895282F205DF0CF982F809127 +:1078E000C00085FFFCCF9093C6000895EF92FF92F1 +:1078F0000F931F93EE24FF2487018091C00087FD22 +:1079000017C00894E11CF11C011D111D81E2E8164D +:1079100081EAF80687E0080780E0180770F3E09135 +:107920000401F091050109958091C00087FFE9CF1E +:107930008091C6001F910F91FF90EF9008950E94D3 +:10794000763C982F8091C00085FFFCCF9093C600B5 +:1079500091362CF490330CF09053892F089597555D +:10796000892F08951F930E949F3C182F0E949F3CCF +:107970001295107F810F1F9108951F93182F882350 +:1079800021F00E94763C1150E1F71F9108951F935A +:10799000182F0E94763C803249F0809103018F5F5E +:1079A000809303018530C1F01F9108958091C0003C +:1079B00085FFFCCF84E18093C6008091C00085FFE5 +:1079C000FCCF1093C6008091C00085FFFCCF80E102 +:1079D0008093C6001F910895E0910401F091050184 +:1079E00009951F9108950E94763C803241F0809164 +:1079F00003018F5F80930301853081F008958091AA +:107A0000C00085FFFCCF84E18093C6008091C00058 +:107A100085FFFCCF80E18093C6000895E0910401CA +:107A2000F09105010995089548EC50E08823A1F0F4 +:107A30002D9A28EE33E0FA013197F1F721503040CA +:107A4000D1F72D9828EE33E0FA013197F1F7215064 +:107A50003040D1F7815061F708953F924F925F9285 +:107A60006F927F928F929F92AF92BF92CF92DF924E +:107A7000EF92FF920F931F93CF93DF93000082E06A +:107A80008093C00080E18093C4001092C50088E11B +:107A90008093C10086E08093C2005098589A259A3E +:107AA00081E00E94143D24E1F22E9EE1E92E85E959 +:107AB000D82E0FE0C02E10E1B12EAA24A394B1E479 +:107AC0009B2EA6E58A2EF2E57F2EE0E26E2E79E46B +:107AD000572E63E5462E50E5352E0E94763C8033C6 +:107AE000B1F18133B9F1803409F46FC0813409F404 +:107AF00076C0823409F485C0853409F488C08035A5 +:107B000031F1823521F1813511F1853509F485C0D6 +:107B1000863509F48DC0843609F496C0843709F49B +:107B200003C1853709F472C1863709F466C08091B4 +:107B300003018F5F80930301853079F6E0910401A2 +:107B4000F091050109950E94763C803351F60E9420 +:107B5000F33CC3CF0E94763C803249F78091C0004D +:107B600085FFFCCFF092C6008091C00085FFFCCF5E +:107B70009092C6008091C00085FFFCCF8092C60025 +:107B80008091C00085FFFCCF7092C6008091C0003C +:107B900085FFFCCF6092C6008091C00085FFFCCFBE +:107BA0005092C6008091C00085FFFCCF4092C60075 +:107BB0008091C00085FFFCCF3092C6008091C0004C +:107BC00085FFFCCFB092C60088CF0E94763C8638F5 +:107BD00008F4BDCF0E94763C0E94F33C7ECF0E9409 +:107BE000763C803809F49CC0813809F40BC1823896 +:107BF00009F430C1883909F48FC080E00E94C73C85 +:107C00006CCF84E10E94BD3C0E94F33C66CF85E0CE +:107C10000E94BD3C0E94F33C60CF0E94763C809362 +:107C200006010E94763C809307010E94F33C55CFE9 +:107C30000E94763C803309F411C183E00E94BD3C70 +:107C400080E00E94C73C49CF0E94763C80930902A5 +:107C50000E94763C8093080280910C028E7F809374 +:107C60000C020E94763C853409F409C18091080217 +:107C700090910902892B89F000E010E00E94763C87 +:107C8000F801E85FFE4F80830F5F1F4F809108026D +:107C9000909109020817190788F30E94763C8032F8 +:107CA00009F045CF80910C0280FFF5C0609106017C +:107CB00070910701660F771F7093070160930601AB +:107CC000A0910802B09109021097C9F0E8E0F1E034 +:107CD0009B01AD014E0F5F1FF999FECF32BD21BD53 +:107CE000819180BDFA9AF99A2F5F3F4FE417F5070B +:107CF00099F76A0F7B1F70930701609306018091CB +:107D0000C00085FFFCCFF092C6008091C00085FFC7 +:107D1000FCCFB092C600E1CE83E00E94C73CDDCE2E +:107D200082E00E94C73CD9CE0E94763C8093090233 +:107D30000E94763C80930802809106019091070191 +:107D4000880F991F90930701809306010E94763C4B +:107D5000853409F49AC080910C028E7F80930C02C6 +:107D60000E94763C803209F0B8CE8091C00085FF39 +:107D7000FCCFF092C600A0910802B09109021097C2 +:107D8000C1F180910C02082F0170182F1695117007 +:107D9000E0910601F0910701AF014F5F5F4FBA011B +:107DA00020E030E00023B1F4112339F49491809164 +:107DB000C00085FFFCCF9093C6002F5F3F4FCB01E3 +:107DC0000196FA012A173B0780F4BC014F5F5F4F11 +:107DD000002351F3F999FECFF2BDE1BDF89A90B5B9 +:107DE0008091C00085FFFCCFE6CF709307016093C0 +:107DF00006018091C00085FDE5CE8091C00085FF21 +:107E0000F8CFE0CE81E00E94C73C67CE0E94763C6E +:107E1000803209F08CCE8091C00085FFFCCFF092BB +:107E2000C6008091C00085FFFCCFE092C600809123 +:107E3000C00085FFFCCFD092C6008091C00085FFB6 +:107E4000FCCFC092C6008091C00085FFFCCFB092ED +:107E5000C60043CE80E10E94C73C3FCE0E94763CE4 +:107E60000E94763C182F0E94763C112309F483C0AF +:107E7000113009F484C08FE00E94C73C2ECE80915F +:107E80000C02816080930C02F1CE80910C02816023 +:107E900080930C0265CF809107018823880F880B9F +:107EA0008A2180930B028091060190910701880F2F +:107EB000991F90930701809306018091080280FF2B +:107EC00009C08091080290910902019690930902DD +:107ED00080930802F894F999FECF1127E0910601EA +:107EE000F0910701C8E0D1E0809108029091090269 +:107EF000103091F40091570001700130D9F303E084 +:107F000000935700E8950091570001700130D9F3B4 +:107F100001E100935700E8950990199000915700EE +:107F200001700130D9F301E000935700E8951395F3 +:107F3000103498F011270091570001700130D9F3E7 +:107F400005E000935700E89500915700017001305B +:107F5000D9F301E100935700E8953296029709F0B2 +:107F6000C7CF103011F00296E5CF11248091C000E8 +:107F700085FFC5CEC8CE8EE10E94C73CAECD85E957 +:0A7F80000E94C73CAACDF894FFCF81 +:027F8A00800075 +:040000030000780081 +:00000001FF diff --git a/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex new file mode 100644 index 0000000..feac9d2 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex @@ -0,0 +1,126 @@ +:103800000C94341C0C94511C0C94511C0C94511CA1 +:103810000C94511C0C94511C0C94511C0C94511C74 +:103820000C94511C0C94511C0C94511C0C94511C64 +:103830000C94511C0C94511C0C94511C0C94511C54 +:103840000C94511C0C94511C0C94511C0C94511C44 +:103850000C94511C0C94511C0C94511C0C94511C34 +:103860000C94511C0C94511C11241FBECFEFD4E0BA +:10387000DEBFCDBF11E0A0E0B1E0E4EAFFE302C0AB +:1038800005900D92A230B107D9F712E0A2E0B1E0A5 +:1038900001C01D92AD30B107E1F70E94361D0C94B6 +:1038A000D01F0C94001C982F9595959595959595FE +:1038B000905D8F708A307CF0282F295A8091C0004B +:1038C00085FFFCCF9093C6008091C00085FFFCCFA0 +:1038D0002093C6000895282F205DF0CF982F809167 +:1038E000C00085FFFCCF9093C6000895EF92FF9231 +:1038F0000F931F93EE24FF2487018091C00087FD62 +:1039000017C00894E11CF11C011D111D81E4E8168B +:1039100082E4F8068FE0080780E0180770F3E09172 +:103920000401F091050109958091C00087FFE9CF5E +:103930008091C6001F910F91FF90EF9008950E9413 +:10394000761C982F8091C00085FFFCCF9093C60015 +:1039500091362CF490330CF09053892F089597559D +:10396000892F08951F930E949F1C182F0E949F1C4F +:103970001295107F810F1F910895882351F0982F81 +:1039800091508091C00087FFFCCF8091C6009923A1 +:10399000B9F708951F93182F0E94761C803249F0C2 +:1039A000809103018F5F809303018530C1F01F91E7 +:1039B00008958091C00085FFFCCF84E18093C6000C +:1039C0008091C00085FFFCCF1093C6008091C0009D +:1039D00085FFFCCF80E18093C6001F910895E091A0 +:1039E0000401F091050109951F9108950E94761C2C +:1039F000803241F0809103018F5F80930301853015 +:103A000081F008958091C00085FFFCCF84E1809310 +:103A1000C6008091C00085FFFCCF80E18093C60086 +:103A20000895E0910401F09105010995089510921F +:103A30000A028823D1F090E040E951E02D9A28EE67 +:103A400033E0FA013197F1F721503040D1F72D984A +:103A500028EE33E0FA013197F1F721503040D1F7E9 +:103A60009F5F981758F380930A0208953F924F92F0 +:103A70005F926F927F928F929F92AF92BF92CF92FE +:103A8000DF92EF92FF920F931F93CF93DF9300008B +:103A900083E38093C4001092C50088E18093C10045 +:103AA00086E08093C2005098589A259A81E00E943F +:103AB000171D44E1F42E3EE1E32E24E9D22E96E0D8 +:103AC000C92E80E1B82EAA24A39401E4902E16E515 +:103AD000812EB2E57B2EA0E26A2EF9E45F2EE3E5AB +:103AE0004E2E70E5372E0E94761C8033B1F1813363 +:103AF00009F441C0803409F479C0813409F48CC0E0 +:103B0000823471F1853409F47BC0803531F182351E +:103B100021F1813511F1853509F48DC0863509F41F +:103B20009DC0843609F4AEC0843709F41BC18537C3 +:103B300009F485C1863709F47AC0809103018F5F4B +:103B400080930301853079F6E0910401F09105013D +:103B500009950E94761C803351F60E94F61CC3CF53 +:103B600093E18091C00087FFFCCF8091C60099232C +:103B7000A1F39150F6CF0E94761C8032F1F680912D +:103B8000C00085FFFCCFF092C6008091C00085FF89 +:103B9000FCCF9092C6008091C00085FFFCCF809240 +:103BA000C6008091C00085FFFCCF7092C600809156 +:103BB000C00085FFFCCF6092C6008091C00085FFE9 +:103BC000FCCF5092C6008091C00085FFFCCF409290 +:103BD000C6008091C00085FFFCCF3092C600809166 +:103BE000C00085FFFCCFB092C6007DCF0E94761C3E +:103BF000863808F4B2CF0E94761C0E94F61C73CF60 +:103C000094E08091C00087FFFCCF8091C60099238B +:103C100009F4A3CF9150F5CF0E94761C8038D1F0E3 +:103C2000813861F1823809F499C0883979F080E0EF +:103C30000E94CA1C58CF0E94761C809306010E94E5 +:103C4000761C809307010E94F61C4DCF83E00E94F2 +:103C5000CA1C49CF82E00E94CA1C45CF0E94761C34 +:103C6000803309F486C192E08091C00087FFFCCFC9 +:103C70008091C6009923D9F29150F6CF81E00E943D +:103C8000CA1C31CF0E94761C809309020E94761CC8 +:103C90008093080280910C028E7F80930C020E9418 +:103CA000761C853429F480910C02816080930C028B +:103CB0008091080290910902892B89F000E010E0C0 +:103CC0000E94761CF801E85FFE4F80830F5F1F4F54 +:103CD00080910802909109020817190788F30E9441 +:103CE000761C803209F029CF80910C0280FFD1C070 +:103CF0004091060150910701440F551F5093070151 +:103D000040930601A0910802B09109021097C9F0F2 +:103D1000E8E0F1E09A01BD016E0F7F1FF999FECF37 +:103D200032BD21BD819180BDFA9AF99A2F5F3F4F34 +:103D3000E617F70799F74A0F5B1F50930701409367 +:103D400006018091C00085FFFCCFF092C6008091F3 +:103D5000C00085FFFCCFB092C600C5CE80E10E94B6 +:103D6000CA1CC1CE0E94761C809309020E94761C58 +:103D7000809308028091060190910701880F991F96 +:103D800090930701809306010E94761C853409F404 +:103D90007AC080910C028E7F80930C020E94761C68 +:103DA000803209F0A0CE8091C00085FFFCCFF09258 +:103DB000C600A0910802B09109021097B9F1809154 +:103DC0000C02182F1170082F0270E0910601F0917B +:103DD00007019F012F5F3F4FB90140E050E01123E1 +:103DE000B1F4002339F494918091C00085FFFCCF99 +:103DF0009093C6004F5F5F4FCB010196F9014A17C0 +:103E00005B0780F4BC012F5F3F4F112351F3F999F9 +:103E1000FECFF2BDE1BDF89A90B58091C00085FF5C +:103E2000FCCFE6CF70930701609306018091C0003C +:103E300085FDD9CE8091C00085FFF8CFD4CE0E94F9 +:103E4000761C803209F079CE8091C00085FFFCCFCE +:103E5000F092C6008091C00085FFFCCFE092C600C2 +:103E60008091C00085FFFCCFD092C6008091C00039 +:103E700085FFFCCFC092C6008091C00085FFFCCFBB +:103E8000B092C60030CE80910C02816080930C020B +:103E900085CF809107018823880F880B8A21809322 +:103EA0000B028091060190910701880F991F909352 +:103EB0000701809306018091080280FF09C080916C +:103EC00008029091090201969093090280930802DA +:103ED000F894F999FECF1127E0910601F0910701BE +:103EE000C8E0D1E08091080290910902103091F46D +:103EF0000091570001700130D9F303E0009357009F +:103F0000E8950091570001700130D9F301E1009369 +:103F10005700E89509901990009157000170013001 +:103F2000D9F301E000935700E8951395103498F009 +:103F300011270091570001700130D9F305E000937B +:103F40005700E8950091570001700130D9F301E165 +:103F500000935700E8953296029709F0C7CF1030CA +:103F600011F00296E5CF11248091C00085FFE9CEC3 +:103F7000ECCE0E94761C0E94761C182F0E94761CA4 +:103F8000112351F0113021F086E00E94CA1CABCD04 +:103F900084E90E94CA1CA7CD8EE10E94CA1CA3CD51 +:043FA000F894FFCFC3 +:023FA40080009B +:0400000300003800C1 +:00000001FF diff --git a/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_ng.hex b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_ng.hex new file mode 100644 index 0000000..387091e --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_ng.hex @@ -0,0 +1,110 @@ +:103800000C94341C0C94511C0C94511C0C94511CA1 +:103810000C94511C0C94511C0C94511C0C94511C74 +:103820000C94511C0C94511C0C94511C0C94511C64 +:103830000C94511C0C94511C0C94511C0C94511C54 +:103840000C94511C0C94511C0C94511C0C94511C44 +:103850000C94511C0C94511C0C94511C0C94511C34 +:103860000C94511C0C94511C11241FBECFEFD4E0BA +:10387000DEBFCDBF11E0A0E0B1E0E4EAFEE302C0AC +:1038800005900D92A230B107D9F712E0A2E0B1E0A5 +:1038900001C01D92AD30B107E1F70E94ED1C0C9400 +:1038A000511F0C94001C482F10920A0280E08417CC +:1038B000E0F4582F2D9A28EE33E080E991E001974B +:1038C000F1F721503040C9F72D9828EE33E080E918 +:1038D00091E00197F1F721503040C9F7852F8F5FB4 +:1038E000582F841738F380930A020895EF92FF92BD +:1038F0000F931F93EE24FF2487018091C00087FD62 +:1039000017C00894E11CF11C011D111D81E0E8168F +:1039100082E1F8068AE7080780E0180770F3E09173 +:103920000201F091030109958091C00087FFE9CF62 +:103930008091C600992787FD90951F910F91FF9068 +:10394000EF900895982F8091C00085FFFCCF909351 +:10395000C60008950E94761C803271F080910401A7 +:103960008F5F80930401853009F00895E091020192 +:10397000F09103010995089584E10E94A21C80E161 +:103980000E94A21C0895CF93C82F0E94761C8032FB +:1039900041F0809104018F5F80930401853081F4B0 +:1039A0000AC084E10E94A21C8C2F0E94A21C80E10C +:1039B0000E94A21C05C0E0910201F091030109954B +:1039C000CF910895CF93C82FC150CF3F21F00E94CF +:1039D000761CC150E0F7CF910895CFEFD4E0DEBF61 +:1039E000CDBF000083E38093C4001092C50088E13E +:1039F0008093C10086E08093C2005098589A259A1F +:103A000083E00E94531C0E94761C8033B1F1813305 +:103A1000B9F1803409F455C0813409F45BC08234B3 +:103A200009F46DC0853409F470C0803531F18235F8 +:103A300021F1813511F1853509F46BC0863509F422 +:103A400073C0843609F47AC0843709F4CEC0853750 +:103A500009F429C1863709F44AC0809104018F5FB7 +:103A600080930401853079F6E0910201F091030121 +:103A700009950E94761C803351F60E94AA1CC3CF80 +:103A80000E94761CC82F803241F784E10E94A21C5C +:103A900081E40E94A21C86E50E94A21C82E50E948D +:103AA000A21C8C2F0E94A21C89E40E94A21C83E508 +:103AB0000E94A21C80E50E94A21C80E10E94A21C20 +:103AC000A2CF0E94761C8638C0F20E94761C0E940B +:103AD000AA1C99CF0E94761C803809F486C18138CF +:103AE00009F487C1823809F488C1883921F080E05F +:103AF0000E94C31C88CF83E00E94C31C84CF84E152 +:103B00000E94E21C0E94AA1C7ECF85E00E94E21C5B +:103B1000F9CF0E94761C809306010E94761C809348 +:103B200007010E94AA1C6FCF0E94761C803309F403 +:103B3000CAC083E00E94E21C80E0DACF0E94761CBB +:103B4000809309020E94761C8093080280910C02E7 +:103B50008E7F80930C020E94761C853409F4C4C0C9 +:103B600000E010E0809108029091090218161906F1 +:103B700070F4C8E0D1E00E94761C89930F5F1F4F5C +:103B8000809108029091090208171907A0F30E947A +:103B9000761C803209F061CF80910C0280FFAEC0AC +:103BA000E0910601F0910701EE0FFF1F00E010E029 +:103BB00020910802309109021216130680F4A8E041 +:103BC000B1E0F999FECFF2BDE1BD8D9180BDFA9AC9 +:103BD000F99A31960F5F1F4F0217130790F3F09376 +:103BE0000701E093060184E166CF0E94761C809372 +:103BF00009020E94761C8093080280910601909130 +:103C00000701880F991F90930701809306010E9476 +:103C1000761C853409F46EC080910C028E7F8093EF +:103C20000C020E94761C803209F0EDCE84E10E94E5 +:103C3000A21C00E010E02091080230910902121647 +:103C4000130608F03ACFE0910601F0910701809148 +:103C50000C0280FF1FC0F999FECFF2BDE1BDF89ABA +:103C600080B50E94A21CE0910601F09107013196F7 +:103C7000F0930701E09306012091080230910902B8 +:103C80000F5F1F4F0217130708F017CF80910C0228 +:103C900080FDE1CF869580FFB4C03196F093070197 +:103CA000E0930601EDCF0E94761C803209F0D5CE5C +:103CB00084E10E94A21C8EE10E94A21C84E90E9461 +:103CC000A21C86E0F8CE0E94761C0E94761CC82FAB +:103CD0000E94761CCC2309F47CC0C13009F47DC05D +:103CE00086E00E94C31C8FCE80910C02816080937D +:103CF0000C0236CF80910C02816091CF8091070138 +:103D000087FD6FC010920B02809106019091070110 +:103D1000880F991F909307018093060180910802F4 +:103D200080FF09C08091080290910902019690934A +:103D3000090280930802F894F999FECF1127E091C7 +:103D40000601F0910701C8E0D1E08091080290914E +:103D50000902103091F40091570001700130D9F33D +:103D600003E000935700E89500915700017001307F +:103D7000D9F301E100935700E8950990199000915B +:103D8000570001700130D9F301E000935700E89526 +:103D90001395103498F011270091570001700130ED +:103DA000D9F305E000935700E895009157000170A2 +:103DB0000130D9F301E100935700E895329602975C +:103DC00009F0C7CF103011F00296E5CF112484E13D +:103DD00072CE8EE10E94C31C16CE84E90E94C31CE1 +:103DE00012CE81E080930B028FCF82E00E94C31C31 +:103DF0000ACE81E00E94C31C06CE80E10E94C31C53 +:103E000002CE84910E94A21C2091080230910902E6 +:103E1000E0910601F091070140CFCF930E94761CFC +:103E2000C82F0E94A21CC13614F0C75503C0C0336E +:103E30000CF0C0538C2F992787FD9095CF91089552 +:103E40000F931F930E940D1F082F112707FD109538 +:103E500002951295107F1027007F10270E940D1FDA +:103E6000800F992787FD90951F910F910895CF930B +:103E7000C82F85958595859585958A3034F0895A22 +:103E8000CF70CA3034F0C95A05C0805DCF70CA30D7 +:103E9000D4F7C05D0E94A21C8C2F0E94A21CCF915F +:043EA0000895FFCFB3 +:023EA40080009C +:0400000300003800C1 +:00000001FF diff --git a/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex new file mode 100644 index 0000000..994e478 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex @@ -0,0 +1,126 @@ +:103800000C94341C0C94511C0C94511C0C94511CA1 +:103810000C94511C0C94511C0C94511C0C94511C74 +:103820000C94511C0C94511C0C94511C0C94511C64 +:103830000C94511C0C94511C0C94511C0C94511C54 +:103840000C94511C0C94511C0C94511C0C94511C44 +:103850000C94511C0C94511C0C94511C0C94511C34 +:103860000C94511C0C94511C11241FBECFEFD4E0BA +:10387000DEBFCDBF11E0A0E0B1E0EEEAFFE302C0A1 +:1038800005900D92A230B107D9F712E0A2E0B1E0A5 +:1038900001C01D92AD30B107E1F70E94331D0C94B9 +:1038A000D51F0C94001C982F9595959595959595F9 +:1038B000905D8F708A307CF0282F295A8091C0004B +:1038C00085FFFCCF9093C6008091C00085FFFCCFA0 +:1038D0002093C6000895282F205DF0CF982F809167 +:1038E000C00085FFFCCF9093C6000895EF92FF9231 +:1038F0000F931F93EE24FF2487018091C00087FD62 +:1039000017C00894E11CF11C011D111D81E2E8168D +:1039100081EAF80687E0080780E0180770F3E09175 +:103920000401F091050109958091C00087FFE9CF5E +:103930008091C6001F910F91FF90EF9008950E9413 +:10394000761C982F8091C00085FFFCCF9093C60015 +:1039500091362CF490330CF09053892F089597559D +:10396000892F08951F930E949F1C182F0E949F1C4F +:103970001295107F810F1F9108951F93182F882390 +:1039800021F00E94761C1150E1F71F9108951F93BA +:10399000182F0E94761C803249F0809103018F5FBE +:1039A000809303018530C1F01F9108958091C0007C +:1039B00085FFFCCF84E18093C6008091C00085FF25 +:1039C000FCCF1093C6008091C00085FFFCCF80E142 +:1039D0008093C6001F910895E0910401F0910501C4 +:1039E00009951F9108950E94761C803241F08091C4 +:1039F00003018F5F80930301853081F008958091EA +:103A0000C00085FFFCCF84E18093C6008091C00098 +:103A100085FFFCCF80E18093C6000895E09104010A +:103A2000F09105010995089510920A028823D1F0BA +:103A300090E048EC50E02D9A28EE33E0FA013197FF +:103A4000F1F721503040D1F72D9828EE33E0FA01FC +:103A50003197F1F721503040D1F79F5F981758F315 +:103A600080930A0208953F924F925F926F927F92E5 +:103A70008F929F92AF92BF92CF92DF92EF92FF927E +:103A80000F931F93CF93DF9394B714BE8091600080 +:103A90008861809360001092600091FF0CC289E100 +:103AA0008093C4001092C50088E18093C10086E035 +:103AB0008093C2005098589A259A81E00E94141D64 +:103AC00044E1F42E3EE1E32E24E9D22E96E0C92E05 +:103AD00080E1B82EAA24A39401E4902E16E5812E4D +:103AE000B2E57B2EA0E26A2EF9E45F2EE3E54E2ECE +:103AF00070E5372E0E94761C8033B9F18133C1F115 +:103B0000803409F470C0813409F477C0823409F438 +:103B100086C0853409F489C0803539F1823529F1B0 +:103B2000813509F4AFC1853509F485C0863509F4BE +:103B30008DC0843609F435C1843709F4C1C0853796 +:103B400009F490C0863709F466C0809103018F5F45 +:103B500080930301853071F6E0910401F091050135 +:103B600009950E94761C803349F60E94F31CC2CF4F +:103B70000E94761C803249F78091C00085FFFCCFFF +:103B8000F092C6008091C00085FFFCCF9092C600E5 +:103B90008091C00085FFFCCF8092C6008091C0005C +:103BA00085FFFCCF7092C6008091C00085FFFCCFDE +:103BB0006092C6008091C00085FFFCCF5092C60085 +:103BC0008091C00085FFFCCF4092C6008091C0006C +:103BD00085FFFCCF3092C6008091C00085FFFCCFEE +:103BE000B092C60087CF0E94761C863808F4BDCFFD +:103BF0000E94761C0E94F31C7DCF0E94761C8038A8 +:103C000009F45AC0813809F453C0823809F440C11C +:103C1000883909F449C080E00E94C71C6BCF84E159 +:103C20000E94BD1C0E94F31C65CF85E00E94BD1C54 +:103C30000E94F31C5FCF0E94761C809306010E94B5 +:103C4000761C809307010E94F31C54CF0E94761CBF +:103C5000803309F421C183E00E94BD1C80E00E94F2 +:103C6000C71C48CF0E94761C803209F06ECF80912D +:103C7000C00085FFFCCFF092C6008091C00085FF98 +:103C8000FCCFE092C6008091C00085FFFCCFD092AF +:103C9000C6008091C00085FFFCCFC092C600809115 +:103CA000C00085FFFCCF9CCF83E00E94C71C22CFC1 +:103CB00081E00E94C71C1ECF82E00E94C71C1ACF61 +:103CC0000E94761C809309020E94761C8093080251 +:103CD0008091060190910701880F991F9093070129 +:103CE000809306010E94761C853409F4C5C080913A +:103CF0000C028E7F80930C020E94761C803209F0A9 +:103D0000F9CE8091C00085FFFCCFF092C600609193 +:103D10000802709109026115710591F140E050E0CF +:103D200080910C02A82FA170B82FB27010C0BB23D5 +:103D300061F1E0910601F09107013196F0930701DE +:103D4000E09306014F5F5F4F46175707C8F4AA2359 +:103D500071F3F999FECF209106013091070132BD30 +:103D600021BDF89A90B58091C00085FFFCCF90935B +:103D7000C6002F5F3F4F3093070120930601E2CF2B +:103D80008091C00085FFFCCF2BCFE0910601F09120 +:103D9000070194918091C00085FFFCCF9093C600ED +:103DA000CCCF0E94761C809309020E94761C8093DF +:103DB000080280910C028E7F80930C020E94761C78 +:103DC000853429F480910C02816080930C028091EB +:103DD000080290910902892B89F000E010E00E940E +:103DE000761CF801E85FFE4F80830F5F1F4F8091C4 +:103DF0000802909109020817190788F30E94761C9F +:103E0000803209F0A2CE80910C0280FF62C0409106 +:103E1000060150910701440F551F5093070140932D +:103E20000601609108027091090261157105C9F0DF +:103E3000E8E0F1E09A01DB01AE0FBF1FF999FECF78 +:103E400032BD21BD819180BDFA9AF99A2F5F3F4F13 +:103E5000EA17FB0799F7460F571F50930701409346 +:103E600006018091C00085FFFCCFF092C6008091D2 +:103E7000C00085FFFCCFB4CE80910C02816080939E +:103E80000C023ACF0E94F31C88E080936000FFCFC1 +:103E900080E10E94C71C2ECE0E94761C0E94761CD8 +:103EA000182F0E94761C112381F0113051F086E00A +:103EB0000E94C71C1FCEE0910401F09105010995F5 +:103EC000EECD84E90E94C71C15CE8EE10E94C71C6E +:103ED00011CE809107018823880F880B8A21809357 +:103EE0000B028091060190910701880F991F909312 +:103EF0000701809306018091080280FF09C080912C +:103F00000802909109020196909309028093080299 +:103F1000F894F999FECF1127E0910601F09107017D +:103F2000C8E0D1E08091080290910902103091F42C +:103F30000091570001700130D9F303E0009357005E +:103F4000E8950091570001700130D9F301E1009329 +:103F50005700E895099019900091570001700130C1 +:103F6000D9F301E000935700E8951395103498F0C9 +:103F700011270091570001700130D9F305E000933B +:103F80005700E8950091570001700130D9F301E125 +:103F900000935700E8953296029709F0C7CF10308A +:0E3FA00011F00296E5CF11245CCFF894FFCF0C +:023FAE00800091 +:0400000300003800C1 +:00000001FF diff --git a/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/Makefile b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/Makefile new file mode 100755 index 0000000..0fd54db --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega/Makefile @@ -0,0 +1,224 @@ +# Makefile for ATmegaBOOT +# E.Lins, 18.7.2005 +# $Id$ +# +# Instructions +# +# To make bootloader .hex file: +# make diecimila +# make lilypad +# make ng +# etc... +# +# To burn bootloader .hex file: +# make diecimila_isp +# make lilypad_isp +# make ng_isp +# etc... + +# program name should not be changed... +PROGRAM = ATmegaBOOT_168 + +# enter the parameters for the avrdude isp tool +ISPTOOL = stk500v2 +ISPPORT = usb +ISPSPEED = -b 115200 + +MCU_TARGET = atmega168 +LDSECTION = --section-start=.text=0x3800 + +# the efuse should really be 0xf8; since, however, only the lower +# three bits of that byte are used on the atmega168, avrdude gets +# confused if you specify 1's for the higher bits, see: +# http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/ +# +# similarly, the lock bits should be 0xff instead of 0x3f (to +# unlock the bootloader section) and 0xcf instead of 0x0f (to +# lock it), but since the high two bits of the lock byte are +# unused, avrdude would get confused. + +ISPFUSES = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ +-e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m +ISPFLASH = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ +-U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m + +STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" +STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \ +-lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt +STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt + + +OBJ = $(PROGRAM).o +OPTIMIZE = -O2 + +DEFS = +LIBS = + +CC = avr-gcc + +# Override is only needed by avr-lib build system. + +override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) +override LDFLAGS = -Wl,$(LDSECTION) +#override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION) + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: + +lilypad: TARGET = lilypad +lilypad: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' +lilypad: AVR_FREQ = 8000000L +lilypad: $(PROGRAM)_lilypad.hex + +lilypad_isp: lilypad +lilypad_isp: TARGET = lilypad +lilypad_isp: HFUSE = DD +lilypad_isp: LFUSE = E2 +lilypad_isp: EFUSE = 00 +lilypad_isp: isp + +lilypad_resonator: TARGET = lilypad_resonator +lilypad_resonator: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=3' +lilypad_resonator: AVR_FREQ = 8000000L +lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex + +lilypad_resonator_isp: lilypad_resonator +lilypad_resonator_isp: TARGET = lilypad_resonator +lilypad_resonator_isp: HFUSE = DD +lilypad_resonator_isp: LFUSE = C6 +lilypad_resonator_isp: EFUSE = 00 +lilypad_resonator_isp: isp + +pro8: TARGET = pro_8MHz +pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro8: AVR_FREQ = 8000000L +pro8: $(PROGRAM)_pro_8MHz.hex + +pro8_isp: pro8 +pro8_isp: TARGET = pro_8MHz +pro8_isp: HFUSE = DD +pro8_isp: LFUSE = C6 +pro8_isp: EFUSE = 00 +pro8_isp: isp + +pro16: TARGET = pro_16MHz +pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro16: AVR_FREQ = 16000000L +pro16: $(PROGRAM)_pro_16MHz.hex + +pro16_isp: pro16 +pro16_isp: TARGET = pro_16MHz +pro16_isp: HFUSE = DD +pro16_isp: LFUSE = C6 +pro16_isp: EFUSE = 00 +pro16_isp: isp + +pro20: TARGET = pro_20mhz +pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro20: AVR_FREQ = 20000000L +pro20: $(PROGRAM)_pro_20mhz.hex + +pro20_isp: pro20 +pro20_isp: TARGET = pro_20mhz +pro20_isp: HFUSE = DD +pro20_isp: LFUSE = C6 +pro20_isp: EFUSE = 00 +pro20_isp: isp + +diecimila: TARGET = diecimila +diecimila: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' +diecimila: AVR_FREQ = 16000000L +diecimila: $(PROGRAM)_diecimila.hex + +diecimila_isp: diecimila +diecimila_isp: TARGET = diecimila +diecimila_isp: HFUSE = DD +diecimila_isp: LFUSE = FF +diecimila_isp: EFUSE = 00 +diecimila_isp: isp + +ng: TARGET = ng +ng: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' +ng: AVR_FREQ = 16000000L +ng: $(PROGRAM)_ng.hex + +ng_isp: ng +ng_isp: TARGET = ng +ng_isp: HFUSE = DD +ng_isp: LFUSE = FF +ng_isp: EFUSE = 00 +ng_isp: isp + +atmega328: TARGET = atmega328 +atmega328: MCU_TARGET = atmega328p +atmega328: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 +atmega328: AVR_FREQ = 16000000L +atmega328: LDSECTION = --section-start=.text=0x7800 +atmega328: $(PROGRAM)_atmega328.hex + +atmega328_isp: atmega328 +atmega328_isp: TARGET = atmega328 +atmega328_isp: MCU_TARGET = atmega328p +atmega328_isp: HFUSE = DA +atmega328_isp: LFUSE = FF +atmega328_isp: EFUSE = 05 +atmega328_isp: isp + +atmega328_pro8: TARGET = atmega328_pro_8MHz +atmega328_pro8: MCU_TARGET = atmega328p +atmega328_pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -DDOUBLE_SPEED +atmega328_pro8: AVR_FREQ = 8000000L +atmega328_pro8: LDSECTION = --section-start=.text=0x7800 +atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex + +atmega328_pro8_isp: atmega328_pro8 +atmega328_pro8_isp: TARGET = atmega328_pro_8MHz +atmega328_pro8_isp: MCU_TARGET = atmega328p +atmega328_pro8_isp: HFUSE = DA +atmega328_pro8_isp: LFUSE = FF +atmega328_pro8_isp: EFUSE = 05 +atmega328_pro8_isp: isp + +mega: TARGET = atmega1280 +mega: MCU_TARGET = atmega1280 +mega: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' -DBAUD_RATE=57600 +mega: AVR_FREQ = 16000000L +mega: LDSECTION = --section-start=.text=0x1F000 +mega: $(PROGRAM)_atmega1280.hex + +mega_isp: mega +mega_isp: TARGET = atmega1280 +mega_isp: MCU_TARGET = atmega1280 +mega_isp: HFUSE = DA +mega_isp: LFUSE = FF +mega_isp: EFUSE = F5 +mega_isp: isp + +isp: $(TARGET) + $(ISPFUSES) + $(ISPFLASH) + +isp-stk500: $(PROGRAM)_$(TARGET).hex + $(STK500-1) + $(STK500-2) + +%.elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + diff --git a/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c new file mode 100755 index 0000000..17977e6 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c @@ -0,0 +1,507 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel mega8 AVR Controller */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* */ +/* Hacked by DojoCorp - ZGZ - MMX - IVR */ +/* Hacked by David A. Mellis */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m8 */ +/**********************************************************/ + +#include +#include +#include +#include +#include +#include + +//#define F_CPU 16000000 + +/* We, Malmoitians, like slow interaction + * therefore the slow baud rate ;-) + */ +//#define BAUD_RATE 9600 + +/* 6.000.000 is more or less 8 seconds at the + * speed configured here + */ +//#define MAX_TIME_COUNT 6000000 +#define MAX_TIME_COUNT (F_CPU>>1) +///#define MAX_TIME_COUNT_MORATORY 1600000 + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x12 + +// AVR-GCC compiler compatibility +// avr-gcc compiler v3.1.x and older doesn't support outb() and inb() +// if necessary, convert outb and inb to outp and inp +#ifndef outb + #define outb(sfr,val) (_SFR_BYTE(sfr) = (val)) +#endif +#ifndef inb + #define inb(sfr) _SFR_BYTE(sfr) +#endif + +/* defines for future compatibility */ +#ifndef cbi + #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi + #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +#define eeprom_rb(addr) eeprom_read_byte ((uint8_t *)(addr)) +#define eeprom_rw(addr) eeprom_read_word ((uint16_t *)(addr)) +#define eeprom_wb(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val)) + +/* Onboard LED is connected to pin PB5 */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB5 + + +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + + +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); + +union address_union { + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union { + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct { + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +//uint8_t address_high; + +uint8_t pagesz=0x80; + +uint8_t i; +//uint8_t bootuart0=0,bootuart1=0; + + +void (*app_start)(void) = 0x0000; + +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + + //cbi(BL_DDR,BL); + //sbi(BL_PORT,BL); + + asm volatile("nop\n\t"); + + /* check if flash is programmed already, if not start bootloader anyway */ + //if(pgm_read_byte_near(0x0000) != 0xFF) { + + /* check if bootloader pin is set low */ + //if(bit_is_set(BL_PIN,BL)) app_start(); + //} + + /* initialize UART(s) depending on CPU defined */ + /* m8 */ + UBRRH = (((F_CPU/BAUD_RATE)/16)-1)>>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + //UCSRA = 0x00; + //UCSRC = 0x86; + //UCSRB = _BV(TXEN)|_BV(RXEN); + + + /* this was giving uisp problems, so I removed it; without it, the boot + works on with uisp and avrdude on the mac (at least). */ + //putch('\0'); + + //uint32_t l; + //uint32_t time_count; + //time_count=0; + + /* set LED pin as output */ + sbi(LED_DDR,LED); + for (i = 0; i < 16; i++) { + outb(LED_PORT, inb(LED_PORT) ^ _BV(LED)); + _delay_loop_2(0); + } + + //for (l=0; l<40000000; l++) + //outb(LED_PORT, inb(LED_PORT) ^= _BV(LED)); + + /* flash onboard LED three times to signal entering of bootloader */ + //for(i=0; i<3; ++i) { + //for(l=0; l<40000000; ++l); + //sbi(LED_PORT,LED); + //for(l=0; l<40000000; ++l); + //cbi(LED_PORT,LED); + //} + + /* see comment at previous call to putch() */ + //putch('\0'); // this line is needed for the synchronization of the programmer + + /* forever */ + for (;;) { + //if((inb(UCSRA) & _BV(RXC))){ + /* get character from UART */ + ch = getch(); + + /* A bunch of if...else if... gives smaller code than switch...case ! */ + + /* Hello is anyone home ? */ + if(ch=='0') { + nothing_response(); + } + + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') { + if (getch() == ' ') { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } + } + + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + //else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') { + getNch(20); + nothing_response(); + } + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') { + getNch(5); + nothing_response(); + } + + /* Enter programming mode */ + else if(ch=='P') { + nothing_response(); + // FIXME: modified only here by DojoCorp, Mumbai, India, 20050626 + //time_count=0; // exted the delay once entered prog.mode + } + + /* Leave programming mode */ + else if(ch=='Q') { + nothing_response(); + //time_count=MAX_TIME_COUNT_MORATORY; // once the programming is done, + // we should start the application + // but uisp has problems with this, + // therefore we just change the times + // and give the programmer 1 sec to react + } + + /* Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='R') { + nothing_response(); + } + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') { + getNch(4); + byte_response(0x00); + } + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + //else address_high = 0x00; + + //address.word = address.word << 1; //address * 2 -> byte location + //if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure + while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in words) + "lds r31,address+1 \n\t" + "lsl r30 \n\t" //address * 2 -> byte location + "rol r31 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "sbrs r24,0 \n\t" //Even up an odd number of bytes + "rjmp length_loop \n\t" + "adiw r24,1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "rcall wait_spm \n\t" +// "wait_spm1: \n\t" +// "lds r16,%0 \n\t" //Wait for previous spm to complete +// "andi r16,1 \n\t" +// "cpi r16,1 \n\t" +// "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" + "rcall wait_spm \n\t" +// "wait_spm2: \n\t" +// "lds r16,%0 \n\t" //Wait for previous spm to complete +// "andi r16,1 \n\t" +// "cpi r16,1 \n\t" +// "breq wait_spm2 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + + "rcall wait_spm \n\t" +// "wait_spm3: \n\t" +// "lds r16,%0 \n\t" //Wait for previous spm to complete +// "andi r16,1 \n\t" +// "cpi r16,1 \n\t" +// "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "rcall wait_spm \n\t" +// "wait_spm4: \n\t" +// "lds r16,%0 \n\t" //Wait for previous spm to complete +// "andi r16,1 \n\t" +// "cpi r16,1 \n\t" +// "breq wait_spm4 \n\t" + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" + "rcall wait_spm \n\t" +// "wait_spm5: \n\t" +// "lds r16,%0 \n\t" //Wait for previous spm to complete +// "andi r16,1 \n\t" +// "cpi r16,1 \n\t" +// "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + + "wait_spm: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm \n\t" + "ret \n\t" + + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31"); + + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } + } + + /* Read memory block mode, length is big endian. */ + else if(ch=='t') { + length.byte[1] = getch(); + length.byte[0] = getch(); + if (getch() == 'E') flags.eeprom = 1; + else { + flags.eeprom = 0; + address.word = address.word << 1; // address * 2 -> byte location + } + if (getch() == ' ') { // Command terminator + putch(0x14); + for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay + if (flags.eeprom) { // Byte access EEPROM read + putch(eeprom_rb(address.word)); + address.word++; + } else { + if (!flags.rampz) putch(pgm_read_byte_near(address.word)); + address.word++; + } + } + putch(0x10); + } + } + + /* Get device signature bytes */ + else if(ch=='u') { + if (getch() == ' ') { + putch(0x14); + putch(SIG1); + putch(SIG2); + putch(SIG3); + putch(0x10); + } + } + + /* Read oscillator calibration byte */ + else if(ch=='v') { + byte_response(0x00); + } +// } else { +// time_count++; +// if (time_count>=MAX_TIME_COUNT) { +// app_start(); +// } +// } + } /* end of forever loop */ +} + +void putch(char ch) +{ + /* m8 */ + while (!(inb(UCSRA) & _BV(UDRE))); + outb(UDR,ch); +} + +char getch(void) +{ + /* m8 */ + uint32_t count = 0; + while(!(inb(UCSRA) & _BV(RXC))) { + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return (inb(UDR)); +} + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i $@ + +size: $(PROGRAM).hex + $(SIZE) $^ + +# Rules for building the .text rom images + +text: hex bin srec + +hex: $(PROGRAM).hex +bin: $(PROGRAM).bin +srec: $(PROGRAM).srec + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ diff --git a/arduino-0018-linux-x64/hardware/arduino/bootloaders/bt/ATmegaBOOT_168.c b/arduino-0018-linux-x64/hardware/arduino/bootloaders/bt/ATmegaBOOT_168.c new file mode 100644 index 0000000..a85dc9a --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/bootloaders/bt/ATmegaBOOT_168.c @@ -0,0 +1,1032 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega8, ATmega128 and ATmega168 */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* build: 050815 */ +/* date : 15.08.2005 */ +/* */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m128,m8,m163 - feel free to let me know */ +/* how/if it works for you. */ +/* */ +/**********************************************************/ + + +/* some includes */ +#include +#include +#include +#include +#include + + +#define set_output(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#define set_input(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) + + +#define high(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#define low(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) + + + + +/* the current avr-libc eeprom functions do not support the ATmega168 */ +/* own eeprom write/read functions are used instead */ +#ifndef __AVR_ATmega168__ +#include +#endif + +/* define F_CPU according to AVR_FREQ set in Makefile */ +/* Is there a better way to pass such a parameter from Makefile to source code ? */ + +#define F_CPU 16000000L + +#include + + +/* 20060803: hacked by DojoCorp */ +/* set the waiting time for the bootloader */ +#define MAX_TIME_COUNT (F_CPU>>1) + +/* set the UART baud rate */ +/* 20060803: hacked by DojoCorp */ +#define BAUD_RATE 115200 + + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x0f + + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ +/* BL0... means UART0, BL1... means UART1 */ +#ifdef __AVR_ATmega128__ +#define BL_DDR DDRF +#define BL_PORT PORTF +#define BL_PIN PINF +#define BL0 PINF7 +#define BL1 PINF6 +#else +/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ +#define BL_DDR DDRD +#define BL_PORT PORTD +#define BL_PIN PIND +#define BL PIND6 +#endif + + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#ifdef __AVR_ATmega128__ +/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB7 +#else +/* Onboard LED is connected to pin PB2 (e.g. Crumb8, Crumb168) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +/* 20060803: hacked by DojoCorp, LED pin is B5 in Arduino */ +/* #define LED PINB2 */ +#define LED PINB5 +#endif + + +/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ +#ifdef __AVR_ATmega128__ +#define MONITOR +#endif + + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( + +#if defined __AVR_ATmega128__ +#define SIG2 0x97 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega64__ +#define SIG2 0x96 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega32__ +#define SIG2 0x95 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega16__ +#define SIG2 0x94 +#define SIG3 0x03 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8__ +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega88__ +#define SIG2 0x93 +#define SIG3 0x0a +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega168__ +#define SIG2 0x94 +#define SIG3 0x06 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega162__ +#define SIG2 0x94 +#define SIG3 0x04 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega163__ +#define SIG2 0x94 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega169__ +#define SIG2 0x94 +#define SIG3 0x05 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8515__ +#define SIG2 0x93 +#define SIG3 0x06 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega8535__ +#define SIG2 0x93 +#define SIG3 0x08 +#define PAGE_SIZE 0x20U //32 words +#endif + + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union { + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union { + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct { + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +uint8_t address_high; + +uint8_t pagesz=0x80; + +uint8_t i; +uint8_t bootuart = 0; + +void (*app_start)(void) = 0x0000; + + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + + asm volatile("nop\n\t"); + + /* set pin direction for bootloader pin and enable pullup */ + /* for ATmega128, two pins need to be initialized */ +#ifdef __AVR_ATmega128__ + BL_DDR &= ~_BV(BL0); + BL_DDR &= ~_BV(BL1); + BL_PORT |= _BV(BL0); + BL_PORT |= _BV(BL1); +#else + BL_DDR &= ~_BV(BL); + BL_PORT |= _BV(BL); +#endif + + +#ifdef __AVR_ATmega128__ + /* check which UART should be used for booting */ + if(bit_is_clear(BL_PIN, BL0)) { + bootuart = 1; + } + else if(bit_is_clear(BL_PIN, BL1)) { + bootuart = 2; + } +#endif + + /* check if flash is programmed already, if not start bootloader anyway */ + if(pgm_read_byte_near(0x0000) != 0xFF) { + +#ifdef __AVR_ATmega128__ + /* no UART was selected, start application */ + if(!bootuart) { + app_start(); + } +#else + /* check if bootloader pin is set low */ + /* we don't start this part neither for the m8, nor m168 */ + //if(bit_is_set(BL_PIN, BL)) { + // app_start(); + // } +#endif + } + +#ifdef __AVR_ATmega128__ + /* no bootuart was selected, default to uart 0 */ + if(!bootuart) { + bootuart = 1; + } +#endif + + + /* initialize UART(s) depending on CPU defined */ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0A = 0x00; + UCSR0C = 0x06; + UCSR0B = _BV(TXEN0)|_BV(RXEN0); + } + if(bootuart == 2) { + UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR1A = 0x00; + UCSR1C = 0x06; + UCSR1B = _BV(TXEN1)|_BV(RXEN1); + } +#elif defined __AVR_ATmega163__ + UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSRA = 0x00; + UCSRB = _BV(TXEN)|_BV(RXEN); +#elif defined __AVR_ATmega168__ + UBRR0H = ((F_CPU / 16 + BAUD_RATE / 2) / BAUD_RATE - 1) >> 8; + UBRR0L = ((F_CPU / 16 + BAUD_RATE / 2) / BAUD_RATE - 1); + + + //UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + //UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0B = (1<>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + UCSRA = 0x00; + UCSRC = 0x06; + UCSRB = _BV(TXEN)|_BV(RXEN); +#endif + + /* set LED pin as output */ + LED_DDR |= _BV(LED); + + + + set_output(DDRD,PIND7); + high(PORTD,PD7); + for (i = 0; i < 16; i++) { + + _delay_loop_2(0); + } + + + low(PORTD,PD7); + + + /* flash onboard LED to signal entering of bootloader */ +#ifdef __AVR_ATmega128__ + // 4x for UART0, 5x for UART1 + flash_led(3 + bootuart); +#else + flash_led(3); +#endif + + /* 20050803: by DojoCorp, this is one of the parts provoking the + system to stop listening, cancelled from the original */ + //putch('\0'); + + + //message("SET BT PAGEMODE 3 2000 1"); +putch('S'); +putch('E'); +putch('T'); +putch(' '); +putch('B'); +putch('T'); +putch(' '); +putch('P'); +putch('A'); +putch('G'); +putch('E'); +putch('M'); +putch('O'); +putch('D'); +putch('E'); +putch(' '); +putch('3'); +putch(' '); +putch('2'); +putch('0'); +putch('0'); +putch('0'); +putch(' '); +putch('1'); +putch(0x0D); + + + //put_s("SET BT ROLE 0 f 7d00"); + putch('S'); + putch('E'); + putch('T'); + putch(' '); + putch('B'); + putch('T'); + putch(' '); + putch('R'); + putch('O'); + putch('L'); + putch('E'); + putch(' '); + putch('0'); + putch(' '); + putch('f'); + putch(' '); + putch('7'); + putch('d'); + putch('0'); + putch('0'); + putch(0x0D); + + + + + + + /* forever loop */ + for (;;) { + + /* get character from UART */ + ch = getch(); + + /* A bunch of if...else if... gives smaller code than switch...case ! */ + + /* Hello is anyone home ? */ + if(ch=='0') { + nothing_response(); + } + + + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') { + if (getch() == ' ') { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } + } + + + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') { + getNch(5); + nothing_response(); + } + + + /* Enter programming mode */ + else if(ch=='P') { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') { + nothing_response(); + } + + + /* Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='R') { + nothing_response(); + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') { + getNch(4); + byte_response(0x00); + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + else address_high = 0x00; +#ifdef __AVR_ATmega128__ + RAMPZ = address_high; +#endif + address.word = address.word << 1; //address * 2 -> byte location + /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ + if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure + // HACKME: EEPE used to be EEWE + while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in bytes) + "lds r31,address+1 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "wait_spm1: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "wait_spm2: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm2 \n\t" + + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + + "wait_spm3: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "wait_spm4: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm4 \n\t" +#ifdef __AVR_ATmega163__ + "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write +#endif + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" + "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) +#endif + "wait_spm5: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register +#if defined __AVR_ATmega168__ + : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#else + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#endif + ); + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } + } + + + /* Read memory block mode, length is big endian. */ + else if(ch=='t') { + length.byte[1] = getch(); + length.byte[0] = getch(); +#if defined __AVR_ATmega128__ + if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME + else flags.rampz = 0; +#endif + if (getch() == 'E') flags.eeprom = 1; + else { + flags.eeprom = 0; + address.word = address.word << 1; // address * 2 -> byte location + } + if (getch() == ' ') { // Command terminator + putch(0x14); + for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay + if (flags.eeprom) { // Byte access EEPROM read +#ifdef __AVR_ATmega168__ + while(EECR & (1<= 'a') { + ah = ah - 'a' + 0x0a; + } else if(ah >= '0') { + ah -= '0'; + } + if(al >= 'a') { + al = al - 'a' + 0x0a; + } else if(al >= '0') { + al -= '0'; + } + return (ah << 4) + al; +} + + +void puthex(char ch) { + char ah,al; + + ah = (ch & 0xf0) >> 4; + if(ah >= 0x0a) { + ah = ah - 0x0a + 'a'; + } else { + ah += '0'; + } + al = (ch & 0x0f); + if(al >= 0x0a) { + al = al - 0x0a + 'a'; + } else { + al += '0'; + } + putch(ah); + putch(al); +} + + +void putch(char ch) +{ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; + } + else if (bootuart == 2) { + while (!(UCSR1A & _BV(UDRE1))); + UDR1 = ch; + } +#elif defined __AVR_ATmega168__ + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +#else + /* m8,16,32,169,8515,8535,163 */ + while (!(UCSRA & _BV(UDRE))); + UDR = ch; +#endif +} + + +char getch(void) +{ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))); + return UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))); + return UDR1; + } + return 0; +#elif defined __AVR_ATmega168__ + uint32_t count = 0; + while(!(UCSR0A & _BV(RXC0))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR0; +#else + /* m8,16,32,169,8515,8535,163 */ + uint32_t count = 0; + while(!(UCSRA & _BV(RXC))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR; +#endif +} + + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i +#include +#include +#include +#include + + +/* the current avr-libc eeprom functions do not support the ATmega168 */ +/* own eeprom write/read functions are used instead */ +#ifndef __AVR_ATmega168__ +#include +#endif + +/* Use the F_CPU defined in Makefile */ + +/* 20060803: hacked by DojoCorp */ +/* 20070626: hacked by David A. Mellis to decrease waiting time for auto-reset */ +/* set the waiting time for the bootloader */ +/* get this from the Makefile instead */ +/* #define MAX_TIME_COUNT (F_CPU>>4) */ + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20060803: hacked by DojoCorp */ +//#define BAUD_RATE 115200 +#define BAUD_RATE 19200 + + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ +/* BL0... means UART0, BL1... means UART1 */ +#ifdef __AVR_ATmega128__ +#define BL_DDR DDRF +#define BL_PORT PORTF +#define BL_PIN PINF +#define BL0 PINF7 +#define BL1 PINF6 +#else +/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ +#define BL_DDR DDRD +#define BL_PORT PORTD +#define BL_PIN PIND +#define BL PIND6 +#endif + + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#ifdef __AVR_ATmega128__ +/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB7 +#else +/* Onboard LED is connected to pin PB2 (e.g. Crumb8, Crumb168) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +/* 20060803: hacked by DojoCorp, LED pin is B5 in Arduino */ +/* #define LED PINB2 */ +#define LED PINB5 +#endif + + +/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ +#ifdef __AVR_ATmega128__ +#define MONITOR +#endif + + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( + +#if defined __AVR_ATmega128__ +#define SIG2 0x97 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega64__ +#define SIG2 0x96 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega32__ +#define SIG2 0x95 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega16__ +#define SIG2 0x94 +#define SIG3 0x03 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8__ +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega88__ +#define SIG2 0x93 +#define SIG3 0x0a +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega168__ +#define SIG2 0x94 +#define SIG3 0x06 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega162__ +#define SIG2 0x94 +#define SIG3 0x04 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega163__ +#define SIG2 0x94 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega169__ +#define SIG2 0x94 +#define SIG3 0x05 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8515__ +#define SIG2 0x93 +#define SIG3 0x06 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega8535__ +#define SIG2 0x93 +#define SIG3 0x08 +#define PAGE_SIZE 0x20U //32 words +#endif + + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union { + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union { + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct { + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +uint8_t address_high; + +uint8_t pagesz=0x80; + +uint8_t i; +uint8_t bootuart = 0; + +uint8_t error_count = 0; + +void (*app_start)(void) = 0x0000; + + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + + asm volatile("nop\n\t"); + + /* set pin direction for bootloader pin and enable pullup */ + /* for ATmega128, two pins need to be initialized */ +#ifdef __AVR_ATmega128__ + BL_DDR &= ~_BV(BL0); + BL_DDR &= ~_BV(BL1); + BL_PORT |= _BV(BL0); + BL_PORT |= _BV(BL1); +#else + /* We run the bootloader regardless of the state of this pin. Thus, don't + put it in a different state than the other pins. --DAM, 070709 + BL_DDR &= ~_BV(BL); + BL_PORT |= _BV(BL); + */ +#endif + + +#ifdef __AVR_ATmega128__ + /* check which UART should be used for booting */ + if(bit_is_clear(BL_PIN, BL0)) { + bootuart = 1; + } + else if(bit_is_clear(BL_PIN, BL1)) { + bootuart = 2; + } +#endif + + /* check if flash is programmed already, if not start bootloader anyway */ + if(pgm_read_byte_near(0x0000) != 0xFF) { + +#ifdef __AVR_ATmega128__ + /* no UART was selected, start application */ + if(!bootuart) { + app_start(); + } +#else + /* check if bootloader pin is set low */ + /* we don't start this part neither for the m8, nor m168 */ + //if(bit_is_set(BL_PIN, BL)) { + // app_start(); + // } +#endif + } + +#ifdef __AVR_ATmega128__ + /* no bootuart was selected, default to uart 0 */ + if(!bootuart) { + bootuart = 1; + } +#endif + + + /* initialize UART(s) depending on CPU defined */ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0A = 0x00; + UCSR0C = 0x06; + UCSR0B = _BV(TXEN0)|_BV(RXEN0); + } + if(bootuart == 2) { + UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR1A = 0x00; + UCSR1C = 0x06; + UCSR1B = _BV(TXEN1)|_BV(RXEN1); + } +#elif defined __AVR_ATmega163__ + UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSRA = 0x00; + UCSRB = _BV(TXEN)|_BV(RXEN); +#elif defined __AVR_ATmega168__ + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0B = (1<>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + UCSRA = 0x00; + UCSRC = 0x06; + UCSRB = _BV(TXEN)|_BV(RXEN); +#endif + + /* set LED pin as output */ + LED_DDR |= _BV(LED); + + + /* flash onboard LED to signal entering of bootloader */ +#ifdef __AVR_ATmega128__ + // 4x for UART0, 5x for UART1 + flash_led(NUM_LED_FLASHES + bootuart); +#else + flash_led(NUM_LED_FLASHES); +#endif + + /* 20050803: by DojoCorp, this is one of the parts provoking the + system to stop listening, cancelled from the original */ + //putch('\0'); + + + /* forever loop */ + for (;;) { + + /* get character from UART */ + ch = getch(); + + /* A bunch of if...else if... gives smaller code than switch...case ! */ + + /* Hello is anyone home ? */ + if(ch=='0') { + nothing_response(); + } + + + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') { + if (getch() == ' ') { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') { + getNch(5); + nothing_response(); + } + + + /* Enter programming mode */ + else if(ch=='P') { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') { + nothing_response(); + } + + + /* Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='R') { + nothing_response(); + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') { + getNch(4); + byte_response(0x00); + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + else address_high = 0x00; +#ifdef __AVR_ATmega128__ + RAMPZ = address_high; +#endif + address.word = address.word << 1; //address * 2 -> byte location + /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ + if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure + // HACKME: EEPE used to be EEWE + while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in bytes) + "lds r31,address+1 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "wait_spm1: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "wait_spm2: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm2 \n\t" + + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + + "wait_spm3: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "wait_spm4: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm4 \n\t" +#ifdef __AVR_ATmega163__ + "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write +#endif + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" + "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) +#endif + "wait_spm5: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register +#if defined __AVR_ATmega168__ + : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#else + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#endif + ); + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* Read memory block mode, length is big endian. */ + else if(ch=='t') { + length.byte[1] = getch(); + length.byte[0] = getch(); +#if defined __AVR_ATmega128__ + if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME + else flags.rampz = 0; +#endif + if (getch() == 'E') flags.eeprom = 1; + else { + flags.eeprom = 0; + address.word = address.word << 1; // address * 2 -> byte location + } + if (getch() == ' ') { // Command terminator + putch(0x14); + for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay + if (flags.eeprom) { // Byte access EEPROM read +#ifdef __AVR_ATmega168__ + while(EECR & (1<= 'a') { + ah = ah - 'a' + 0x0a; + } else if(ah >= '0') { + ah -= '0'; + } + if(al >= 'a') { + al = al - 'a' + 0x0a; + } else if(al >= '0') { + al -= '0'; + } + return (ah << 4) + al; +} + + +void puthex(char ch) { + char ah,al; + + ah = (ch & 0xf0) >> 4; + if(ah >= 0x0a) { + ah = ah - 0x0a + 'a'; + } else { + ah += '0'; + } + al = (ch & 0x0f); + if(al >= 0x0a) { + al = al - 0x0a + 'a'; + } else { + al += '0'; + } + putch(ah); + putch(al); +} + + +void putch(char ch) +{ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; + } + else if (bootuart == 2) { + while (!(UCSR1A & _BV(UDRE1))); + UDR1 = ch; + } +#elif defined __AVR_ATmega168__ + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +#else + /* m8,16,32,169,8515,8535,163 */ + while (!(UCSRA & _BV(UDRE))); + UDR = ch; +#endif +} + + +char getch(void) +{ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))); + return UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))); + return UDR1; + } + return 0; +#elif defined __AVR_ATmega168__ + uint32_t count = 0; + while(!(UCSR0A & _BV(RXC0))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR0; +#else + /* m8,16,32,169,8515,8535,163 */ + uint32_t count = 0; + while(!(UCSRA & _BV(RXC))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR; +#endif +} + + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + +install: + avrdude -p m168 -c stk500v2 -P /dev/cu.USA19H1b1P1.1 -e -u -U lock:w:0x3f:m -U efuse:w:0x00:m -U hfuse:w:0xdd:m -U lfuse:w:0xe2:m + avrdude -p m168 -c stk500v2 -P /dev/cu.USA19H1b1P1.1 -e -u -U flash:w:ATmegaBOOT_168.hex -U lock:w:0x0f:m diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/HardwareSerial.cpp b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/HardwareSerial.cpp new file mode 100755 index 0000000..712a4c7 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/HardwareSerial.cpp @@ -0,0 +1,226 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis +*/ + +#include +#include +#include +#include "wiring.h" +#include "wiring_private.h" + +#include "HardwareSerial.h" + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which rx_buffer_head is the index of the +// location to which to write the next incoming character and rx_buffer_tail +// is the index of the location from which to read. +#define RX_BUFFER_SIZE 128 + +struct ring_buffer { + unsigned char buffer[RX_BUFFER_SIZE]; + int head; + int tail; +}; + +ring_buffer rx_buffer = { { 0 }, 0, 0 }; + +#if defined(__AVR_ATmega1280__) +ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; +ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; +ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *rx_buffer) +{ + int i = (rx_buffer->head + 1) % RX_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != rx_buffer->tail) { + rx_buffer->buffer[rx_buffer->head] = c; + rx_buffer->head = i; + } +} + +#if defined(__AVR_ATmega1280__) + +SIGNAL(SIG_USART0_RECV) +{ + unsigned char c = UDR0; + store_char(c, &rx_buffer); +} + +SIGNAL(SIG_USART1_RECV) +{ + unsigned char c = UDR1; + store_char(c, &rx_buffer1); +} + +SIGNAL(SIG_USART2_RECV) +{ + unsigned char c = UDR2; + store_char(c, &rx_buffer2); +} + +SIGNAL(SIG_USART3_RECV) +{ + unsigned char c = UDR3; + store_char(c, &rx_buffer3); +} + +#else + +#if defined(__AVR_ATmega8__) +SIGNAL(SIG_UART_RECV) +#else +SIGNAL(USART_RX_vect) +#endif +{ +#if defined(__AVR_ATmega8__) + unsigned char c = UDR; +#else + unsigned char c = UDR0; +#endif + store_char(c, &rx_buffer); +} + +#endif + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udre = udre; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(long baud) +{ + uint16_t baud_setting; + bool use_u2x; + + // U2X mode is needed for baud rates higher than (CPU Hz / 16) + if (baud > F_CPU / 16) { + use_u2x = true; + } else { + // figure out if U2X mode would allow for a better connection + + // calculate the percent difference between the baud-rate specified and + // the real baud rate for both U2X and non-U2X mode (0-255 error percent) + uint8_t nonu2x_baud_error = abs((int)(255-((F_CPU/(16*(((F_CPU/8/baud-1)/2)+1))*255)/baud))); + uint8_t u2x_baud_error = abs((int)(255-((F_CPU/(8*(((F_CPU/4/baud-1)/2)+1))*255)/baud))); + + // prefer non-U2X mode because it handles clock skew better + use_u2x = (nonu2x_baud_error > u2x_baud_error); + } + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); +} + +void HardwareSerial::end() +{ + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); +} + +uint8_t HardwareSerial::available(void) +{ + return (RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % RX_BUFFER_SIZE; +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (_rx_buffer->tail + 1) % RX_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // were full, not empty. + _rx_buffer->head = _rx_buffer->tail; +} + +void HardwareSerial::write(uint8_t c) +{ + while (!((*_ucsra) & (1 << _udre))) + ; + + *_udr = c; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(__AVR_ATmega8__) +HardwareSerial Serial(&rx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRE, U2X); +#else +HardwareSerial Serial(&rx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRE0, U2X0); +#endif + +#if defined(__AVR_ATmega1280__) +HardwareSerial Serial1(&rx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UDR1, RXEN1, TXEN1, RXCIE1, UDRE1, U2X1); +HardwareSerial Serial2(&rx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRE2, U2X2); +HardwareSerial Serial3(&rx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRE3, U2X3); +#endif diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/HardwareSerial.h b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/HardwareSerial.h new file mode 100755 index 0000000..6b620ed --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/HardwareSerial.h @@ -0,0 +1,66 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Print.h" + +struct ring_buffer; + +class HardwareSerial : public Print +{ + private: + ring_buffer *_rx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udre; + uint8_t _u2x; + public: + HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x); + void begin(long); + void end(); + uint8_t available(void); + int read(void); + void flush(void); + virtual void write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print +}; + +extern HardwareSerial Serial; + +#if defined(__AVR_ATmega1280__) +extern HardwareSerial Serial1; +extern HardwareSerial Serial2; +extern HardwareSerial Serial3; +#endif + +#endif diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/Print.cpp b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/Print.cpp new file mode 100755 index 0000000..fb5afc1 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/Print.cpp @@ -0,0 +1,206 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include "wiring.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +void Print::write(const char *str) +{ + while (*str) + write(*str++); +} + +/* default implementation: may be overridden */ +void Print::write(const uint8_t *buffer, size_t size) +{ + while (size--) + write(*buffer++); +} + +void Print::print(const char str[]) +{ + write(str); +} + +void Print::print(char c, int base) +{ + print((long) c, base); +} + +void Print::print(unsigned char b, int base) +{ + print((unsigned long) b, base); +} + +void Print::print(int n, int base) +{ + print((long) n, base); +} + +void Print::print(unsigned int n, int base) +{ + print((unsigned long) n, base); +} + +void Print::print(long n, int base) +{ + if (base == 0) { + write(n); + } else if (base == 10) { + if (n < 0) { + print('-'); + n = -n; + } + printNumber(n, 10); + } else { + printNumber(n, base); + } +} + +void Print::print(unsigned long n, int base) +{ + if (base == 0) write(n); + else printNumber(n, base); +} + +void Print::print(double n, int digits) +{ + printFloat(n, digits); +} + +void Print::println(void) +{ + print('\r'); + print('\n'); +} + +void Print::println(const char c[]) +{ + print(c); + println(); +} + +void Print::println(char c, int base) +{ + print(c, base); + println(); +} + +void Print::println(unsigned char b, int base) +{ + print(b, base); + println(); +} + +void Print::println(int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(double n, int digits) +{ + print(n, digits); + println(); +} + +// Private Methods ///////////////////////////////////////////////////////////// + +void Print::printNumber(unsigned long n, uint8_t base) +{ + unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. + unsigned long i = 0; + + if (n == 0) { + print('0'); + return; + } + + while (n > 0) { + buf[i++] = n % base; + n /= base; + } + + for (; i > 0; i--) + print((char) (buf[i - 1] < 10 ? + '0' + buf[i - 1] : + 'A' + buf[i - 1] - 10)); +} + +void Print::printFloat(double number, uint8_t digits) +{ + // Handle negative numbers + if (number < 0.0) + { + print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) + print("."); + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + print(toPrint); + remainder -= toPrint; + } +} diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/Print.h b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/Print.h new file mode 100755 index 0000000..8a1e2b8 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/Print.h @@ -0,0 +1,62 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include +#include // for size_t + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + +class Print +{ + private: + void printNumber(unsigned long, uint8_t); + void printFloat(double, uint8_t); + public: + virtual void write(uint8_t) = 0; + virtual void write(const char *str); + virtual void write(const uint8_t *buffer, size_t size); + + void print(const char[]); + void print(char, int = BYTE); + void print(unsigned char, int = BYTE); + void print(int, int = DEC); + void print(unsigned int, int = DEC); + void print(long, int = DEC); + void print(unsigned long, int = DEC); + void print(double, int = 2); + + void println(const char[]); + void println(char, int = BYTE); + void println(unsigned char, int = BYTE); + void println(int, int = DEC); + void println(unsigned int, int = DEC); + void println(long, int = DEC); + void println(unsigned long, int = DEC); + void println(double, int = 2); + void println(void); +}; + +#endif diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/Tone.cpp b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/Tone.cpp new file mode 100755 index 0000000..827fe49 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/Tone.cpp @@ -0,0 +1,515 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions + +*************************************************/ + +#include +#include +#include +#include + +#if defined(__AVR_ATmega8__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(__AVR_ATmega1280__) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +#if defined(__AVR_ATmega1280__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { +#if !defined(__AVR_ATmega8__) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; +#endif + + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + +#if defined(__AVR_ATmega1280__) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + bitWrite(TCCR4B, WGM42, 1); + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; +#endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if !defined(__AVR_ATmega8__) + if (_timer == 0) + TCCR0B = prescalarbits; + else +#endif + TCCR2B = prescalarbits; + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#if defined(__AVR_ATmega1280__) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if !defined(__AVR_ATmega8__) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); + break; + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; + +#if defined(__AVR_ATmega1280__) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + switch (_timer) + { +#if defined(__AVR_ATmega8__) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; + case 2: + bitWrite(TIMSK2, OCIE2A, 0); + break; + +#else + case 0: + TIMSK0 = 0; + break; + case 1: + TIMSK1 = 0; + break; + case 2: + TIMSK2 = 0; + break; +#endif + +#if defined(__AVR_ATmega1280__) + case 3: + TIMSK3 = 0; + break; + case 4: + TIMSK4 = 0; + break; + case 5: + TIMSK5 = 0; + break; +#endif + } + + digitalWrite(_pin, 0); +} + +#if 0 +#if !defined(__AVR_ATmega8__) +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + TIMSK0 = 0; // disable the interrupt + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + TIMSK1 = 0; // disable the interrupt + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + TIMSK2 = 0; // disable the interrupt + *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} + + + +//#if defined(__AVR_ATmega1280__) +#if 0 + +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + TIMSK3 = 0; // disable the interrupt + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + TIMSK4 = 0; // disable the interrupt + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + TIMSK5 = 0; // disable the interrupt + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} + +#endif diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WConstants.h b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WConstants.h new file mode 100644 index 0000000..3e19ac4 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WConstants.h @@ -0,0 +1 @@ +#include "wiring.h" diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WInterrupts.c b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WInterrupts.c new file mode 100755 index 0000000..69a78b0 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WInterrupts.c @@ -0,0 +1,215 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis +*/ + +#include +#include +#include +#include +#include + +#include "WConstants.h" +#include "wiring_private.h" + +volatile static voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +#if defined(__AVR_ATmega8__) +#define EICRA MCUCR +#define EIMSK GICR +#endif + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + switch (interruptNum) { +#if defined(__AVR_ATmega1280__) + case 2: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 3: + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + break; + case 4: + EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20); + EIMSK |= (1 << INT2); + break; + case 5: + EICRA = (EICRA & ~((1 << ISC30) | (1 << ISC31))) | (mode << ISC30); + EIMSK |= (1 << INT3); + break; + case 0: + EICRB = (EICRB & ~((1 << ISC40) | (1 << ISC41))) | (mode << ISC40); + EIMSK |= (1 << INT4); + break; + case 1: + EICRB = (EICRB & ~((1 << ISC50) | (1 << ISC51))) | (mode << ISC50); + EIMSK |= (1 << INT5); + break; + case 6: + EICRB = (EICRB & ~((1 << ISC60) | (1 << ISC61))) | (mode << ISC60); + EIMSK |= (1 << INT6); + break; + case 7: + EICRB = (EICRB & ~((1 << ISC70) | (1 << ISC71))) | (mode << ISC70); + EIMSK |= (1 << INT7); + break; +#else + case 0: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 1: + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + break; +#endif + } + } +} + +void detachInterrupt(uint8_t interruptNum) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + // Disable the interrupt. (We can't assume that interruptNum is equal + // to the number of the EIMSK bit to clear, as this isn't true on the + // ATmega8. There, INT0 is 6 and INT1 is 7.) + switch (interruptNum) { +#if defined(__AVR_ATmega1280__) + case 2: + EIMSK &= ~(1 << INT0); + break; + case 3: + EIMSK &= ~(1 << INT1); + break; + case 4: + EIMSK &= ~(1 << INT2); + break; + case 5: + EIMSK &= ~(1 << INT3); + break; + case 0: + EIMSK &= ~(1 << INT4); + break; + case 1: + EIMSK &= ~(1 << INT5); + break; + case 6: + EIMSK &= ~(1 << INT6); + break; + case 7: + EIMSK &= ~(1 << INT7); + break; +#else + case 0: + EIMSK &= ~(1 << INT0); + break; + case 1: + EIMSK &= ~(1 << INT1); + break; +#endif + } + + intFunc[interruptNum] = 0; + } +} + +/* +void attachInterruptTwi(void (*userFunc)(void) ) { + twiIntFunc = userFunc; +} +*/ + +#if defined(__AVR_ATmega1280__) + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_2]) + intFunc[EXTERNAL_INT_2](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_3]) + intFunc[EXTERNAL_INT_3](); +} + +SIGNAL(INT2_vect) { + if(intFunc[EXTERNAL_INT_4]) + intFunc[EXTERNAL_INT_4](); +} + +SIGNAL(INT3_vect) { + if(intFunc[EXTERNAL_INT_5]) + intFunc[EXTERNAL_INT_5](); +} + +SIGNAL(INT4_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT5_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +SIGNAL(INT6_vect) { + if(intFunc[EXTERNAL_INT_6]) + intFunc[EXTERNAL_INT_6](); +} + +SIGNAL(INT7_vect) { + if(intFunc[EXTERNAL_INT_7]) + intFunc[EXTERNAL_INT_7](); +} + +#else + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +#endif + +/* +SIGNAL(SIG_2WIRE_SERIAL) { + if(twiIntFunc) + twiIntFunc(); +} +*/ + diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WMath.cpp b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WMath.cpp new file mode 100644 index 0000000..2120c4c --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WMath.cpp @@ -0,0 +1,60 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.org.co + Copyright (c) 2004-06 Hernando Barragan + Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/ + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +extern "C" { + #include "stdlib.h" +} + +void randomSeed(unsigned int seed) +{ + if (seed != 0) { + srandom(seed); + } +} + +long random(long howbig) +{ + if (howbig == 0) { + return 0; + } + return random() % howbig; +} + +long random(long howsmall, long howbig) +{ + if (howsmall >= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; } \ No newline at end of file diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WProgram.h b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WProgram.h new file mode 100755 index 0000000..f5d3e29 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/WProgram.h @@ -0,0 +1,32 @@ +#ifndef WProgram_h +#define WProgram_h + +#include +#include +#include + +#include + +#include "wiring.h" + +#ifdef __cplusplus +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); +#endif + +#endif \ No newline at end of file diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/binary.h b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/binary.h new file mode 100644 index 0000000..af14980 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/main.cpp b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/main.cpp new file mode 100755 index 0000000..cc6e81d --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/main.cpp @@ -0,0 +1,14 @@ +#include + +int main(void) +{ + init(); + + setup(); + + for (;;) + loop(); + + return 0; +} + diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/pins_arduino.c b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/pins_arduino.c new file mode 100755 index 0000000..d7b076d --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/pins_arduino.c @@ -0,0 +1,469 @@ +/* + pins_arduino.c - pin definitions for the Arduino board + Part of Arduino / Wiring Lite + + Copyright (c) 2005 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: pins_arduino.c 804 2009-12-18 16:05:52Z dmellis $ +*/ + +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA8 & 168 / ARDUINO +// +// +-\/-+ +// PC6 1| |28 PC5 (AI 5) +// (D 0) PD0 2| |27 PC4 (AI 4) +// (D 1) PD1 3| |26 PC3 (AI 3) +// (D 2) PD2 4| |25 PC2 (AI 2) +// PWM+ (D 3) PD3 5| |24 PC1 (AI 1) +// (D 4) PD4 6| |23 PC0 (AI 0) +// VCC 7| |22 GND +// GND 8| |21 AREF +// PB6 9| |20 AVCC +// PB7 10| |19 PB5 (D 13) +// PWM+ (D 5) PD5 11| |18 PB4 (D 12) +// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM +// (D 7) PD7 13| |16 PB2 (D 10) PWM +// (D 8) PB0 14| |15 PB1 (D 9) PWM +// +----+ +// +// (PWM+ indicates the additional PWM pins on the ATmega168.) + +// ATMEL ATMEGA1280 / ARDUINO +// +// 0-7 PE0-PE7 works +// 8-13 PB0-PB5 works +// 14-21 PA0-PA7 works +// 22-29 PH0-PH7 works +// 30-35 PG5-PG0 works +// 36-43 PC7-PC0 works +// 44-51 PJ7-PJ0 works +// 52-59 PL7-PL0 works +// 60-67 PD7-PD0 works +// A0-A7 PF0-PF7 +// A8-A15 PK0-PK7 + +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 + +#define REPEAT8(x) x, x, x, x, x, x, x, x +#define BV0TO7 _BV(0), _BV(1), _BV(2), _BV(3), _BV(4), _BV(5), _BV(6), _BV(7) +#define BV7TO0 _BV(7), _BV(6), _BV(5), _BV(4), _BV(3), _BV(2), _BV(1), _BV(0) + + +#if defined(__AVR_ATmega1280__) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + &DDRA, + &DDRB, + &DDRC, + &DDRD, + &DDRE, + &DDRF, + &DDRG, + &DDRH, + NOT_A_PORT, + &DDRJ, + &DDRK, + &DDRL, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + &PORTA, + &PORTB, + &PORTC, + &PORTD, + &PORTE, + &PORTF, + &PORTG, + &PORTH, + NOT_A_PORT, + &PORTJ, + &PORTK, + &PORTL, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PIN, + &PINA, + &PINB, + &PINC, + &PIND, + &PINE, + &PINF, + &PING, + &PINH, + NOT_A_PIN, + &PINJ, + &PINK, + &PINL, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + // PORTLIST + // ------------------------------------------- + PE , // PE 0 ** 0 ** USART0_RX + PE , // PE 1 ** 1 ** USART0_TX + PE , // PE 4 ** 2 ** PWM2 + PE , // PE 5 ** 3 ** PWM3 + PG , // PG 5 ** 4 ** PWM4 + PE , // PE 3 ** 5 ** PWM5 + PH , // PH 3 ** 6 ** PWM6 + PH , // PH 4 ** 7 ** PWM7 + PH , // PH 5 ** 8 ** PWM8 + PH , // PH 6 ** 9 ** PWM9 + PB , // PB 4 ** 10 ** PWM10 + PB , // PB 5 ** 11 ** PWM11 + PB , // PB 6 ** 12 ** PWM12 + PB , // PB 7 ** 13 ** PWM13 + PJ , // PJ 1 ** 14 ** USART3_TX + PJ , // PJ 0 ** 15 ** USART3_RX + PH , // PH 1 ** 16 ** USART2_TX + PH , // PH 0 ** 17 ** USART2_RX + PD , // PD 3 ** 18 ** USART1_TX + PD , // PD 2 ** 19 ** USART1_RX + PD , // PD 1 ** 20 ** I2C_SDA + PD , // PD 0 ** 21 ** I2C_SCL + PA , // PA 0 ** 22 ** D22 + PA , // PA 1 ** 23 ** D23 + PA , // PA 2 ** 24 ** D24 + PA , // PA 3 ** 25 ** D25 + PA , // PA 4 ** 26 ** D26 + PA , // PA 5 ** 27 ** D27 + PA , // PA 6 ** 28 ** D28 + PA , // PA 7 ** 29 ** D29 + PC , // PC 7 ** 30 ** D30 + PC , // PC 6 ** 31 ** D31 + PC , // PC 5 ** 32 ** D32 + PC , // PC 4 ** 33 ** D33 + PC , // PC 3 ** 34 ** D34 + PC , // PC 2 ** 35 ** D35 + PC , // PC 1 ** 36 ** D36 + PC , // PC 0 ** 37 ** D37 + PD , // PD 7 ** 38 ** D38 + PG , // PG 2 ** 39 ** D39 + PG , // PG 1 ** 40 ** D40 + PG , // PG 0 ** 41 ** D41 + PL , // PL 7 ** 42 ** D42 + PL , // PL 6 ** 43 ** D43 + PL , // PL 5 ** 44 ** D44 + PL , // PL 4 ** 45 ** D45 + PL , // PL 3 ** 46 ** D46 + PL , // PL 2 ** 47 ** D47 + PL , // PL 1 ** 48 ** D48 + PL , // PL 0 ** 49 ** D49 + PB , // PB 3 ** 50 ** SPI_MISO + PB , // PB 2 ** 51 ** SPI_MOSI + PB , // PB 1 ** 52 ** SPI_SCK + PB , // PB 0 ** 53 ** SPI_SS + PF , // PF 0 ** 54 ** A0 + PF , // PF 1 ** 55 ** A1 + PF , // PF 2 ** 56 ** A2 + PF , // PF 3 ** 57 ** A3 + PF , // PF 4 ** 58 ** A4 + PF , // PF 5 ** 59 ** A5 + PF , // PF 6 ** 60 ** A6 + PF , // PF 7 ** 61 ** A7 + PK , // PK 0 ** 62 ** A8 + PK , // PK 1 ** 63 ** A9 + PK , // PK 2 ** 64 ** A10 + PK , // PK 3 ** 65 ** A11 + PK , // PK 4 ** 66 ** A12 + PK , // PK 5 ** 67 ** A13 + PK , // PK 6 ** 68 ** A14 + PK , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + // PIN IN PORT + // ------------------------------------------- + _BV( 0 ) , // PE 0 ** 0 ** USART0_RX + _BV( 1 ) , // PE 1 ** 1 ** USART0_TX + _BV( 4 ) , // PE 4 ** 2 ** PWM2 + _BV( 5 ) , // PE 5 ** 3 ** PWM3 + _BV( 5 ) , // PG 5 ** 4 ** PWM4 + _BV( 3 ) , // PE 3 ** 5 ** PWM5 + _BV( 3 ) , // PH 3 ** 6 ** PWM6 + _BV( 4 ) , // PH 4 ** 7 ** PWM7 + _BV( 5 ) , // PH 5 ** 8 ** PWM8 + _BV( 6 ) , // PH 6 ** 9 ** PWM9 + _BV( 4 ) , // PB 4 ** 10 ** PWM10 + _BV( 5 ) , // PB 5 ** 11 ** PWM11 + _BV( 6 ) , // PB 6 ** 12 ** PWM12 + _BV( 7 ) , // PB 7 ** 13 ** PWM13 + _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX + _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX + _BV( 1 ) , // PH 1 ** 16 ** USART2_TX + _BV( 0 ) , // PH 0 ** 17 ** USART2_RX + _BV( 3 ) , // PD 3 ** 18 ** USART1_TX + _BV( 2 ) , // PD 2 ** 19 ** USART1_RX + _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA + _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL + _BV( 0 ) , // PA 0 ** 22 ** D22 + _BV( 1 ) , // PA 1 ** 23 ** D23 + _BV( 2 ) , // PA 2 ** 24 ** D24 + _BV( 3 ) , // PA 3 ** 25 ** D25 + _BV( 4 ) , // PA 4 ** 26 ** D26 + _BV( 5 ) , // PA 5 ** 27 ** D27 + _BV( 6 ) , // PA 6 ** 28 ** D28 + _BV( 7 ) , // PA 7 ** 29 ** D29 + _BV( 7 ) , // PC 7 ** 30 ** D30 + _BV( 6 ) , // PC 6 ** 31 ** D31 + _BV( 5 ) , // PC 5 ** 32 ** D32 + _BV( 4 ) , // PC 4 ** 33 ** D33 + _BV( 3 ) , // PC 3 ** 34 ** D34 + _BV( 2 ) , // PC 2 ** 35 ** D35 + _BV( 1 ) , // PC 1 ** 36 ** D36 + _BV( 0 ) , // PC 0 ** 37 ** D37 + _BV( 7 ) , // PD 7 ** 38 ** D38 + _BV( 2 ) , // PG 2 ** 39 ** D39 + _BV( 1 ) , // PG 1 ** 40 ** D40 + _BV( 0 ) , // PG 0 ** 41 ** D41 + _BV( 7 ) , // PL 7 ** 42 ** D42 + _BV( 6 ) , // PL 6 ** 43 ** D43 + _BV( 5 ) , // PL 5 ** 44 ** D44 + _BV( 4 ) , // PL 4 ** 45 ** D45 + _BV( 3 ) , // PL 3 ** 46 ** D46 + _BV( 2 ) , // PL 2 ** 47 ** D47 + _BV( 1 ) , // PL 1 ** 48 ** D48 + _BV( 0 ) , // PL 0 ** 49 ** D49 + _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO + _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI + _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK + _BV( 0 ) , // PB 0 ** 53 ** SPI_SS + _BV( 0 ) , // PF 0 ** 54 ** A0 + _BV( 1 ) , // PF 1 ** 55 ** A1 + _BV( 2 ) , // PF 2 ** 56 ** A2 + _BV( 3 ) , // PF 3 ** 57 ** A3 + _BV( 4 ) , // PF 4 ** 58 ** A4 + _BV( 5 ) , // PF 5 ** 59 ** A5 + _BV( 6 ) , // PF 6 ** 60 ** A6 + _BV( 7 ) , // PF 7 ** 61 ** A7 + _BV( 0 ) , // PK 0 ** 62 ** A8 + _BV( 1 ) , // PK 1 ** 63 ** A9 + _BV( 2 ) , // PK 2 ** 64 ** A10 + _BV( 3 ) , // PK 3 ** 65 ** A11 + _BV( 4 ) , // PK 4 ** 66 ** A12 + _BV( 5 ) , // PK 5 ** 67 ** A13 + _BV( 6 ) , // PK 6 ** 68 ** A14 + _BV( 7 ) , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + // TIMERS + // ------------------------------------------- + NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX + NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX + TIMER3B , // PE 4 ** 2 ** PWM2 + TIMER3C , // PE 5 ** 3 ** PWM3 + TIMER0B , // PG 5 ** 4 ** PWM4 + TIMER3A , // PE 3 ** 5 ** PWM5 + TIMER4A , // PH 3 ** 6 ** PWM6 + TIMER4B , // PH 4 ** 7 ** PWM7 + TIMER4C , // PH 5 ** 8 ** PWM8 + TIMER2B , // PH 6 ** 9 ** PWM9 + TIMER2A , // PB 4 ** 10 ** PWM10 + TIMER1A , // PB 5 ** 11 ** PWM11 + TIMER1B , // PB 6 ** 12 ** PWM12 + TIMER0A , // PB 7 ** 13 ** PWM13 + NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX + NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX + NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX + NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX + NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX + NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX + NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA + NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL + NOT_ON_TIMER , // PA 0 ** 22 ** D22 + NOT_ON_TIMER , // PA 1 ** 23 ** D23 + NOT_ON_TIMER , // PA 2 ** 24 ** D24 + NOT_ON_TIMER , // PA 3 ** 25 ** D25 + NOT_ON_TIMER , // PA 4 ** 26 ** D26 + NOT_ON_TIMER , // PA 5 ** 27 ** D27 + NOT_ON_TIMER , // PA 6 ** 28 ** D28 + NOT_ON_TIMER , // PA 7 ** 29 ** D29 + NOT_ON_TIMER , // PC 7 ** 30 ** D30 + NOT_ON_TIMER , // PC 6 ** 31 ** D31 + NOT_ON_TIMER , // PC 5 ** 32 ** D32 + NOT_ON_TIMER , // PC 4 ** 33 ** D33 + NOT_ON_TIMER , // PC 3 ** 34 ** D34 + NOT_ON_TIMER , // PC 2 ** 35 ** D35 + NOT_ON_TIMER , // PC 1 ** 36 ** D36 + NOT_ON_TIMER , // PC 0 ** 37 ** D37 + NOT_ON_TIMER , // PD 7 ** 38 ** D38 + NOT_ON_TIMER , // PG 2 ** 39 ** D39 + NOT_ON_TIMER , // PG 1 ** 40 ** D40 + NOT_ON_TIMER , // PG 0 ** 41 ** D41 + NOT_ON_TIMER , // PL 7 ** 42 ** D42 + NOT_ON_TIMER , // PL 6 ** 43 ** D43 + TIMER5C , // PL 5 ** 44 ** D44 + TIMER5B , // PL 4 ** 45 ** D45 + TIMER5A , // PL 3 ** 46 ** D46 + NOT_ON_TIMER , // PL 2 ** 47 ** D47 + NOT_ON_TIMER , // PL 1 ** 48 ** D48 + NOT_ON_TIMER , // PL 0 ** 49 ** D49 + NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO + NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI + NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK + NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS + NOT_ON_TIMER , // PF 0 ** 54 ** A0 + NOT_ON_TIMER , // PF 1 ** 55 ** A1 + NOT_ON_TIMER , // PF 2 ** 56 ** A2 + NOT_ON_TIMER , // PF 3 ** 57 ** A3 + NOT_ON_TIMER , // PF 4 ** 58 ** A4 + NOT_ON_TIMER , // PF 5 ** 59 ** A5 + NOT_ON_TIMER , // PF 6 ** 60 ** A6 + NOT_ON_TIMER , // PF 7 ** 61 ** A7 + NOT_ON_TIMER , // PK 0 ** 62 ** A8 + NOT_ON_TIMER , // PK 1 ** 63 ** A9 + NOT_ON_TIMER , // PK 2 ** 64 ** A10 + NOT_ON_TIMER , // PK 3 ** 65 ** A11 + NOT_ON_TIMER , // PK 4 ** 66 ** A12 + NOT_ON_TIMER , // PK 5 ** 67 ** A13 + NOT_ON_TIMER , // PK 6 ** 68 ** A14 + NOT_ON_TIMER , // PK 7 ** 69 ** A15 +}; +#else +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &DDRB, + &DDRC, + &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &PORTB, + &PORTC, + &PORTD, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &PINB, + &PINC, + &PIND, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, /* 0 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PB, /* 8 */ + PB, + PB, + PB, + PB, + PB, + PC, /* 14 */ + PC, + PC, + PC, + PC, + PC, +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(0), /* 0, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(0), /* 14, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, /* 0 - port D */ + NOT_ON_TIMER, + NOT_ON_TIMER, + // on the ATmega168, digital pin 3 has hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, +#else + TIMER2B, +#endif + NOT_ON_TIMER, + // on the ATmega168, digital pins 5 and 6 have hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, + NOT_ON_TIMER, +#else + TIMER0B, + TIMER0A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, /* 8 - port B */ + TIMER1A, + TIMER1B, +#if defined(__AVR_ATmega8__) + TIMER2, +#else + TIMER2A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, /* 14 - port C */ + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, +}; +#endif diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/pins_arduino.h b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/pins_arduino.h new file mode 100644 index 0000000..c7e40fd --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/pins_arduino.h @@ -0,0 +1,76 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER5A 14 +#define TIMER5B 15 +#define TIMER5C 16 + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +extern const uint16_t PROGMEM port_to_mode_PGM[]; +extern const uint16_t PROGMEM port_to_input_PGM[]; +extern const uint16_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) + +#endif diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring.c b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring.c new file mode 100755 index 0000000..d857e8a --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring.c @@ -0,0 +1,238 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 808 2009-12-18 17:44:08Z dmellis $ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +SIGNAL(TIMER0_OVF_vect) +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; + t = TCNT0; + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + unsigned long start = millis(); + + while (millis() - start <= ms) + ; +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); + +#if F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if !defined(__AVR_ATmega8__) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega8__) + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#else + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#endif + // enable timer 0 overflow interrupt +#if defined(__AVR_ATmega8__) + sbi(TIMSK, TOIE0); +#else + sbi(TIMSK0, TOIE0); +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + + // set timer 1 prescale factor to 64 + sbi(TCCR1B, CS11); + sbi(TCCR1B, CS10); + // put timer 1 in 8-bit phase correct pwm mode + sbi(TCCR1A, WGM10); + + // set timer 2 prescale factor to 64 +#if defined(__AVR_ATmega8__) + sbi(TCCR2, CS22); +#else + sbi(TCCR2B, CS22); +#endif + // configure timer 2 for phase correct pwm (8-bit) +#if defined(__AVR_ATmega8__) + sbi(TCCR2, WGM20); +#else + sbi(TCCR2A, WGM20); +#endif + +#if defined(__AVR_ATmega1280__) + // set timer 3, 4, 5 prescale factor to 64 + sbi(TCCR3B, CS31); sbi(TCCR3B, CS30); + sbi(TCCR4B, CS41); sbi(TCCR4B, CS40); + sbi(TCCR5B, CS51); sbi(TCCR5B, CS50); + // put timer 3, 4, 5 in 8-bit phase correct pwm mode + sbi(TCCR3A, WGM30); + sbi(TCCR4A, WGM40); + sbi(TCCR5A, WGM50); +#endif + + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(__AVR_ATmega8__) + UCSRB = 0; +#else + UCSR0B = 0; +#endif +} \ No newline at end of file diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring.h b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring.h new file mode 100755 index 0000000..8b42629 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring.h @@ -0,0 +1,133 @@ +/* + wiring.h - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 804 2009-12-18 16:05:52Z dmellis $ +*/ + +#ifndef Wiring_h +#define Wiring_h + +#include +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#define INTERNAL 3 +#define DEFAULT 1 +#define EXTERNAL 0 + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() ) +#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +void beginSerial(long); +void serialWrite(unsigned char); +int serialAvailable(void); +int serialRead(void); +void serialFlush(void); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_analog.c b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_analog.c new file mode 100755 index 0000000..529ad52 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_analog.c @@ -0,0 +1,179 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). + ADMUX = (analog_reference << 6) | (pin & 0x07); + +#if defined(__AVR_ATmega1280__) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + + if (digitalPinToTimer(pin) == TIMER1A) { + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + // set pwm duty + OCR1A = val; + } else if (digitalPinToTimer(pin) == TIMER1B) { + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + // set pwm duty + OCR1B = val; +#if defined(__AVR_ATmega8__) + } else if (digitalPinToTimer(pin) == TIMER2) { + // connect pwm to pin on timer 2, channel B + sbi(TCCR2, COM21); + // set pwm duty + OCR2 = val; +#else + } else if (digitalPinToTimer(pin) == TIMER0A) { + if (val == 0) { + digitalWrite(pin, LOW); + } else { + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + // set pwm duty + OCR0A = val; + } + } else if (digitalPinToTimer(pin) == TIMER0B) { + if (val == 0) { + digitalWrite(pin, LOW); + } else { + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + // set pwm duty + OCR0B = val; + } + } else if (digitalPinToTimer(pin) == TIMER2A) { + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + // set pwm duty + OCR2A = val; + } else if (digitalPinToTimer(pin) == TIMER2B) { + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + // set pwm duty + OCR2B = val; +#endif +#if defined(__AVR_ATmega1280__) + // XXX: need to handle other timers here + } else if (digitalPinToTimer(pin) == TIMER3A) { + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + // set pwm duty + OCR3A = val; + } else if (digitalPinToTimer(pin) == TIMER3B) { + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + // set pwm duty + OCR3B = val; + } else if (digitalPinToTimer(pin) == TIMER3C) { + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + // set pwm duty + OCR3C = val; + } else if (digitalPinToTimer(pin) == TIMER4A) { + // connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + // set pwm duty + OCR4A = val; + } else if (digitalPinToTimer(pin) == TIMER4B) { + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + // set pwm duty + OCR4B = val; + } else if (digitalPinToTimer(pin) == TIMER4C) { + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + // set pwm duty + OCR4C = val; + } else if (digitalPinToTimer(pin) == TIMER5A) { + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + // set pwm duty + OCR5A = val; + } else if (digitalPinToTimer(pin) == TIMER5B) { + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + // set pwm duty + OCR5B = val; +#endif + } else if (val < 128) + digitalWrite(pin, LOW); + else + digitalWrite(pin, HIGH); +} diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_digital.c b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_digital.c new file mode 100755 index 0000000..1cdbf6c --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_digital.c @@ -0,0 +1,111 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + + if (mode == INPUT) *reg &= ~bit; + else *reg |= bit; +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +static inline void turnOffPWM(uint8_t timer) +{ + if (timer == TIMER1A) cbi(TCCR1A, COM1A1); + if (timer == TIMER1B) cbi(TCCR1A, COM1B1); + +#if defined(__AVR_ATmega8__) + if (timer == TIMER2) cbi(TCCR2, COM21); +#else + if (timer == TIMER0A) cbi(TCCR0A, COM0A1); + if (timer == TIMER0B) cbi(TCCR0A, COM0B1); + if (timer == TIMER2A) cbi(TCCR2A, COM2A1); + if (timer == TIMER2B) cbi(TCCR2A, COM2B1); +#endif + +#if defined(__AVR_ATmega1280__) + if (timer == TIMER3A) cbi(TCCR3A, COM3A1); + if (timer == TIMER3B) cbi(TCCR3A, COM3B1); + if (timer == TIMER3C) cbi(TCCR3A, COM3C1); + if (timer == TIMER4A) cbi(TCCR4A, COM4A1); + if (timer == TIMER4B) cbi(TCCR4A, COM4B1); + if (timer == TIMER4C) cbi(TCCR4A, COM4C1); + if (timer == TIMER5A) cbi(TCCR5A, COM5A1); + if (timer == TIMER5B) cbi(TCCR5A, COM5B1); + if (timer == TIMER5C) cbi(TCCR5A, COM5C1); +#endif +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + if (val == LOW) *out &= ~bit; + else *out |= bit; +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_private.h b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_private.h new file mode 100755 index 0000000..2dfe552 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_private.h @@ -0,0 +1,68 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include +#include +#include +#include +#include + +#include "wiring.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined(__AVR_ATmega1280__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_pulse.c b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_pulse.c new file mode 100755 index 0000000..8f232f1 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_pulse.c @@ -0,0 +1,66 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) + width++; + + // convert the reading to microseconds. The loop has been determined + // to be 10 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 10 + 16); +} diff --git a/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_shift.c b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_shift.c new file mode 100755 index 0000000..956f864 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/cores/arduino/wiring_shift.c @@ -0,0 +1,40 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val) +{ + int i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/arduino-0018-linux-x64/hardware/arduino/programmers.txt b/arduino-0018-linux-x64/hardware/arduino/programmers.txt new file mode 100644 index 0000000..466f602 --- /dev/null +++ b/arduino-0018-linux-x64/hardware/arduino/programmers.txt @@ -0,0 +1,20 @@ +avrisp.name=AVR ISP +avrisp.communication=serial +avrisp.protocol=stk500v1 + +avrispmkii.name=AVRISP mkII +avrispmkii.communication=usb +avrispmkii.protocol=stk500v2 + +usbtinyisp.name=USBtinyISP +usbtinyisp.protocol=usbtiny + +parallel.name=Parallel Programmer +parallel.protocol=dapa +parallel.force=true +# parallel.delay=200 + +arduinoisp.name=Arduino as ISP +arduinoisp.communication=serial +arduinoisp.protocol=stk500v1 +arduinoisp.speed=19200 diff --git a/arduino-0018-linux-x64/hardware/tools/avrdude b/arduino-0018-linux-x64/hardware/tools/avrdude new file mode 100755 index 0000000000000000000000000000000000000000..8892ba528a1f8b151c6b13953df9e1802123144c GIT binary patch literal 704076 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

h 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 ZpwQU!arKSVgfB^e*VGmSLZO53>3_Oi6RiLM literal 0 HcmV?d00001 diff --git a/arduino-0018-linux-x64/lib/about.jpg b/arduino-0018-linux-x64/lib/about.jpg new file mode 100755 index 0000000000000000000000000000000000000000..90afdb08b193f4f77b8233fd1b4ac01e5b68d6b7 GIT binary patch literal 115730 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 z zD+~SASir^wKNr9GXy@{%uc5;^MEREH0e%f(6R#SY)UqKEGO!$O*5iNX2jMXLV&q@7 zAHJc$7*Do*q%gg`iWGWw`Z+y!tP6J-pzVbA=rbQj{V$FaM;E@)M3r}AsOa7ol~^?& z){S3)azyEB^25BFnev`&norGiwzKiww#3+^+d5ULqxA!Q9rjFtbvC@Ajtp}FYU^_39yKRYUXvMox(|X0vde!e~TURAvuyM7UC#MEV zOvMX6@A<{A$91r#5bnU0k<;&uGg zG~v@AU!UJdHguM3d{`OLK*H4{H%LYLD z5ixPU{Gl}vSE|O(>3Lj{A$54^YID@0avH7{aDpQ_h?KVQH zFgLIM<=Uv?JyM{&NngK%-0@#0`rMJ?!(7AU&jF2aMAN+>RFs$G6Wn|rNI=(9Ik7s&u z{2wWav`nCK93#Tn&pupT zM*4Rj+oiFN9_mvfBtosr8D*CKV~kn0iM+8=U>W>ZR8)LJ>E;eO8671!xc7(6^#9{B zhN*(sAU2|p5%QIUF=g+x88g^z5mupGDrV5N40c$>%<5L+9QY8CAu5K#(^!v#rCy#i zTlgPEd3@Z|`LVG-xiKJ317qU}*rR3&;k?`55h#Z>zfEuxvEyQmm-e`_*nb z-)YiJK*U_hMEi$CvJvHAaa)$0ChtW8if84G@C;g2*tI!aoHkBlg*@i$znZdi9;bws zeMe>^hOQkF4}E9rzRd>G*b?V)QY^c-8#9e$b`)UuISc^9SYv^$EneGIto1Ab z|LTTq-)9H{wZ@K^JcDvc@`ut9U&sv|*Z_lxE602E9>)HG&(`M8AIST)`8O5`HkSGg0PoC-Zu{@L zBnk-_nq)*_-LMu7A;pSTn7mStMGP?5E$hwc;oIc(pU`2lJt77j z(ZUMmZ1t! zxM4sEBSXGD%&NV0=W~>ohOfQ15^VL>V4>kUAk>9-_YE*{*sl|k^%p#b4`a69sho{` zqy=z6od-&n+pxb#UlN8d0d&^qgN;RAG-`4|{WWjUx_!T4SX;MD!}@G2Y8=pCe{*OL z_O(uxCBjzsE_em70}%{D%Iz=0`hGhc{U+#U4rx)dwY#f?4nWI`B9?CpJ4K*6nO=d0 zn{*sKa9;|yd7Cy z&FqpE$pAN^@Xuf!w?A5ySxP=7xFzT8`%qE`s>{-|ffpY!d zpaI-M+N25Z?eP}#O0TA4uTCNFPGB$A)TW>YZc1W~u4WXx?0UMAL%DG)^}BBiAe1g# zwyT&CjRj47mR(Eo`YAFE17cpS?iLPPV=-YE3!BIf$pr;z%XbFEWBRI@9$u+=ae{|$ zz!SHO0h`8l1tY3eX6p0-bH2)}|4LIMc^cI&uUtJpP51Au*Oj2^#n!RD<_g0R)?*Lr z#D6C9xDYzqE;c_Nt2;0UhIAk-|s!K7?_U~aOBY!%B;C_63E0e zc0UO>)>~g!aIrV$s~D&9d0ooasT|qPyLv1F1zYvm_Si4Lz6B&)2ARy5GP2iBhXd*_ z=(D=`*1{zL;KZ;Nub^u}qkR*vS)4oK`0Xk$!v;h%gE_b)mc-ch2(Avf7p4Op-eLvy zz0a%!KBc_iZrUskOAkzt%m>Tl(#(ouD}lyfYiJn#`ckRzdXpW2qL7EHd`kAk;tDk{q={h3OB}49o3n6(NRz=*#)mHA(k|O8^qqj;_;xYf17q2V*dB995V^Mc}cICe0Wl{Hqy4qBGcUYx_G4&*{dzW?WF& z=>y~%&@=PA{eNx)TX_@V^LEC0z6oIIfRhgMV&W|F8dm=d0V-=;Q*QmkRqdgs%*_u_ zWt&6Rp0a_rt_&Q4dDb(0q6x}F2R{ZwRnZxesLzNrXr-I9`|2)me+6f;!)$Rzqjlb4 zoni9b9UBr2p^L(k{Qfl!Q|FnA_Ghs3_79y%)%kO)fnu|FM-XXuofXP%8FV}Ey~j)p z)RF`w1Z7t?bn@dLxE?r=CpfH*g<%jheG^DgGH6fgwE%?{oFA6VKDkm4z#C?<5kD!tS#r)=|*uGwEGjdwh4S4h6)=L}ZN>^5QNM8&|hD;wp zY3U%}7xp#asY6iP-T(aYCRAPA8jbB*;Wn`ega;;?RyN zAa;0+dGO7w?Lc{W6TbtLV%g802EuGM32YIK2JF_G$fV)TGXXSc4#-NlR-D^dh|9B4 zW~)F|w)$t=!vFu{60Nu0MKPnjQ1M%f$U3;S}!}t9|qczYpc>F){ zry>;-SJ`iNAv`$o{lN~Vud!mrCdg{#YJ^_;Sd zSBH8E{Pd)br+Y%E1SaSHG8>oBR~}f|)CN?L5#Lxu`Q|@s?y;e!IarQiZ0kW;*w{9^ z>Ae2c5pTkxr|~62x6h)7KmY~0Gb``TWq96_7%QIxOBp|Z_pyQ*2JAi1WjtgBU#`tp z{gJz#)1@^!D`qBf1ttRaPVVg}7z~x6k^B%l@tXr+IjY(Qv;Wh5AWy11-m@I>JHXM! zCwnMqws?Q?Fk`kregE96uw?B@Zn+j{~Khd3VsnJte$Aul+Mu-48 z%0ln~BkNt{UlD(T78)bEZa~&~Um5sJJjv&8)*t1AcvZ>3pu)<07IgUVbWQj=0bxeJ z7PaQ&7NLZ~uK|lK*}#88K)1WywW3CVHibkm_O0xfUMjS|QCi-a77@J9Z1QPqBKc+2 z{xkN0te1y zg0b=Di}S}`-~-7Uc0`gZnV!6LH*{iuUJte_#)R?VIL;_86yI72f%lCGHDg(edqFebOZ;13WSm0N?OA{ z3(E4$)$en>b?g6Pqn*6^icfzuk}pV?N>eMG@(Tw4#5QBhEyOVYlc#x*lc=HRc0JR; z@qr*|+x-@L#2-8*XGG@M3Df>Q3MjFqg zfm^Jt7mYw-Y2;Mq3{SncfWM{wWvYUf-Q|{1|Io zIs=1|nNQ?ImKiL<#Ak8^^EB3Fx;;e1=GFO6%o%x~@|lQ;f$!8$I<8qUoag|Zga&;6PJX{9U|LbLdvVD%nT@;>7kmONaO!_8||WX zIJqR@fKj{1>N>gPeL*$ zlzN+G#*`EjT!=z|s-PoY@+V-D3e`Fh_J*EogxEH<{gQQ06Zg z!vkpKe|~};5X5&xr^s)P6(1%$Yz-9;d4N*h)xa`kR-mB=zc~ndp;yxqBae!1Z-A%S z;StD&Z2`&fuYGNYBAq4QP>@`={pl#UXErCh)9DG~udub}_E;YJ#6|{;P13Smqit7- zNk3A|#5HJ4AUZq(YCw4`dXqs4Q%+Fh3F=^EPV3@IX4gY03oU|NpMtfx70&37UJp6^ z^0AYnv4Zk5fj*wJmxC&^owD6#oH?%EMENn>U=rHPfE{gFDkv9H+G+vjuRr%f%a=s8 zS?9V>^_)ESvqsQZD6TZPY}AjMUK32R%mvdd@8t%fZBCV*$H+_-7f2sgUv5Rg>w{+~}n|GQ0mWKF3GqC7TqaS?9VEDDaGLEvK={VlDS6H8UB-%g^z38pP7fn`!{1z z^MBI0>USwKROlLwS)S{UW)hf!h{Cp#Z_d%1cm_@OHvK408N0$HXIrd>u2+Nad5$Yr zPi$tw{>ThTKFs&b0If36N_RzvG~i%hYs(?+A^X5dkZd1s0FSR7_lt>KVf(Yi8;j0} zocPU=KN*zO3R}Qc#%0a5ZM{oN-tJpw>)?b}GkmwIni&Y#B<6-~HEdKiV>~zE+K+nJ zm_L){-0!!c=Z#zhmeWqVe`2an2RFRNBo_uYkGa3y-Ui=e8=edHA-{eLEw>Hef5;ZW zQttQ8K8yl8$lklTI`cr+B zL8v@ADW#<7{|P|Z^*(w&zAHX{fY9!+Xu#4~VOi(4!$aJ!-U|dx-YDh zG`+0xd^)y2D!Nh6ItWLg=H|M-a!x*d--yULeJ}i*_gmyXjjzPg7~CPpWO?aJd;bA} z9cmw554fnSP*EG5@}M1CpL+-Y`+OVP;-;Lh+ZM@y*u9 zH5V`HOS+RvObR{5wt2q$=c(_rqf*g19(1PfQ7QdapRquj%;LXqsgoUiUz`87tm9;Wt!<`Oan&kM7-z}< zd^H&TaOeQwdna|3gVGY4l!;Vvt6uhVCi!60=}OP5F_wS327%?-a}BYKiyy`_!7^~9 zpJBhK=mbjH3ZT0|(lU>T>t^4Lv>ZJdj-uN!N_61;K$r{)aqnPy*DwAQoo{e5Nom@~ zDQ)5h_sJ&}7t9hUF8?(ndZeDS&NCwjrFqa!RMJN#j#67&@Kv?9%lYoY{p2-&%jcVf zRMj*_c@J*K2Gl&MQUI~tlD5`WSnwjVOWdYSrzs^oJ~*4^-y9A(o0PF7g`|u2kvD3_ zt70tr1X9w{XtI9495koRI)GvWO`?=2(qqWHx- zPGswqB&3wuzT2Q=+br>D3;Nu=@mq-V=hK<)2}CD-zNGvM5L5YB%A?K^%XGk#m)RbE zr6s>*nGc>W`ax5@`03!y)Bh59+qBn_e=T-c`gktJJ*@DYJ zm+H;d>&`wQ|FH`W$fHdv&RD_? zHjy+Ce!m$UFT~-Q?5vE(wh;qcOax{*M9TMXIhWi>0+z|!KKr+%A7<<+4Ma9ys=Nlm zq6ipR-hQ5*eON2lsC)vG>X+DIAhl*pn$5xHvq51WOLl|Bf_h;%3{NX^o`FOo)|lHn z6`u0)A>lZa;Qh_@Im4{KX;F{aEg+rg&wx_Wdcn~PX|G0(`iA4a07)-G14y)mr9c#` z@>ftFG{sFe2rBiltxI7_m#~)m@}K_|2f)7r5 z*;}ArlcnTA5Cp^LnE$CLTY3!Hr!`*s=*OtJ-*oY;FTse*Z(2ETbGZela_QkCZ4h+< zMYwh#g}1T)>aMpyX36|aDCyAM^RJLQ-~@+hU@O7RA%+)K~{Pmjy=O?zQX3PY-S6xp~|ZIz}=Jyk-3_{ld6E-d8jE@wn;r^V=gd*N~%C zd7{5kvrn&6y#q*m-qVda=MS7EY@?Dmj?Ra1^&f1@Y#(uLL!IZc_ppB*bua70iGVPt z%K_~`jQ-)a$iOrhJ7FH<33_}D`>iqF>6Uw=>CcdZ3v*7H7qS)@8Wy}>+hVu< z$KMEQoB#6vsck-CVUho`@-riGryvguAwc&a=hJVF{=Y%|jNO3E4l7dHFA?}W+YJ9h zKV~6noLdO1h`(>DQQe!{&JvfK5FO7z@L|!A z!s+!kDapQ~Ig$-(YIop$5s%;7m0A`gp@4Gnb``NuzvJerk%h+0;q*sJ%4bZojk_C5 z1T`~O2gvulq8xI&FSVvyOT~0*Xk5y4<)V~o{OZg#(OXFyX8zmmDrY;a36723oUct90O`S8r&SzfZ;N^#xSQu5l4OSLUmjC>`m> z7nNZi>-Z2c&G$a>IMKs(RS5Fwo(i-u*Q7lnr&VNRq-O}lOMf1p3d;-BbkDbqPfR&s zb=9cV)Xvh|q$)(SCpQBLc@*Mn5glzQJQXFEuScAeTD8BmvZ3mCx@+(tQenEKt^63t z3T>|EB6l+AeX+QwLWq>`U81EGb@OxU&4crfpp7Q_==kzWZm%mLMWp&|o>4=LnL?mq z3c1I4*j>$+zd5I*;Zt&Fux|LdHVF!;<x{6!C2-7O->TPI7npiou zX31l&ZS5~>RB&tQ1?;AR_z8MOTv(j5OPDR6s|4pp(Lw$Ir%m2UazHRq24X5|I)Z+I zQP+N)80%nREu*P!c8DoMjd?|G6QDmYre7VUIv8Vl>4`qKF&~R&tM#-Az6?(cD% zK6w#@3K+Y=CZNDuQ_jpWg~hm>v8;^*Q!7174@`5R*)516Jy+esUwpAIAUc~c?@yQ5 z2ufK4GejNJYrnLI;-K<6>tw6!ZMWHPALQg|beM6S?PV${A9V$8^xb-E1UPbN!}eg% zz*7~0264)PW5dQ}M2YvNf7?cJnMhEf!*33f;3?o2$0}gIIj)6giW8M%0}+c9xN>34 z?0WHUjv!oB6suhJ(N%+U1Xk1+W$DopfVMDd&GhJuf`FxDs`CCn+Xt<%UsMG1C%d3u zCGrvl3#EoKg`TD(MuV9zb#M);o5>!HYo8m>Cb1Ai_AlBaZvu1!mWRvGzRyswxggymU+#l-j{Bk;av8>?v2$ABcrAbS z?T0KHqNzI?F-4Hy+*VztTN7an`NC7urCrkj!)#lGcz-qOultaG`LyceA&*O+`$Xlj zCkV_j?V_Hkd2s1UAlZLLMIe|-(T;nveLz(D^ZiJBNE<||fXFMxeMA`dUy z`m-XxIM>(RIgfMy%^_jRz{%$sqy&{-)8!m?TU}rL&9Ogig@_Y7Xa1W*%C;k>P&3bL z7|*_mTAnm}rlR$LzI`Eu<~!cbZhT8%4hjl+f>J@cG$cBc3OaVex`o<=;QyV}m4jP; zXKncH62KrppKnM#a;%S#GG5?vl*Gr`^z_{}l2 z**X4}zynb`1f|qQ%5NNydD+fZ!%wS4-PyQhF~f1tw6cxg+|NZ+3ALa>lt+4i9OgM080xE{7C27B-{r*6 z27V8Y0f~A?m|mMO-5(1+$}P6MKPk=xkrd5Jm-9>ZY}hN@K?EmovNpj=%7X;v$P|9) z9Eu&9B}oq;j=}+PI|xWFSHPKdL4BJnZ_jq2vjb^?^0Yk)B9xf|9iVDUbT^hcP@;pP zD=mS7$@U>`rWR$-jBZ~jxW}R;{N|YbR3UzN*~jnN7ZeK@1F+wmw~Jp#HaoOHxc>>B z#&(s*b)rtDLWv%5H^N@M76b9cjmZwijVHhQ%`q7ADw5<1-Cy-NDK{vFBc%qc!0!nT zv%0f}J8`_JC_ab^VRw1}q|-jamJ7+R9(>yV2gi!)@B&o?X)IH#fiadtBi;e^-J^@* z?DdP%bOdone9OE=wXk!z8VXJ?0efeX_nFGAD*9$T6ItIOk7H`$^43Wc8v*(r1ZH|p zcN5MXbb_wx^qWxj{?+oJrx8&WcXnaSx~kB2A>B$Uffss^5{o$acGbx|=iw(yO_1{2 zrLpgW>tY=Nm!L=K6aA=zT16~+u@I&2oz7(7_N!Emk{!7b%?CGW$}F$1S$IZy9-%y# zDjw2?+1q5_ZFr(~`ZGO&2vpIby$<5p8$)2%KM{Jc^vP+hKbL==Q8xKx&pn)|!5LS};3JPS_ zK_O(LCK%(zpO*Nuz?{HqJam(V0mn(X^GR6-$;695{TaYl9)LCdpAWlw6}oe06-QUX zf%s9N4jRAZ=(VSvno;GIOS13W&3pauotcjBlY3+Tr252!Sla|4Z}g|FY(6^O7$kPA z@cdzzX!e@DUyz8R)Qc|j4pZGp%?QJ$Z+FXGR1=e>72Quh=!hO1^18n9d=Wm`ZQijI z_|wBtK@a8z1VvPK{pv=ome))(i!Ut~zs&+8;R8#STfTkN@mU!DU~bH0BpBA#xp55+ zw$?H~%W(us+$IalhCa5^6RA->CGhVr!+&@!yo-fQ&124Fu1THi_LnuBl3Jaq=6_c# zWMm@Kt!3DnZnS}utn) zEO4K*>r*2POzhFOQ$N0V!4&@G=9S9lXldcsO>mpMU68|=Blu!+Gi=kho148Vs;U%z z3EtnW8Sq!}yyhM|t--PLk4paKg;axMZStpYR0*Dj@i+kC5}LPp`T6-VjP!APnyu;J z13=)5a^@PRssU|P9O*?%7u0bJ`hTv}2y)PMN{ zfh779nLnK^9Oi$zS~!Z+opJn}8$wj+pFifJ#pz=Jmoow7+-degwhuA00Kf(H zD0o8!8Uc;PRkzsv=6G8ikE(LQ?awEkfg^VxKklG&_P82|knaSB4IsV*QA7&0mL#nJ zX_F3|`mNP4V3VW3lO(jLqzR<&eL}_0L{;xpH2WZ-IX7T@(Zfd;;M_ehI@o$#_Si5> zdt-GC@+0}bKKL=be7KJFB>O@~P#-5&oE3yd9as{7r6k;f@w1PUMph-7t~GCP9X~#8{>d)=nB#c2p?U(gTgH1(8LrR83DzEzyxgETXvSPtU1sFP_Mu+!&liIHW~ z%KO5jGXtz5G9z>O8=ITMj=tAr{{y;s9SUO}hQfv#SF-32XM7S>J*N;JllXeN)OO9U zkr9!BE=4|Ke)%w4Ko+rmJx?i?VtY;uLKTuO3>L!eb28Rw6)v{KvBv;9tMS`ppYaA8 zuDI>KYMBu7g(A6A%NohLvkpZb41+n3Cfp14Dv;2{iw6EbWuN@!7*#U!5AV14k5{ax zqpq$PvtuXxKw+$}5=JN*6B+J0_LJ@-4-`1El-XXb63Lh-B^Dl>8{!7ijEj*Z9}{ee3+%(H|# z#nXydGys>)0UfGg4^XC@+oXq}lsQ}4=i;|QY2t_xjqGc?UrVDup~&SjZSj;xA|PN1 z!iph&91j4c5pndrt>Kdv{w(*wO=ZTDGSGN%YQslTBw14LG$H{%$Nm=hc5xx-ed0>@1xh1Q`Zps*&4(Ff7{Ia7zEv3bqe*5h!33E z_fV^(FB(-pARJdQV_uqG)#jzAJ9(0Uc>gT~t^D{(o5)rpqGG>6LyuM9KuF~**=(k1 zq`LMRv%O{;oC&)i1|kcpz8h)d%ifRlsyd}9G~&rLV}|YN=rm2jrlLh@IR3nT;sXje-G%6hYs z%%B4BT`|*}Fs4L(A<}eDE!DNB57DQCYzC((A?%1)*h+4KcEtJbi_mJ)7|%dY$`{md z{%SS5pR&zPOa{O6)PcY^q2Nj{wc3Hgb}9r9{tDRW2T-e)83uHRLx+2`N2FguKY9$; z8`g0g?5yA28s<&+XL)`_`qNFSeu3`ZSCKT0IB4<=Zuc0B%qlWl17)4f{a-fP2Azih zoEBG8I5h$;aOqg%JP^dh(NHS>?CuZ{KFoe>>ZNAUzEmHCAf^GfxAKnXUF2mE)H(7I z6gb&oEVFqWjN^F3%i^Cxvd;q>+`i&-zK556-;S55Y02^y$TOh34MAWPsHzkV>E9fO zScoAnNW&9}^KF;D&TRFQ{kJ<=i~?@aZU#)^v+@Bd7Pmvb7^O_iJ%Kt)Vs{>hJw!2| zAUemBCwUbYc<$4Y>eUl7@}+q8f>gPzn`R?!pYK0V6PW?)e1OZ-i2lG(x;wWQvb?SW z?vrAWvC@L<)!!VGcgFekgG zcov0NB0%x$xoJP=kKmY@IR(uvRcHcYKLoSH5TN~1NWt%3I;xA?p!kMEz4l&SMN(#g zu^;!SFk?Mk1tpJva;35<%2SJwK^&wWw71Mkq$(%Qf$VSr65db^NkCdktJx-z$VW^V)BYB9sk?POVVP zdo|gx&tMPDO;a^)*mX8z+j!CDWyl%-ZT{wP{RZN_K4`VBi0=_P?yil*HAll1NknUX zH*(7jeAJ54v`#nnipA7Z?yvf%~r^ zJhm}k$*cSEyN>;reMst;gWuovmY=rS&3sT=yCl?RAj!(ba9LTAtfH@;kKcZ1qm&Dz zcUL|^u@$|1^GfH+vb;+OQc6a3B9hXQU)%*s6aOf)+I*tw(Ra{)PzF(y4S2E_o?rx}1MPg_?%rS0h!sZABu6E*O zzB_6R-FVP;%8*OX@g9toNr`}9PV5}-UaC}Vto`vOo9sEHMK3XTT^skFSxwsEoEecc zs_bxFjOqB=VTuJ(dBs}X!QOY4-seQx*39fq{h1n;i&v^o|G%{CfBE~9%V_$4^TSVN z31BCShJqP)|7R{l;g&QUb@;{SO=L-A0qKN7UAa_f@Cl&mLq!pb25Hz9KpXt;DDD55 zl*6(MVBRI{<7?-T`xx)%mtF!*aLFgb!W<7QX)`#?u|%FOa1;tC zr%7BAQutJ-$eR4oNc!oxs~g2?I+Ww zu%o&tQ5d)$b6`?S-1zFC6ATZJdPK)nJjYkym`gBcd>E?EDf}Bz@)^z2L{Ht6_Gxl? zo4rKWbl`J$?rhRPtr_kS{+q)k>` zKYu^u3N;m|GwYW*$9kUiY@rZAMHK)h(Sl_i&1$u?&(TF*dT)em5%$4YIDd$Cl2aWZDah0k65C3A(X``u; zOacE8h4m`n@q+gyOgLGM#YnGQ6`GY8WW|g*R|jWQXxDXU5ziVk*;qE>+J~=(EaV zTeGF%rFi1m+d;bGR3F(@8;{kuwKIDXb*?jBvqjRKxL7y7sPm5rz({i(fq6{#D1L;Y z09;at#Uv=I3(uS*Ltm5UkZYEB+~72dg=kT?Obdnr`}K|+--LgkP!>3rKKPUIt_efb@A5lM_(kDFp>I{&1wX;5s7~q>>Ut>@~4uW~t^{b;Y+SECiW3Q$+k47D1{d zFGNl?hv>bU%Q`+vp0QmW0O=|<`rxLzP{?T_=%P!|?gQjS=L(XPMl4(Jj*u295M(3u zlGBdK@;e9pKbhoOYWDCK*q0&~u7de;iz<6~n)dPd2Vg>)&m5fCPkVrS6qxud3iYiS z)q^3VEvxf-{bcH9&UB9?ex9TGWY8CE?Zy~pOP(Jn1c99qmmgRh?H;5Lti;8Lb0>P* z^F%quAQ+4YC$aow5@}fNR+XvyuG+8=NZ#=L<$hC;J*FZ1b?gej0aqyCx43^Y&5;sO z7n?7f5Zo{MTz1Gpb2@;NPB9|=tOgQ89{B?{kwsD$c;Y&ZDC~g*9q7>d*0CcT?QltWwK^@dTC+n{8;0Rs zMp!`aFh7~l3)c(t)%SHV^wb?$STWtu_IQ&YFS~q!I~e@7EYeK`MgjP%WbD1_?M|=^ zeQt?kh@;;DrL?eS;v*0u`W$FxHtApOgT5(|x9%j4t4l4$)}2@-KwD=)aQuPrvL0*_ zlC_f{qgN6D!uk)8(!T94xL!G?J!XX*PZD(_mbrD!O3h)%LH!+B#$&HyDwvEOt@nwu zq)#eh>DLhSX-gmekeeu~NLUaHLrV}a%7Hmc!#sck;P?%@TX;lhwfDzgApSN&jFQBv zos6rl-11XobJ{OVE?q&jeTK;qH!~+$Q9lpHz~=*P&oD4C$%iP7}#)mb9%tP9smd> z=PCi>11GQ`F)$+b`7F@eZ_V4uvwqcsrR%YQ%INI&Vs78+h|*{K^7a<)D!)d1^|naL zBO=KPDQs>d2$IDTU^upZlRoJB2cFa{c%ixlv9v{vP7sRvA#5Be)deXJ;~s0|vbZ@V$T9D8Alx((Zh; zQPW_NMCi;GD;SwX@Gt0~Ze!O)5ViXYvx2!KN?Z=RYk4MBH&{kvcL1ySTK1j4hU|~GwnXMGwNXXkofzPPG4be zwKeI(97bgStY*`M`#5G>b$2vvDZ=1=PSBUG7Ow5A$r_)^uOY=9$~ULAD%EOpyb3)U zIW2-sN~vdD$%%6#VU4r#Q@ zn=*qZd2Uu^TAmh#?!z%UI@&DJtA=+`$pJvN8UW-~NR#8K@_#QIqa*^5x!8^=$F z)e0GoA6*VN8@kJ`=T=%3!^4WiQ-h1obAB)CUs{%m;_I@B%+Et>Jz;-vbMKHQX?WKC zmCUs8ii2Zqu&b*RAM*hJv!L9J*#)sqFlUKH&}hpSt#>}L&C&1h6WK0LU#9C`-`AWp ze{c50R*{u7W1u69+aT$iM_61y*yIBJghzfnx*6!ge;v$V13Qo2r|PcBX;dsDp#pckRl@!lJN0eh#NGCqAp0hf}(K(5;{Lbr^ zIhomOI-mCf6dXRKXis3CZmcVud9uNNpUJkSt5kfM9 zJzUW-K3-SYV{dM!=X#jNnDb86m!wY^xtYUUOk`?mm8)j$D!=ioOFd{ytm(dQx7}U%^-gQ$v&k3pbSKLg8<-ZDTA`J6z}PplRJ+mE%b$f64CpOS zisAda&BR&wPIWSO?y4nUntARz;sp1eS$S+$iCU?Dcf6S+bTERK)jA$B9b z?>=#jw}{-&r8`6`>){?X@~b4D2$gV=F8jnkagTPGHRLB}isw}HBc_!y{n`SHJLtyI z(0K1{u`UzT9yI4_jA5?dZSxx@+y+Y@yG-pPV?d|)c@e$6m{e=JHYKvOVPVnUlUqUg z{8)Y7`&&36_LJ6eGJk3@2CHUmb(d-PjSBwNlO4DvRd>p)pi5Qu4OohHd1c+es{Y*m zf*0o2rl~L7T$D}hjywX2lmZ?hVqcYKtc7eWQbu`_IhGPnnpc;#9zI@s%4shQL=s}G z8Wdpz#_ASnG0I<4Xg33LtSHGcJwP;9O$X|G4ss9`P)!!TzVU~{RTm>@(GhSxUPDm@ z?fyXyH`bN6GnI>fGKo`n-TF!+w5T}{XI9L?Fnr0}`&2k`pm(p2?s;ZS)ovzjpCDE> zb7Xcka{zKs1O6qTibslL1lg%MoH^sPMJNA&=MDDBA>zIS>>IUHy^Cp5Gw@?D1rsBO zyNSGv4Tk<$v#dBO((uNTh(2}mfgQiMCt)bx-j3-Ze{7W_H&fFai#zo%MzMzc#XP&2 z*-85zS*$+C2uPLSU8YnHKnA;}yL+@UI7m4(H$^!(6r1_xN&+UV^Zu|sfS8e`z!B>A zk&WVPPy0keJoo9$j4ZFFXj$BJiz3`+B@>nI_d_OzC; z^;F|bJAe|M_lCofSaaY}MV@BIc5!BPY|O!v^EpK>LAsEWKjI9?l&kM~$TQ^O`ud7_mq#L@4YyG0MmU#gMjwqFst z6oPqxWh0p#A?rKf2Bklm4jO7yVdshhdm5TC6U*X|Vb+pyDy_#EMfvP-WjXP@)NH^) zIiAXu&_#59v_RJw%=qEov6xSD-`QKkqrropn}PIZ=V_lSYv5F4lvKfTYA8i#v2A8` z%!?65^bZ4cP3)v%r8HIH?G68lg|o3puMj%2z#T{$t=1oSxgVP zocRRVUbMf+jMs~4Pz$Bq65OO>z&D|vq{8C(an)<@FS$>OrIR=$k zY@jNAVFA*Mz=IU1xLO!t8#EcF=hM31ae!c=xT671KAoaO290#NfQcorBrN6G?jH%` zOTU;-&NR~9ADR2 zB%6#&u$TV^VET8(z$H15Bx_d`1p%XkUoUl_d?7{gYzR`sQoxdoNBX>4ssVKzu&S+n zPGCaZ9Xf6RSdNv&x2hxPA79KO~9=axZ{_s!7_}i7L5G$2jD2%uy{1m zq8CM5_MSt*3azReg zL?@x2Og~2Dn~9GSQ7@;tp|dyOGz7Vj*sNdo>y9kkIzab!dTy4uy>&#rt#lV7D74EiO6s;>F_3PY{Gn@H zz2aBkCZPoM4=qgGMVsone@&&?JN^v-dL-DH)a$Jp41*<~V=i!7+P)#6$Lg^Rw_faq zlMyIacm$_D9Q$r`Ik^$U`$xy)V2eE0*$-wfCxLcDm9v1U?zhu>-D2Trv~Ji)-@L(Q zG8!m(-8|N$I)7N(g!syG_4U2B+r32v|A<|a@AfKu_D!TYBFHvnK)l3?E@>yH0}~a0 zedLSE;Mc8n_f1T_jc3q_BZ{fSM^1%=Y?oa8?rYggcT_^=}MMc%2;lAT7@*y zjH=_iZPj4rb+tj^!V_hh%Tu!QKWI0jALN}t=A5%*{&FJ9hI~uaAgOK99cXU)&jO_| z?-291i|REuZ=^K=&8;GZlPl>N)Uv~*)XKJm-u-Xc(L*uj=H{p4;@*j0zs4H>j)?^=L{+2*Nyv1W zcRPtU))4NjN(iOuj=Z@3Iq?t90-lQaUC`seFLL=MYmBP=71lg)cT#EXj5jI0aCcQq zr%p^EXu*q>tNZEi%sMSKtmpq{v~kkes}d&T1B~eYwLQQySUJARd-(bv-Y?Uh#ov@Wc;6!w}ae*f`cCoZ|lj*@@KjVWj@joO4Wf0 zO`4<^iy8W-uZn<$Z_qXI-Ze?{s+}*doe8U&kTOd(25++w%6ui1k*en`LMAiLKloK) z@cfs~`?FtF250L9KpTtT@H4+GH)^J&Bh7rGrlhgJZdQXSXw_`!dN*&wMp0E{=@T{X zxXyk zja5B+%%Sn)ZR%f@tkEf-%rb0VGZy3+*&!*VjTX--$eo+R2<-9BgC&>e`EKW~x0^yZ zE2{vVuNm%gh-s20?T5Qrje_OdxljWJy0W#UN=isRI9UF}y)OYivYmDpeED1#$(Z5F zbO@c$p)rkn#?Jro3kG1vyD5j4WYgcQG(Hqj9@*~su4tk_}NY`qXS$8A{EjT~^;?63Xn;dTuMfM0P792jPIE{JP ztru4>U($aNSEo!7RqSAXQ+i-{A*V*%v;0USFmcxH!V+` zqHkzzbX7M)PdmSetqg5eaHUaQr{Za<9ocEX#CTwTZ+VMezO-Ws!*?H}fhgX3u3+yt z?nT5yJxG_|vLz5;kIPPV4p?c5qv;an9HO~O^$LKELn_gh0E~o{LZY~w#f6^t_kl;V zN1p=~pfwXIYS>lu&fc(RzMb%r#|ZJ17yvG*3Bc*emhf9HW@2b;EHjYKHaBn~p!PD9 zxbBBbr~!^KprS$>O4`E{%diu0_R;itWPI%aB*WjfSr>(&(}x=)Oc&o}tx<;`m0rgE{P~ihWIF4B=;#6G`MFF@MbiLI^98n<+56PVCK322EV{>LVVmT>Z z*dHS7I0#K=Tiy+On-;>noJ_(j4Qa*`afx6M@vL(%61Q%5uqenrqeHwPZ2g21D-+h@ zQ*>mpHH7D+_%!z20;D7PS{ssd8GAUm86`;fQ%RurA&IM?b_jSx*P#DRNk2>c_}kD@ z(%mB=N|Tuq41d%>uu|tF3Ru=g#x+e-Atx&JMqp>Fzy`MR6FSs61PP(XC@Ry2h%4=miKT2^5w{Uvdp3p`8GK3&M>h|9O+S#9%UMLQ`?%#V=%0JChse9@%cKMI4ZS1ZjdBHwV z`EvLd0_0L}{*&ox1fXRkB=i;q6L{P3dpO1*eqqv>;mO@0Af!+ckmMy_gCpjU>-La~ zLzhF_>>6F_ZCh-i-j1Cy2t>1O67UyM5(4l#Og#a`zJMf-(Fsam_UiDM>!T^4<1iXueA#lI-op zPl%o`m2Ah*3LWv#GEW4Ic-KF0W`QochotPdQrtRUcg~`S~1tw81G#N>jNVQ91p-ppE<4 z*dijHxuPKwWUQ{PgUXt+^^W;#Jw`i;_6rOnKO~Z7I*71@z_(n|W423-UaHU37itmiZC2{XN9s^@>apwRNu>E1WLy7;~_hsTp&ab3b;sZtwC7{=+>tkBFA3KErb{2gjC40iS6~hx|CZU&|_w@-QrsU8fH-VAR6??Bb`ZMwG8M z&%-yVi82B}oCy#b=S^xmfV9#OQ`ma!q)N-#2g&pEBxn*((~+}R(QCOJjGZ=}yGH1!G{IS?ft_m1xe+G zxto8LI=PwtZs_OB7)vx;H_Y)GD^e=%1_L(&-g}U!v6V+3p|mvOUel=I)U74a7vU4epE?*xxxaP#fFI zUw@?P9*U~Ds-oj%r@eaKv0SIA8+TLJ5}E34e)l)~ocl@n)^^Vi2jXul9Cv(K9UV;P zyzB}>;T>g-v}w7a?YSshVbj!p^}QR(u`fuhm!C$}C0TK+2R}2%`bBwr8+s$$w{!4m z*+)kWd+45~&&i`IvQ5=0P3(h%oz=1&eXc^OMnbvSRJ5*Xda;s{uD^eJ;Y@lFEL7KE zu6D+&uGD+`$cc;RW0x>b5l_*39SNc4)RFUO9^-m%spT!CEOe)=NxI&`K5I5Aj-!4J zTNr^`KcPktF7*$W1pSL%Yj!}*!}CDApK|gTKz68(V0W~ZmP2N+W69JU;b8AocAz5% z5(_p%*cNOTnPD(G6%n5*e_|bjSo3h*E?+Qu{WY^MjI*x~R~}%n-HOC7DfxI$BM~Z9 z+)8lWwVb9yx#%j;nMj9Ros&|BwnE5HYT=BwO-<&+)bw&>H}EiNKqrC&f6;LTXVp{c|&sbI^g6M9nIO zd?0IgkYYrzZgIvomC`}dj}Se|0M@6PALy0f%H6`}00sf-qz%r7;9{O)EhgXyA@HUT zfX*Bib0E9=1ck;Oat))p;HgmS9z~=@Fds-Fu#O5m2U%`7K-@)5tqktKsk)>0-|LXl z;{~!V&j4`-U(W8``rn6iaZ`1gObar|ZUcH!c=FcW9%eA(DAJn|<%-1vJ*8n5JRNng z_n`hiO$7~81s4JXP8b|7S8%PV zH~Lz`5PK8erSwoD?U@1dqzT#iYUsOf5~p@&ep67xDr@}%)D;NF^aq;?&QtF!B-j$zl%J~%0v{P;I^9i=-=qhA8y%VzHvs8#8`*@I z)X|_R&vgg^=o&Rnc6^Y`>w9<4yD}3@#e}y^60)dC?7fBQLHD)JXo)}g{{0_+t-Fe9 zUH3~(q=>oirt2DKpN>p@-klf?BTJ4ww@5du!8WJY;O#9^EVMx6=x-#HuLEoNC{`}H z`q#TJ|9d?DzZd4i``CgHhvXo5PB+{LKybpO+?~SaRZKqcI!XWTA1@q;8O_j-C*f|B zh=0ozs9cC$R0nm^XDJ0oQb_4+MW%@vjO`1eKjst0$Zmf|2{WF$c&wp1A;fE8cV(SJ zAA%h&cne_f_kwQFoGhYv8IohC!I!jk=fW_9B@86nmIn+wKz3bKf+r9dp2@}2VDnE7 zjBvVbU`?&Aj1fo-UACi?MS7_M(TFZh(l(3YI-pNkRExekh6KkaWhtlulH5zsRG+v` z>)D6QpHsLo)NHk^;;sI@|31f>(?f^To+df%V^C}T?2$i?C*5?X!mc-w>2Nd})edyH zKFfo!@E**k=h#9x1NHG3X?m|rKB_=MY>&jScKJ<5D8F!pVc=-F>{+D~2DWyN+r6`7 zLES-26@At1$S&G&A%)6#EPfSHyrpfbP+VI1&f=OSVTk3fMWAv7hy*)NRepid$>`)N z%M)gQvEdHh843o W11DM5O4u2^wDCT)ddTu~>i+;6c+36( literal 0 HcmV?d00001 diff --git a/arduino-0018-linux-x64/lib/antlr.jar b/arduino-0018-linux-x64/lib/antlr.jar new file mode 100644 index 0000000000000000000000000000000000000000..42f25e5407012bc8fe5a18fda9fa5b2e326833fc GIT binary patch literal 443876 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

@32dV4B|wON<~`P(zZ&qV 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

6tEy?3fjmFQaJAyv=>fNhY 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 literal 0 HcmV?d00001 diff --git a/arduino-0018-linux-x64/lib/core.jar b/arduino-0018-linux-x64/lib/core.jar new file mode 100644 index 0000000000000000000000000000000000000000..db101533dc17a4fae5af1410f8baf83489990cfd GIT binary patch literal 230539 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%0DRwuP8#v~5Mf`<*MNVE?X3doWp+MK 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�u(~4=4!KDdxLLFCC*uLmF6{2xrj^8%uJl1hW(p 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 literal 0 HcmV?d00001 diff --git a/arduino-0018-linux-x64/lib/ecj.jar b/arduino-0018-linux-x64/lib/ecj.jar new file mode 100644 index 0000000000000000000000000000000000000000..878a32cfc5d8e2f86d536200674d09f4d3eb266a GIT binary patch literal 1647271 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%0DcNIuR~i#KcW#q4Vza%$)f}rRN=xh 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

aPeA&?MLO`Xu~6$u-&f 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 [, [, ] ...] ; # are quoted strings +# desc = ; # quoted string +# type = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic | +# avr910 | butterfly | usbasp | +# jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw | +# dragon_dw | dragon_jtag | dragon_isp | dragon_pp | +# dragon_hvsp; # programmer type +# baudrate = ; # baudrate for avr910-programmer +# vcc = [, ... ] ; # pin number(s) +# reset = ; # pin number +# sck = ; # pin number +# mosi = ; # pin number +# miso = ; # pin number +# errled = ; # pin number +# rdyled = ; # pin number +# pgmled = ; # pin number +# vfyled = ; # pin number +# ; +# +# part +# id = ; # quoted string +# desc = ; # quoted string +# has_jtag = ; # part has JTAG i/f +# has_debugwire = ; # part has debugWire i/f +# devicecode = ; # deprecated, use stk500_devcode +# stk500_devcode = ; # numeric +# avr910_devcode = ; # numeric +# signature = ; # signature bytes +# chip_erase_delay = ; # micro-seconds +# reset = dedicated | io; +# retry_pulse = reset | sck; +# pgm_enable = ; +# chip_erase = ; +# chip_erase_delay = ; # chip erase delay (us) +# # STK500 parameters (parallel programming IO lines) +# pagel = ; # pin name in hex, i.e., 0xD7 +# bs2 = ; # pin name in hex, i.e., 0xA0 +# serial = ; # can use serial downloading +# parallel = ; # can use par. programming +# # STK500v2 parameters, to be taken from Atmel's XML files +# timeout = ; +# stabdelay = ; +# cmdexedelay = ; +# synchloops = ; +# bytedelay = ; +# pollvalue = ; +# pollindex = ; +# predelay = ; +# postdelay = ; +# pollmethod = ; +# mode = ; +# delay = ; +# blocksize = ; +# readsize = ; +# hvspcmdexedelay = ; +# # STK500v2 HV programming parameters, from XML +# pp_controlstack = , , ...; # PP only +# hvsp_controlstack = , , ...; # HVSP only +# hventerstabdelay = ; +# progmodedelay = ; # PP only +# latchcycles = ; +# togglevtg = ; +# poweroffdelay = ; +# resetdelayms = ; +# resetdelayus = ; +# hvleavestabdelay = ; +# resetdelay = ; +# synchcycles = ; # HVSP only +# chiperasepulsewidth = ; # PP only +# chiperasepolltimeout = ; +# chiperasetime = ; # HVSP only +# programfusepulsewidth = ; # PP only +# programfusepolltimeout = ; +# programlockpulsewidth = ; # PP only +# programlockpolltimeout = ; +# # JTAG ICE mkII parameters, also from XML files +# allowfullpagebitstream = ; +# enablepageprogramming = ; +# idr = ; # IO addr of IDR (OCD) reg. +# rampz = ; # IO addr of RAMPZ reg. +# spmcr = ; # mem addr of SPMC[S]R reg. +# eecr = ; # mem addr of EECR reg. +# # (only when != 0x3c) +# +# memory +# paged = ; # yes / no +# size = ; # bytes +# page_size = ; # bytes +# num_pages = ; # numeric +# min_write_delay = ; # micro-seconds +# max_write_delay = ; # micro-seconds +# readback_p1 = ; # byte value +# readback_p2 = ; # byte value +# pwroff_after_write = ; # yes / no +# read = ; +# write = ; +# read_lo = ; +# read_hi = ; +# write_lo = ; +# write_hi = ; +# loadpage_lo = ; +# loadpage_hi = ; +# writepage = ; +# ; +# ; +# +# If any of the above parameters are not specified, the default value +# of 0 is used for numerics or the empty string ("") for string +# values. If a required parameter is left empty, AVRDUDE will +# complain. +# +# NOTES: +# * 'devicecode' is the device code used by the STK500 (see codes +# listed below) +# * Not all memory types will implement all instructions. +# * AVR Fuse bits and Lock bits are implemented as a type of memory. +# * Example memory types 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 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 +# VCC pins are not defined for the programmer, a message +# indicating that the device needs a power-cycle is printed out. +# This flag was added to work around a problem with the +# at90s4433/2333's; see the at90s4433 errata at: +# +# http://www.atmel.com/atmel/acrobat/doc1280.pdf +# +# INSTRUCTION FORMATS +# +# Instruction formats are specified as a comma seperated list of +# string values containing information (bit specifiers) about each +# of the 32 bits of the instruction. Bit specifiers may be one of +# the following formats: +# +# '1' = the bit is always set on input as well as output +# +# '0' = the bit is always clear on input as well as output +# +# 'x' = the bit is ignored on input and output +# +# 'a' = the bit is an address bit, the bit-number matches this bit +# specifier's position within the current instruction byte +# +# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12 +# is address bit 12 on input, a0 is address bit 0. +# +# 'i' = the bit is an input data bit +# +# 'o' = the bit is an output data bit +# +# Each instruction must be composed of 32 bit specifiers. The +# instruction specification closely follows the instruction data +# provided in Atmel's data sheets for their parts. +# +# See below for some examples. +# +# +# The following are STK500 part device codes to use for the +# "devicecode" field of the part. These came from Atmel's software +# section avr061.zip which accompanies the application note +# AVR061 available from: +# +# http://www.atmel.com/atmel/acrobat/doc2525.pdf +# + +#define ATTINY10 0x10 +#define ATTINY11 0x11 +#define ATTINY12 0x12 +#define ATTINY15 0x13 +#define ATTINY13 0x14 + +#define ATTINY22 0x20 +#define ATTINY26 0x21 +#define ATTINY28 0x22 +#define ATTINY2313 0x23 + +#define AT90S1200 0x33 + +#define AT90S2313 0x40 +#define AT90S2323 0x41 +#define AT90S2333 0x42 +#define AT90S2343 0x43 + +#define AT90S4414 0x50 +#define AT90S4433 0x51 +#define AT90S4434 0x52 +#define ATMEGA48 0x59 + +#define AT90S8515 0x60 +#define AT90S8535 0x61 +#define AT90C8534 0x62 +#define ATMEGA8515 0x63 +#define ATMEGA8535 0x64 + +#define ATMEGA8 0x70 +#define ATMEGA88 0x73 +#define ATMEGA168 0x86 + +#define ATMEGA161 0x80 +#define ATMEGA163 0x81 +#define ATMEGA16 0x82 +#define ATMEGA162 0x83 +#define ATMEGA169 0x84 + +#define ATMEGA323 0x90 +#define ATMEGA32 0x91 + +#define ATMEGA64 0xA0 + +#define ATMEGA103 0xB1 +#define ATMEGA128 0xB2 +#define AT90CAN128 0xB3 + +#define AT86RF401 0xD0 + +#define AT89START 0xE0 +#define AT89S51 0xE0 +#define AT89S52 0xE1 + +# The following table lists the devices in the original AVR910 +# appnote: +# |Device |Signature | Code | +# +-------+----------+------+ +# |tiny12 | 1E 90 05 | 0x55 | +# |tiny15 | 1E 90 06 | 0x56 | +# | | | | +# | S1200 | 1E 90 01 | 0x13 | +# | | | | +# | S2313 | 1E 91 01 | 0x20 | +# | S2323 | 1E 91 02 | 0x48 | +# | S2333 | 1E 91 05 | 0x34 | +# | S2343 | 1E 91 03 | 0x4C | +# | | | | +# | S4414 | 1E 92 01 | 0x28 | +# | S4433 | 1E 92 03 | 0x30 | +# | S4434 | 1E 92 02 | 0x6C | +# | | | | +# | S8515 | 1E 93 01 | 0x38 | +# | S8535 | 1E 93 03 | 0x68 | +# | | | | +# |mega32 | 1E 95 01 | 0x72 | +# |mega83 | 1E 93 05 | 0x65 | +# |mega103| 1E 97 01 | 0x41 | +# |mega161| 1E 94 01 | 0x60 | +# |mega163| 1E 94 02 | 0x64 | + +# Appnote AVR109 also has a table of AVR910 device codes, which +# lists: +# dev avr910 signature +# ATmega8 0x77 0x1E 0x93 0x07 +# ATmega8515 0x3B 0x1E 0x93 0x06 +# ATmega8535 0x6A 0x1E 0x93 0x08 +# ATmega16 0x75 0x1E 0x94 0x03 +# ATmega162 0x63 0x1E 0x94 0x04 +# ATmega163 0x66 0x1E 0x94 0x02 +# ATmega169 0x79 0x1E 0x94 0x05 +# ATmega32 0x7F 0x1E 0x95 0x02 +# ATmega323 0x73 0x1E 0x95 0x01 +# ATmega64 0x46 0x1E 0x96 0x02 +# ATmega128 0x44 0x1E 0x97 0x02 +# +# These codes refer to "BOOT" device codes which are apparently +# different than standard device codes, for whatever reasons +# (often one above the standard code). + +# There are several extended versions of AVR910 implementations around +# in the Internet. These add the following codes (only devices that +# actually exist are listed): + +# ATmega8515 0x3A +# ATmega128 0x43 +# ATmega64 0x45 +# ATtiny26 0x5E +# ATmega8535 0x69 +# ATmega32 0x72 +# ATmega16 0x74 +# ATmega8 0x76 +# ATmega169 0x78 + +# +# Overall avrdude defaults +# +default_parallel = "/dev/parport0"; +default_serial = "/dev/ttyS0"; + + +# +# PROGRAMMER DEFINITIONS +# + +programmer + id = "avrisp"; + desc = "Atmel AVR ISP"; + type = stk500; +; + +programmer + id = "avrispv2"; + desc = "Atmel AVR ISP V2"; + type = stk500v2; +; + +programmer + id = "avrispmkII"; + desc = "Atmel AVR ISP mkII"; + type = stk500v2; +; + +programmer + id = "avrisp2"; + desc = "Atmel AVR ISP mkII"; + type = stk500v2; +; + +# This is supposed to be the "default" STK500 entry. +# Attempts to select the correct firmware version +# by probing for it. Better use one of the entries +# below instead. +programmer + id = "stk500"; + desc = "Atmel STK500"; + type = stk500generic; +; + +programmer + id = "stk500v1"; + desc = "Atmel STK500 Version 1.x firmware"; + type = stk500; +; + +programmer + id = "stk500v2"; + desc = "Atmel STK500 Version 2.x firmware"; + type = stk500v2; +; + +programmer + id = "stk500pp"; + desc = "Atmel STK500 V2 in parallel programming mode"; + type = stk500pp; +; + +programmer + id = "stk500hvsp"; + desc = "Atmel STK500 V2 in high-voltage serial programming mode"; + type = stk500hvsp; +; + +programmer + id = "avr910"; + desc = "Atmel Low Cost Serial Programmer"; + type = avr910; +; + +programmer + id = "usbasp"; + desc = "USBasp, http://www.fischl.de/usbasp/"; + type = usbasp; +; + +#programmer +# id = "usbtiny"; +# desc = "USBtiny simple USB programmer"; +# type = usbtiny; +#; + +programmer + id = "butterfly"; + desc = "Atmel Butterfly Development Board"; + type = butterfly; +; + +programmer + id = "avr109"; + desc = "Atmel AppNote AVR109 Boot Loader"; + type = butterfly; +; + +programmer + id = "avr911"; + desc = "Atmel AppNote AVR911 AVROSP"; + type = butterfly; +; + +programmer + id = "jtagmkI"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = jtagmki; +; + +# easier to type +programmer + id = "jtag1"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = jtagmki; +; + +# easier to type +programmer + id = "jtag1slow"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 19200; + type = jtagmki; +; + +programmer + id = "jtagmkII"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = jtagmkii; +; + +# easier to type +programmer + id = "jtag2slow"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = jtagmkii; +; + +# JTAG ICE mkII @ 115200 Bd +programmer + id = "jtag2fast"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 115200; + type = jtagmkii; +; + +# make the fast one the default, people will love that +programmer + id = "jtag2"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 115200; + type = jtagmkii; +; + +# JTAG ICE mkII in ISP mode +programmer + id = "jtag2isp"; + desc = "Atmel JTAG ICE mkII in ISP mode"; + baudrate = 115200; + type = jtagmkii_isp; +; + +# JTAG ICE mkII in debugWire mode +programmer + id = "jtag2dw"; + desc = "Atmel JTAG ICE mkII in debugWire mode"; + baudrate = 115200; + type = jtagmkii_dw; +; + +# AVR Dragon in JTAG mode +programmer + id = "dragon_jtag"; + desc = "Atmel AVR Dragon in JTAG mode"; + baudrate = 115200; + type = dragon_jtag; +; + +# AVR Dragon in ISP mode +programmer + id = "dragon_isp"; + desc = "Atmel AVR Dragon in ISP mode"; + baudrate = 115200; + type = dragon_isp; +; + +# AVR Dragon in PP mode +programmer + id = "dragon_pp"; + desc = "Atmel AVR Dragon in PP mode"; + baudrate = 115200; + type = dragon_pp; +; + +# AVR Dragon in HVSP mode +programmer + id = "dragon_hvsp"; + desc = "Atmel AVR Dragon in HVSP mode"; + baudrate = 115200; + type = dragon_hvsp; +; + +# AVR Dragon in debugWire mode +programmer + id = "dragon_dw"; + desc = "Atmel AVR Dragon in debugWire mode"; + baudrate = 115200; + type = dragon_dw; +; + +programmer + id = "pavr"; + desc = "Jason Kyle's pAVR Serial Programmer"; + type = avr910; +; + +# Parallel port programmers. + +programmer + id = "bsd"; + desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; + type = par; + vcc = 2, 3, 4, 5; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; +; + +programmer + id = "stk200"; + desc = "STK200"; + type = par; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; +; + +# The programming dongle used by the popular Ponyprog +# utility. It is almost similar to the STK200 one, +# except that there is a LED indicating that the +# programming is currently in progress. + +programmer + id = "pony-stk200"; + desc = "Pony Prog STK200"; + type = par; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; + pgmled = 8; +; + +programmer + id = "dt006"; + desc = "Dontronics DT006"; + type = par; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer + id = "bascom"; + desc = "Bascom SAMPLE programming cable"; + type = par; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer + id = "alf"; + desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; + type = par; + vcc = 2, 3, 4, 5; + buff = 6; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; + errled = 1; + rdyled = 14; + pgmled = 16; + vfyled = 17; +; + +programmer + id = "sp12"; + desc = "Steve Bolt's Programmer"; + type = par; + vcc = 4,5,6,7,8; + reset = 3; + sck = 2; + mosi = 9; + miso = 11; +; + +programmer + id = "picoweb"; + desc = "Picoweb Programming Cable, http://www.picoweb.net/"; + type = par; + reset = 2; + sck = 3; + mosi = 4; + miso = 13; +; + +programmer + id = "abcmini"; + desc = "ABCmini Board, aka Dick Smith HOTCHIP"; + type = par; + reset = 4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "futurlec"; + desc = "Futurlec.com programming cable."; + type = par; + reset = 3; + sck = 2; + mosi = 1; + miso = 10; +; + + +# From the contributor of the "xil" jtag cable: +# The "vcc" definition isn't really vcc (the cable gets its power from +# the programming circuit) but is necessary to switch one of the +# buffer lines (trying to add it to the "buff" lines doesn't work). +# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK +# to SCK (plus vcc/gnd of course) +programmer + id = "xil"; + desc = "Xilinx JTAG cable"; + type = par; + mosi = 2; + sck = 3; + reset = 4; + buff = 5; + miso = 13; + vcc = 6; +; + + +programmer + id = "dapa"; + desc = "Direct AVR Parallel Access cable"; + type = par; + vcc = 3; + reset = 16; + sck = 1; + mosi = 2; + miso = 11; +; + +programmer + id = "atisp"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + type = par; + reset = ~6; + sck = ~8; + mosi = ~7; + miso = ~10; +; + +programmer + id = "ere-isp-avr"; + desc = "ERE ISP-AVR "; + type = par; + reset = ~4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "blaster"; + desc = "Altera ByteBlaster"; + type = par; + sck = 2; + miso = 11; + reset = 3; + mosi = 8; + buff = 14; +; + +# It is almost same as pony-stk200, except vcc on pin 5 to auto +# disconnect port (download on http://electropol.free.fr) +programmer + id = "frank-stk200"; + desc = "Frank STK200"; + type = par; + vcc = 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; + pgmled = 8; +; + + +# +# some ultra cheap programmers use bitbanging on the +# serialport. +# +# PC - DB9 - Pins for RS232: +# +# GND 5 -- |O +# | O| <- 9 RI +# DTR 4 <- |O | +# | O| <- 8 CTS +# TXD 3 <- |O | +# | O| -> 7 RTS +# RXD 2 -> |O | +# | O| <- 6 DSR +# DCD 1 -> |O +# +# Using RXD is currently not supported. +# Using RI is not supported under Win32 but is supported under Posix. + +# serial ponyprog design (dasa2 in uisp) +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "ponyser"; + desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts"; + type = serbb; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# Same as above, different name +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "siprog"; + desc = "Lancos SI-Prog "; + type = serbb; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# unknown (dasa in uisp) +# reset=rts sck=dtr mosi=txd miso=cts + +programmer + id = "dasa"; + desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; + type = serbb; + reset = 7; + sck = 4; + mosi = 3; + miso = 8; +; + +# unknown (dasa3 in uisp) +# reset=!dtr sck=rts mosi=txd miso=cts + +programmer + id = "dasa3"; + desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts"; + type = serbb; + reset = ~4; + sck = 7; + mosi = 3; + miso = 8; +; + +# +# PART DEFINITIONS +# + +#------------------------------------------------------------ +# ATtiny11 +#------------------------------------------------------------ + +# This is an HVSP-only device. + +part + id = "t11"; + desc = "ATtiny11"; + stk500_devcode = 0x11; + signature = 0x1e 0x90 0x04; + chip_erase_delay = 20000; + + timeout = 200; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + blocksize = 64; + readsize = 256; + delay = 5; + ; + + memory "flash" + size = 1024; + blocksize = 128; + readsize = 256; + delay = 3; + ; + + memory "signature" + size = 3; + ; + + memory "lock" + size = 1; + ; + + memory "calibration" + size = 1; + ; + + memory "fuse" + size = 1; + ; +; + +#------------------------------------------------------------ +# ATtiny12 +#------------------------------------------------------------ + +part + id = "t12"; + desc = "ATtiny12"; + stk500_devcode = 0x12; + avr910_devcode = 0x55; + signature = 0x1e 0x90 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 8; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4500; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny13 +#------------------------------------------------------------ + +part + id = "t13"; + desc = "ATtiny13"; + has_debugwire = yes; + flash_instr = 0xB4, 0x0E, 0x1E; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; + signature = 0x1e 0x90 0x07; + chip_erase_delay = 4000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 90; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 1024; + page_size = 32; + num_pages = 32; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny15 +#------------------------------------------------------------ + +part + id = "t15"; + desc = "ATtiny15"; + stk500_devcode = 0x13; + avr910_devcode = 0x56; + signature = 0x1e 0x90 0x06; + chip_erase_delay = 8200; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 5; + synchcycles = 6; + latchcycles = 16; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 8200; + max_write_delay = 8200; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4100; + max_write_delay = 4100; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o x x o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i 1 1 i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# AT90s1200 +#------------------------------------------------------------ + +part + id = "1200"; + desc = "AT90S1200"; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + signature = 0x1e 0x90 0x01; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 1; + bytedelay = 0; + pollindex = 0; + pollvalue = 0xFF; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 64; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 32; + readsize = 256; + ; + memory "flash" + size = 1024; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x02; + delay = 15; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4414 +#------------------------------------------------------------ + +part + id = "4414"; + desc = "AT90S4414"; + stk500_devcode = 0x50; + avr910_devcode = 0x28; + signature = 0x1e 0x92 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2313 +#------------------------------------------------------------ + +part + id = "2313"; + desc = "AT90S2313"; + stk500_devcode = 0x40; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 128; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2333 +#------------------------------------------------------------ + +part + id = "2333"; +##### WARNING: No XML file for device 'AT90S2333'! ##### + desc = "AT90S2333"; + stk500_devcode = 0x42; + avr910_devcode = 0x34; + signature = 0x1e 0x91 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s2343 (also AT90s2323 and ATtiny22) +#------------------------------------------------------------ + +part + id = "2343"; + desc = "AT90S2343"; + stk500_devcode = 0x43; + avr910_devcode = 0x4c; + signature = 0x1e 0x91 0x03; + chip_erase_delay = 18000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 0; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 128; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s4433 +#------------------------------------------------------------ + +part + id = "4433"; + desc = "AT90S4433"; + stk500_devcode = 0x51; + avr910_devcode = 0x30; + signature = 0x1e 0x92 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4434 +#------------------------------------------------------------ + +part + id = "4434"; +##### WARNING: No XML file for device 'AT90S4434'! ##### + desc = "AT90S4434"; + stk500_devcode = 0x52; + avr910_devcode = 0x6c; + signature = 0x1e 0x92 0x02; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s8515 +#------------------------------------------------------------ + +part + id = "8515"; + desc = "AT90S8515"; + stk500_devcode = 0x60; + avr910_devcode = 0x38; + signature = 0x1e 0x93 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s8535 +#------------------------------------------------------------ + +part + id = "8535"; + desc = "AT90S8535"; + stk500_devcode = 0x61; + avr910_devcode = 0x68; + signature = 0x1e 0x93 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x x o"; + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o x x x x x x"; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# ATmega103 +#------------------------------------------------------------ + +part + id = "m103"; + desc = "ATMEGA103"; + stk500_devcode = 0xB1; + avr910_devcode = 0x41; + signature = 0x1e 0x97 0x01; + chip_erase_delay = 112000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, + 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, + 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, + 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 10; + + memory "eeprom" + size = 4096; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 22000; + max_write_delay = 56000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x11; + delay = 70; + blocksize = 256; + readsize = 256; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o x o 1 o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega64 +#------------------------------------------------------------ + +part + id = "m64"; + desc = "ATMEGA64"; + has_jtag = yes; + stk500_devcode = 0xA0; + avr910_devcode = 0x45; + signature = 0x1e 0x96 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega128 +#------------------------------------------------------------ + +part + id = "m128"; + desc = "ATMEGA128"; + has_jtag = yes; + stk500_devcode = 0xB2; + avr910_devcode = 0x43; + signature = 0x1e 0x97 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + rampz = 0x3b; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN128 +#------------------------------------------------------------ + +part + id = "c128"; + desc = "AT90CAN128"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x97 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega16 +#------------------------------------------------------------ + +part + id = "m16"; + desc = "ATMEGA16"; + has_jtag = yes; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x03; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 100; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "calibration" + size = 4; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega164P +#------------------------------------------------------------ + +# close to ATmega16 + +part + id = "m164p"; + desc = "ATMEGA164P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega324P +#------------------------------------------------------------ + +# similar to ATmega164P + +part + id = "m324p"; + desc = "ATMEGA324P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega644 +#------------------------------------------------------------ + +# similar to ATmega164 + +part + id = "m644"; + desc = "ATMEGA644"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x09; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega644P +#------------------------------------------------------------ + +# similar to ATmega164p + +part + id = "m644p"; + desc = "ATMEGA644P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega162 +#------------------------------------------------------------ + +part + id = "m162"; + desc = "ATMEGA162"; + has_jtag = yes; + stk500_devcode = 0x83; + avr910_devcode = 0x63; + signature = 0x1e 0x94 0x04; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + + idr = 0x04; + spmcr = 0x57; + allowfullpagebitstream = yes; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + + ; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; +; + + + +#------------------------------------------------------------ +# ATmega163 +#------------------------------------------------------------ + +part + id = "m163"; + desc = "ATMEGA163"; + stk500_devcode = 0x81; + avr910_devcode = 0x64; + signature = 0x1e 0x94 0x02; + chip_erase_delay = 32000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 16000; + max_write_delay = 16000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o x x o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i 1 1 i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x 1 o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x 0 x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega169 +#------------------------------------------------------------ + +part + id = "m169"; + desc = "ATMEGA169"; + has_jtag = yes; + stk500_devcode = 0x85; + avr910_devcode = 0x78; + signature = 0x1e 0x94 0x05; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega329 +#------------------------------------------------------------ + +part + id = "m329"; + desc = "ATMEGA329"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3290 +#------------------------------------------------------------ + +# identical to ATmega329 + +part + id = "m3290"; + desc = "ATMEGA3290"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a3 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega649 +#------------------------------------------------------------ + +part + id = "m649"; + desc = "ATMEGA649"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6490 +#------------------------------------------------------------ + +# identical to ATmega649 + +part + id = "m6490"; + desc = "ATMEGA6490"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega32 +#------------------------------------------------------------ + +part + id = "m32"; + desc = "ATMEGA32"; + has_jtag = yes; + stk500_devcode = 0x91; + avr910_devcode = 0x72; + signature = 0x1e 0x95 0x02; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega161 +#------------------------------------------------------------ + +part + id = "m161"; + desc = "ATMEGA161"; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + signature = 0x1e 0x94 0x01; + chip_erase_delay = 28000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + memory "eeprom" + size = 512; + min_write_delay = 3400; + max_write_delay = 3400; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 14000; + max_write_delay = 14000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 16; + blocksize = 128; + readsize = 256; + ; + + memory "fuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x o x o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x 1 i 1 i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega8 +#------------------------------------------------------------ + +part + id = "m8"; + desc = "ATMEGA8"; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + signature = 0x1e 0x93 0x07; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 10000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega8515 +#------------------------------------------------------------ + +part + id = "m8515"; + desc = "ATMEGA8515"; + stk500_devcode = 0x63; + avr910_devcode = 0x3A; + signature = 0x1e 0x93 0x06; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega8535 +#------------------------------------------------------------ + +part + id = "m8535"; + desc = "ATMEGA8535"; + stk500_devcode = 0x64; + avr910_devcode = 0x69; + signature = 0x1e 0x93 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATtiny26 +#------------------------------------------------------------ + +part + id = "t26"; + desc = "ATTINY26"; + stk500_devcode = 0x21; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x09; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x x x x i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny261 +#------------------------------------------------------------ +# Close to ATtiny26 + +part + id = "t261"; + desc = "ATTINY261"; + has_debugwire = yes; + 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; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0c; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny461 +#------------------------------------------------------------ +# Close to ATtiny261 + +part + id = "t461"; + desc = "ATTINY461"; + has_debugwire = yes; + 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; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x92 0x08; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 256; + page_size = 4; + num_pages = 64; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny861 +#------------------------------------------------------------ +# Close to ATtiny461 + +part + id = "t861"; + desc = "ATTINY861"; + has_debugwire = yes; + 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; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x93 0x0d; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 512; + num_pages = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATmega48 +#------------------------------------------------------------ + +part + id = "m48"; + desc = "ATMEGA48"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x59; +# avr910_devcode = 0x; + signature = 0x1e 0x92 0x05; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 45000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega88 +#------------------------------------------------------------ + +part + id = "m88"; + desc = "ATMEGA88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; +# avr910_devcode = 0x; + signature = 0x1e 0x93 0x0a; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega168 +#------------------------------------------------------------ + +part + id = "m168"; + desc = "ATMEGA168"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x06; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATmega328 +#------------------------------------------------------------ + +part + id = "m328p"; + desc = "ATMEGA328P"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x0F; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 1024; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + #------------------------------------------------------------ +# ATtiny2313 +#------------------------------------------------------------ + +part + id = "t2313"; + desc = "ATtiny2313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; +## Use the ATtiny26 devcode: + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0a; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. +# The information in the data sheet of April/2004 is wrong, this works: + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2 +#------------------------------------------------------------ + +part + id = "pwm2"; + desc = "AT90PWM2"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3 +#------------------------------------------------------------ + +# Completely identical to AT90PWM2 (including the signature!) + +part + id = "pwm3"; + desc = "AT90PWM3"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2B +#------------------------------------------------------------ +# Same as AT90PWM2 but different signature. + +part + id = "pwm2b"; + desc = "AT90PWM2B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3B +#------------------------------------------------------------ + +# Completely identical to AT90PWM2B (including the signature!) + +part + id = "pwm3b"; + desc = "AT90PWM3B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny25 +#------------------------------------------------------------ + +part + id = "t25"; + desc = "ATtiny25"; + has_debugwire = yes; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x08; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny45 +#------------------------------------------------------------ + +part + id = "t45"; + desc = "ATtiny45"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x06; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny85 +#------------------------------------------------------------ + +part + id = "t85"; + desc = "ATtiny85"; + has_debugwire = yes; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega640 +#------------------------------------------------------------ +# Almost same as ATmega1280, except for different memory sizes + +part + id = "m640"; + desc = "ATMEGA640"; + signature = 0x1e 0x96 0x08; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1280 +#------------------------------------------------------------ + +part + id = "m1280"; + desc = "ATMEGA1280"; + signature = 0x1e 0x97 0x03; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1281 +#------------------------------------------------------------ +# Identical to ATmega1280 + +part + id = "m1281"; + desc = "ATMEGA1281"; + signature = 0x1e 0x97 0x04; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2560 +#------------------------------------------------------------ + +part + id = "m2560"; + desc = "ATMEGA2560"; + signature = 0x1e 0x98 0x01; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2561 +#------------------------------------------------------------ + +part + id = "m2561"; + desc = "ATMEGA2561"; + signature = 0x1e 0x98 0x02; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny24 +#------------------------------------------------------------ + +part + id = "t24"; + desc = "ATtiny24"; + has_debugwire = yes; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny44 +#------------------------------------------------------------ + +part + id = "t44"; + desc = "ATtiny44"; + has_debugwire = yes; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x07; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny84 +#------------------------------------------------------------ + +part + id = "t84"; + desc = "ATtiny84"; + has_debugwire = yes; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0c; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB646 +#------------------------------------------------------------ + +part + id = "usb646"; + desc = "AT90USB646"; +# signature = 0x1e 0x96 0x82; ? + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB647 +#------------------------------------------------------------ +# identical to AT90USB646 + +part + id = "usb647"; + desc = "AT90USB647"; +# signature = 0x1e 0x96 0x82; ? + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1286 +#------------------------------------------------------------ + +part + id = "usb1286"; + desc = "AT90USB1286"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1287 +#------------------------------------------------------------ +# identical to AT90USB1286 + +part + id = "usb1287"; + desc = "AT90USB1287"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega325 +#------------------------------------------------------------ + +part + id = "m325"; + desc = "ATMEGA325"; + signature = 0x1e 0x95 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega645 +#------------------------------------------------------------ + +part + id = "m645"; + desc = "ATMEGA645"; + signature = 0x1E 0x96 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3250 +#------------------------------------------------------------ + +part + id = "m3250"; + desc = "ATMEGA3250"; + signature = 0x1E 0x95 0x06; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6450 +#------------------------------------------------------------ + +part + id = "m6450"; + desc = "ATMEGA6450"; + signature = 0x1E 0x96 0x06; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; diff --git a/arduino-0018-linux-x64/hardware/tools/avrdude.conf~ b/arduino-0018-linux-x64/hardware/tools/avrdude.conf~ new file mode 100644 index 0000000..221cf2a --- /dev/null +++ b/arduino-0018-linux-x64/hardware/tools/avrdude.conf~ @@ -0,0 +1,11914 @@ +# $Id: avrdude.conf.in,v 1.122 2007/05/16 21:29:36 joerg_wunsch Exp $ +# +# 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. +# +# Possible entry formats are: +# +# programmer +# id = [, [, ] ...] ; # are quoted strings +# desc = ; # quoted string +# type = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic | +# avr910 | butterfly | usbasp | +# jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw | +# dragon_dw | dragon_jtag | dragon_isp | dragon_pp | +# dragon_hvsp; # programmer type +# baudrate = ; # baudrate for avr910-programmer +# vcc = [, ... ] ; # pin number(s) +# reset = ; # pin number +# sck = ; # pin number +# mosi = ; # pin number +# miso = ; # pin number +# errled = ; # pin number +# rdyled = ; # pin number +# pgmled = ; # pin number +# vfyled = ; # pin number +# ; +# +# part +# id = ; # quoted string +# desc = ; # quoted string +# has_jtag = ; # part has JTAG i/f +# has_debugwire = ; # part has debugWire i/f +# devicecode = ; # deprecated, use stk500_devcode +# stk500_devcode = ; # numeric +# avr910_devcode = ; # numeric +# signature = ; # signature bytes +# chip_erase_delay = ; # micro-seconds +# reset = dedicated | io; +# retry_pulse = reset | sck; +# pgm_enable = ; +# chip_erase = ; +# chip_erase_delay = ; # chip erase delay (us) +# # STK500 parameters (parallel programming IO lines) +# pagel = ; # pin name in hex, i.e., 0xD7 +# bs2 = ; # pin name in hex, i.e., 0xA0 +# serial = ; # can use serial downloading +# parallel = ; # can use par. programming +# # STK500v2 parameters, to be taken from Atmel's XML files +# timeout = ; +# stabdelay = ; +# cmdexedelay = ; +# synchloops = ; +# bytedelay = ; +# pollvalue = ; +# pollindex = ; +# predelay = ; +# postdelay = ; +# pollmethod = ; +# mode = ; +# delay = ; +# blocksize = ; +# readsize = ; +# hvspcmdexedelay = ; +# # STK500v2 HV programming parameters, from XML +# pp_controlstack = , , ...; # PP only +# hvsp_controlstack = , , ...; # HVSP only +# hventerstabdelay = ; +# progmodedelay = ; # PP only +# latchcycles = ; +# togglevtg = ; +# poweroffdelay = ; +# resetdelayms = ; +# resetdelayus = ; +# hvleavestabdelay = ; +# resetdelay = ; +# synchcycles = ; # HVSP only +# chiperasepulsewidth = ; # PP only +# chiperasepolltimeout = ; +# chiperasetime = ; # HVSP only +# programfusepulsewidth = ; # PP only +# programfusepolltimeout = ; +# programlockpulsewidth = ; # PP only +# programlockpolltimeout = ; +# # JTAG ICE mkII parameters, also from XML files +# allowfullpagebitstream = ; +# enablepageprogramming = ; +# idr = ; # IO addr of IDR (OCD) reg. +# rampz = ; # IO addr of RAMPZ reg. +# spmcr = ; # mem addr of SPMC[S]R reg. +# eecr = ; # mem addr of EECR reg. +# # (only when != 0x3c) +# +# memory +# paged = ; # yes / no +# size = ; # bytes +# page_size = ; # bytes +# num_pages = ; # numeric +# min_write_delay = ; # micro-seconds +# max_write_delay = ; # micro-seconds +# readback_p1 = ; # byte value +# readback_p2 = ; # byte value +# pwroff_after_write = ; # yes / no +# read = ; +# write = ; +# read_lo = ; +# read_hi = ; +# write_lo = ; +# write_hi = ; +# loadpage_lo = ; +# loadpage_hi = ; +# writepage = ; +# ; +# ; +# +# If any of the above parameters are not specified, the default value +# of 0 is used for numerics or the empty string ("") for string +# values. If a required parameter is left empty, AVRDUDE will +# complain. +# +# NOTES: +# * 'devicecode' is the device code used by the STK500 (see codes +# listed below) +# * Not all memory types will implement all instructions. +# * AVR Fuse bits and Lock bits are implemented as a type of memory. +# * Example memory types 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 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 +# VCC pins are not defined for the programmer, a message +# indicating that the device needs a power-cycle is printed out. +# This flag was added to work around a problem with the +# at90s4433/2333's; see the at90s4433 errata at: +# +# http://www.atmel.com/atmel/acrobat/doc1280.pdf +# +# INSTRUCTION FORMATS +# +# Instruction formats are specified as a comma seperated list of +# string values containing information (bit specifiers) about each +# of the 32 bits of the instruction. Bit specifiers may be one of +# the following formats: +# +# '1' = the bit is always set on input as well as output +# +# '0' = the bit is always clear on input as well as output +# +# 'x' = the bit is ignored on input and output +# +# 'a' = the bit is an address bit, the bit-number matches this bit +# specifier's position within the current instruction byte +# +# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12 +# is address bit 12 on input, a0 is address bit 0. +# +# 'i' = the bit is an input data bit +# +# 'o' = the bit is an output data bit +# +# Each instruction must be composed of 32 bit specifiers. The +# instruction specification closely follows the instruction data +# provided in Atmel's data sheets for their parts. +# +# See below for some examples. +# +# +# The following are STK500 part device codes to use for the +# "devicecode" field of the part. These came from Atmel's software +# section avr061.zip which accompanies the application note +# AVR061 available from: +# +# http://www.atmel.com/atmel/acrobat/doc2525.pdf +# + +#define ATTINY10 0x10 +#define ATTINY11 0x11 +#define ATTINY12 0x12 +#define ATTINY15 0x13 +#define ATTINY13 0x14 + +#define ATTINY22 0x20 +#define ATTINY26 0x21 +#define ATTINY28 0x22 +#define ATTINY2313 0x23 + +#define AT90S1200 0x33 + +#define AT90S2313 0x40 +#define AT90S2323 0x41 +#define AT90S2333 0x42 +#define AT90S2343 0x43 + +#define AT90S4414 0x50 +#define AT90S4433 0x51 +#define AT90S4434 0x52 +#define ATMEGA48 0x59 + +#define AT90S8515 0x60 +#define AT90S8535 0x61 +#define AT90C8534 0x62 +#define ATMEGA8515 0x63 +#define ATMEGA8535 0x64 + +#define ATMEGA8 0x70 +#define ATMEGA88 0x73 +#define ATMEGA168 0x86 + +#define ATMEGA161 0x80 +#define ATMEGA163 0x81 +#define ATMEGA16 0x82 +#define ATMEGA162 0x83 +#define ATMEGA169 0x84 + +#define ATMEGA323 0x90 +#define ATMEGA32 0x91 + +#define ATMEGA64 0xA0 + +#define ATMEGA103 0xB1 +#define ATMEGA128 0xB2 +#define AT90CAN128 0xB3 + +#define AT86RF401 0xD0 + +#define AT89START 0xE0 +#define AT89S51 0xE0 +#define AT89S52 0xE1 + +# The following table lists the devices in the original AVR910 +# appnote: +# |Device |Signature | Code | +# +-------+----------+------+ +# |tiny12 | 1E 90 05 | 0x55 | +# |tiny15 | 1E 90 06 | 0x56 | +# | | | | +# | S1200 | 1E 90 01 | 0x13 | +# | | | | +# | S2313 | 1E 91 01 | 0x20 | +# | S2323 | 1E 91 02 | 0x48 | +# | S2333 | 1E 91 05 | 0x34 | +# | S2343 | 1E 91 03 | 0x4C | +# | | | | +# | S4414 | 1E 92 01 | 0x28 | +# | S4433 | 1E 92 03 | 0x30 | +# | S4434 | 1E 92 02 | 0x6C | +# | | | | +# | S8515 | 1E 93 01 | 0x38 | +# | S8535 | 1E 93 03 | 0x68 | +# | | | | +# |mega32 | 1E 95 01 | 0x72 | +# |mega83 | 1E 93 05 | 0x65 | +# |mega103| 1E 97 01 | 0x41 | +# |mega161| 1E 94 01 | 0x60 | +# |mega163| 1E 94 02 | 0x64 | + +# Appnote AVR109 also has a table of AVR910 device codes, which +# lists: +# dev avr910 signature +# ATmega8 0x77 0x1E 0x93 0x07 +# ATmega8515 0x3B 0x1E 0x93 0x06 +# ATmega8535 0x6A 0x1E 0x93 0x08 +# ATmega16 0x75 0x1E 0x94 0x03 +# ATmega162 0x63 0x1E 0x94 0x04 +# ATmega163 0x66 0x1E 0x94 0x02 +# ATmega169 0x79 0x1E 0x94 0x05 +# ATmega32 0x7F 0x1E 0x95 0x02 +# ATmega323 0x73 0x1E 0x95 0x01 +# ATmega64 0x46 0x1E 0x96 0x02 +# ATmega128 0x44 0x1E 0x97 0x02 +# +# These codes refer to "BOOT" device codes which are apparently +# different than standard device codes, for whatever reasons +# (often one above the standard code). + +# There are several extended versions of AVR910 implementations around +# in the Internet. These add the following codes (only devices that +# actually exist are listed): + +# ATmega8515 0x3A +# ATmega128 0x43 +# ATmega64 0x45 +# ATtiny26 0x5E +# ATmega8535 0x69 +# ATmega32 0x72 +# ATmega16 0x74 +# ATmega8 0x76 +# ATmega169 0x78 + +# +# Overall avrdude defaults +# +default_parallel = "/dev/parport0"; +default_serial = "/dev/ttyS0"; + + +# +# PROGRAMMER DEFINITIONS +# + +programmer + id = "avrisp"; + desc = "Atmel AVR ISP"; + type = stk500; +; + +programmer + id = "avrispv2"; + desc = "Atmel AVR ISP V2"; + type = stk500v2; +; + +programmer + id = "avrispmkII"; + desc = "Atmel AVR ISP mkII"; + type = stk500v2; +; + +programmer + id = "avrisp2"; + desc = "Atmel AVR ISP mkII"; + type = stk500v2; +; + +# This is supposed to be the "default" STK500 entry. +# Attempts to select the correct firmware version +# by probing for it. Better use one of the entries +# below instead. +programmer + id = "stk500"; + desc = "Atmel STK500"; + type = stk500generic; +; + +programmer + id = "stk500v1"; + desc = "Atmel STK500 Version 1.x firmware"; + type = stk500; +; + +programmer + id = "stk500v2"; + desc = "Atmel STK500 Version 2.x firmware"; + type = stk500v2; +; + +programmer + id = "stk500pp"; + desc = "Atmel STK500 V2 in parallel programming mode"; + type = stk500pp; +; + +programmer + id = "stk500hvsp"; + desc = "Atmel STK500 V2 in high-voltage serial programming mode"; + type = stk500hvsp; +; + +programmer + id = "avr910"; + desc = "Atmel Low Cost Serial Programmer"; + type = avr910; +; + +programmer + id = "usbasp"; + desc = "USBasp, http://www.fischl.de/usbasp/"; + type = usbasp; +; + +programmer + id = "usbtiny"; + desc = "USBtiny simple USB programmer"; + type = usbtiny; +; + +programmer + id = "butterfly"; + desc = "Atmel Butterfly Development Board"; + type = butterfly; +; + +programmer + id = "avr109"; + desc = "Atmel AppNote AVR109 Boot Loader"; + type = butterfly; +; + +programmer + id = "avr911"; + desc = "Atmel AppNote AVR911 AVROSP"; + type = butterfly; +; + +programmer + id = "jtagmkI"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = jtagmki; +; + +# easier to type +programmer + id = "jtag1"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = jtagmki; +; + +# easier to type +programmer + id = "jtag1slow"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 19200; + type = jtagmki; +; + +programmer + id = "jtagmkII"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = jtagmkii; +; + +# easier to type +programmer + id = "jtag2slow"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = jtagmkii; +; + +# JTAG ICE mkII @ 115200 Bd +programmer + id = "jtag2fast"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 115200; + type = jtagmkii; +; + +# make the fast one the default, people will love that +programmer + id = "jtag2"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 115200; + type = jtagmkii; +; + +# JTAG ICE mkII in ISP mode +programmer + id = "jtag2isp"; + desc = "Atmel JTAG ICE mkII in ISP mode"; + baudrate = 115200; + type = jtagmkii_isp; +; + +# JTAG ICE mkII in debugWire mode +programmer + id = "jtag2dw"; + desc = "Atmel JTAG ICE mkII in debugWire mode"; + baudrate = 115200; + type = jtagmkii_dw; +; + +# AVR Dragon in JTAG mode +programmer + id = "dragon_jtag"; + desc = "Atmel AVR Dragon in JTAG mode"; + baudrate = 115200; + type = dragon_jtag; +; + +# AVR Dragon in ISP mode +programmer + id = "dragon_isp"; + desc = "Atmel AVR Dragon in ISP mode"; + baudrate = 115200; + type = dragon_isp; +; + +# AVR Dragon in PP mode +programmer + id = "dragon_pp"; + desc = "Atmel AVR Dragon in PP mode"; + baudrate = 115200; + type = dragon_pp; +; + +# AVR Dragon in HVSP mode +programmer + id = "dragon_hvsp"; + desc = "Atmel AVR Dragon in HVSP mode"; + baudrate = 115200; + type = dragon_hvsp; +; + +# AVR Dragon in debugWire mode +programmer + id = "dragon_dw"; + desc = "Atmel AVR Dragon in debugWire mode"; + baudrate = 115200; + type = dragon_dw; +; + +programmer + id = "pavr"; + desc = "Jason Kyle's pAVR Serial Programmer"; + type = avr910; +; + +# Parallel port programmers. + +programmer + id = "bsd"; + desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; + type = par; + vcc = 2, 3, 4, 5; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; +; + +programmer + id = "stk200"; + desc = "STK200"; + type = par; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; +; + +# The programming dongle used by the popular Ponyprog +# utility. It is almost similar to the STK200 one, +# except that there is a LED indicating that the +# programming is currently in progress. + +programmer + id = "pony-stk200"; + desc = "Pony Prog STK200"; + type = par; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; + pgmled = 8; +; + +programmer + id = "dt006"; + desc = "Dontronics DT006"; + type = par; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer + id = "bascom"; + desc = "Bascom SAMPLE programming cable"; + type = par; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer + id = "alf"; + desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; + type = par; + vcc = 2, 3, 4, 5; + buff = 6; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; + errled = 1; + rdyled = 14; + pgmled = 16; + vfyled = 17; +; + +programmer + id = "sp12"; + desc = "Steve Bolt's Programmer"; + type = par; + vcc = 4,5,6,7,8; + reset = 3; + sck = 2; + mosi = 9; + miso = 11; +; + +programmer + id = "picoweb"; + desc = "Picoweb Programming Cable, http://www.picoweb.net/"; + type = par; + reset = 2; + sck = 3; + mosi = 4; + miso = 13; +; + +programmer + id = "abcmini"; + desc = "ABCmini Board, aka Dick Smith HOTCHIP"; + type = par; + reset = 4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "futurlec"; + desc = "Futurlec.com programming cable."; + type = par; + reset = 3; + sck = 2; + mosi = 1; + miso = 10; +; + + +# From the contributor of the "xil" jtag cable: +# The "vcc" definition isn't really vcc (the cable gets its power from +# the programming circuit) but is necessary to switch one of the +# buffer lines (trying to add it to the "buff" lines doesn't work). +# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK +# to SCK (plus vcc/gnd of course) +programmer + id = "xil"; + desc = "Xilinx JTAG cable"; + type = par; + mosi = 2; + sck = 3; + reset = 4; + buff = 5; + miso = 13; + vcc = 6; +; + + +programmer + id = "dapa"; + desc = "Direct AVR Parallel Access cable"; + type = par; + vcc = 3; + reset = 16; + sck = 1; + mosi = 2; + miso = 11; +; + +programmer + id = "atisp"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + type = par; + reset = ~6; + sck = ~8; + mosi = ~7; + miso = ~10; +; + +programmer + id = "ere-isp-avr"; + desc = "ERE ISP-AVR "; + type = par; + reset = ~4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "blaster"; + desc = "Altera ByteBlaster"; + type = par; + sck = 2; + miso = 11; + reset = 3; + mosi = 8; + buff = 14; +; + +# It is almost same as pony-stk200, except vcc on pin 5 to auto +# disconnect port (download on http://electropol.free.fr) +programmer + id = "frank-stk200"; + desc = "Frank STK200"; + type = par; + vcc = 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; + pgmled = 8; +; + + +# +# some ultra cheap programmers use bitbanging on the +# serialport. +# +# PC - DB9 - Pins for RS232: +# +# GND 5 -- |O +# | O| <- 9 RI +# DTR 4 <- |O | +# | O| <- 8 CTS +# TXD 3 <- |O | +# | O| -> 7 RTS +# RXD 2 -> |O | +# | O| <- 6 DSR +# DCD 1 -> |O +# +# Using RXD is currently not supported. +# Using RI is not supported under Win32 but is supported under Posix. + +# serial ponyprog design (dasa2 in uisp) +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "ponyser"; + desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts"; + type = serbb; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# Same as above, different name +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "siprog"; + desc = "Lancos SI-Prog "; + type = serbb; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# unknown (dasa in uisp) +# reset=rts sck=dtr mosi=txd miso=cts + +programmer + id = "dasa"; + desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; + type = serbb; + reset = 7; + sck = 4; + mosi = 3; + miso = 8; +; + +# unknown (dasa3 in uisp) +# reset=!dtr sck=rts mosi=txd miso=cts + +programmer + id = "dasa3"; + desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts"; + type = serbb; + reset = ~4; + sck = 7; + mosi = 3; + miso = 8; +; + +# +# PART DEFINITIONS +# + +#------------------------------------------------------------ +# ATtiny11 +#------------------------------------------------------------ + +# This is an HVSP-only device. + +part + id = "t11"; + desc = "ATtiny11"; + stk500_devcode = 0x11; + signature = 0x1e 0x90 0x04; + chip_erase_delay = 20000; + + timeout = 200; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + blocksize = 64; + readsize = 256; + delay = 5; + ; + + memory "flash" + size = 1024; + blocksize = 128; + readsize = 256; + delay = 3; + ; + + memory "signature" + size = 3; + ; + + memory "lock" + size = 1; + ; + + memory "calibration" + size = 1; + ; + + memory "fuse" + size = 1; + ; +; + +#------------------------------------------------------------ +# ATtiny12 +#------------------------------------------------------------ + +part + id = "t12"; + desc = "ATtiny12"; + stk500_devcode = 0x12; + avr910_devcode = 0x55; + signature = 0x1e 0x90 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 8; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4500; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny13 +#------------------------------------------------------------ + +part + id = "t13"; + desc = "ATtiny13"; + has_debugwire = yes; + flash_instr = 0xB4, 0x0E, 0x1E; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; + signature = 0x1e 0x90 0x07; + chip_erase_delay = 4000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 90; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 1024; + page_size = 32; + num_pages = 32; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny15 +#------------------------------------------------------------ + +part + id = "t15"; + desc = "ATtiny15"; + stk500_devcode = 0x13; + avr910_devcode = 0x56; + signature = 0x1e 0x90 0x06; + chip_erase_delay = 8200; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 5; + synchcycles = 6; + latchcycles = 16; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 8200; + max_write_delay = 8200; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4100; + max_write_delay = 4100; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o x x o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i 1 1 i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# AT90s1200 +#------------------------------------------------------------ + +part + id = "1200"; + desc = "AT90S1200"; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + signature = 0x1e 0x90 0x01; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 1; + bytedelay = 0; + pollindex = 0; + pollvalue = 0xFF; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 64; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 32; + readsize = 256; + ; + memory "flash" + size = 1024; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x02; + delay = 15; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4414 +#------------------------------------------------------------ + +part + id = "4414"; + desc = "AT90S4414"; + stk500_devcode = 0x50; + avr910_devcode = 0x28; + signature = 0x1e 0x92 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2313 +#------------------------------------------------------------ + +part + id = "2313"; + desc = "AT90S2313"; + stk500_devcode = 0x40; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 128; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2333 +#------------------------------------------------------------ + +part + id = "2333"; +##### WARNING: No XML file for device 'AT90S2333'! ##### + desc = "AT90S2333"; + stk500_devcode = 0x42; + avr910_devcode = 0x34; + signature = 0x1e 0x91 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s2343 (also AT90s2323 and ATtiny22) +#------------------------------------------------------------ + +part + id = "2343"; + desc = "AT90S2343"; + stk500_devcode = 0x43; + avr910_devcode = 0x4c; + signature = 0x1e 0x91 0x03; + chip_erase_delay = 18000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 0; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 128; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s4433 +#------------------------------------------------------------ + +part + id = "4433"; + desc = "AT90S4433"; + stk500_devcode = 0x51; + avr910_devcode = 0x30; + signature = 0x1e 0x92 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4434 +#------------------------------------------------------------ + +part + id = "4434"; +##### WARNING: No XML file for device 'AT90S4434'! ##### + desc = "AT90S4434"; + stk500_devcode = 0x52; + avr910_devcode = 0x6c; + signature = 0x1e 0x92 0x02; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s8515 +#------------------------------------------------------------ + +part + id = "8515"; + desc = "AT90S8515"; + stk500_devcode = 0x60; + avr910_devcode = 0x38; + signature = 0x1e 0x93 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s8535 +#------------------------------------------------------------ + +part + id = "8535"; + desc = "AT90S8535"; + stk500_devcode = 0x61; + avr910_devcode = 0x68; + signature = 0x1e 0x93 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x x o"; + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o x x x x x x"; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# ATmega103 +#------------------------------------------------------------ + +part + id = "m103"; + desc = "ATMEGA103"; + stk500_devcode = 0xB1; + avr910_devcode = 0x41; + signature = 0x1e 0x97 0x01; + chip_erase_delay = 112000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, + 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, + 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, + 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 10; + + memory "eeprom" + size = 4096; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 22000; + max_write_delay = 56000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x11; + delay = 70; + blocksize = 256; + readsize = 256; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o x o 1 o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega64 +#------------------------------------------------------------ + +part + id = "m64"; + desc = "ATMEGA64"; + has_jtag = yes; + stk500_devcode = 0xA0; + avr910_devcode = 0x45; + signature = 0x1e 0x96 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega128 +#------------------------------------------------------------ + +part + id = "m128"; + desc = "ATMEGA128"; + has_jtag = yes; + stk500_devcode = 0xB2; + avr910_devcode = 0x43; + signature = 0x1e 0x97 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + rampz = 0x3b; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN128 +#------------------------------------------------------------ + +part + id = "c128"; + desc = "AT90CAN128"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x97 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega16 +#------------------------------------------------------------ + +part + id = "m16"; + desc = "ATMEGA16"; + has_jtag = yes; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x03; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 100; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "calibration" + size = 4; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega164P +#------------------------------------------------------------ + +# close to ATmega16 + +part + id = "m164p"; + desc = "ATMEGA164P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega324P +#------------------------------------------------------------ + +# similar to ATmega164P + +part + id = "m324p"; + desc = "ATMEGA324P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega644 +#------------------------------------------------------------ + +# similar to ATmega164 + +part + id = "m644"; + desc = "ATMEGA644"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x09; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega644P +#------------------------------------------------------------ + +# similar to ATmega164p + +part + id = "m644p"; + desc = "ATMEGA644P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega162 +#------------------------------------------------------------ + +part + id = "m162"; + desc = "ATMEGA162"; + has_jtag = yes; + stk500_devcode = 0x83; + avr910_devcode = 0x63; + signature = 0x1e 0x94 0x04; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + + idr = 0x04; + spmcr = 0x57; + allowfullpagebitstream = yes; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + + ; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; +; + + + +#------------------------------------------------------------ +# ATmega163 +#------------------------------------------------------------ + +part + id = "m163"; + desc = "ATMEGA163"; + stk500_devcode = 0x81; + avr910_devcode = 0x64; + signature = 0x1e 0x94 0x02; + chip_erase_delay = 32000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 16000; + max_write_delay = 16000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o x x o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i 1 1 i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x 1 o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x 0 x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega169 +#------------------------------------------------------------ + +part + id = "m169"; + desc = "ATMEGA169"; + has_jtag = yes; + stk500_devcode = 0x85; + avr910_devcode = 0x78; + signature = 0x1e 0x94 0x05; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega329 +#------------------------------------------------------------ + +part + id = "m329"; + desc = "ATMEGA329"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3290 +#------------------------------------------------------------ + +# identical to ATmega329 + +part + id = "m3290"; + desc = "ATMEGA3290"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a3 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega649 +#------------------------------------------------------------ + +part + id = "m649"; + desc = "ATMEGA649"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6490 +#------------------------------------------------------------ + +# identical to ATmega649 + +part + id = "m6490"; + desc = "ATMEGA6490"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega32 +#------------------------------------------------------------ + +part + id = "m32"; + desc = "ATMEGA32"; + has_jtag = yes; + stk500_devcode = 0x91; + avr910_devcode = 0x72; + signature = 0x1e 0x95 0x02; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega161 +#------------------------------------------------------------ + +part + id = "m161"; + desc = "ATMEGA161"; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + signature = 0x1e 0x94 0x01; + chip_erase_delay = 28000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + memory "eeprom" + size = 512; + min_write_delay = 3400; + max_write_delay = 3400; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 14000; + max_write_delay = 14000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 16; + blocksize = 128; + readsize = 256; + ; + + memory "fuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x o x o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x 1 i 1 i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega8 +#------------------------------------------------------------ + +part + id = "m8"; + desc = "ATMEGA8"; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + signature = 0x1e 0x93 0x07; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 10000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega8515 +#------------------------------------------------------------ + +part + id = "m8515"; + desc = "ATMEGA8515"; + stk500_devcode = 0x63; + avr910_devcode = 0x3A; + signature = 0x1e 0x93 0x06; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega8535 +#------------------------------------------------------------ + +part + id = "m8535"; + desc = "ATMEGA8535"; + stk500_devcode = 0x64; + avr910_devcode = 0x69; + signature = 0x1e 0x93 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATtiny26 +#------------------------------------------------------------ + +part + id = "t26"; + desc = "ATTINY26"; + stk500_devcode = 0x21; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x09; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x x x x i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny261 +#------------------------------------------------------------ +# Close to ATtiny26 + +part + id = "t261"; + desc = "ATTINY261"; + has_debugwire = yes; + 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; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0c; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny461 +#------------------------------------------------------------ +# Close to ATtiny261 + +part + id = "t461"; + desc = "ATTINY461"; + has_debugwire = yes; + 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; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x92 0x08; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 256; + page_size = 4; + num_pages = 64; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny861 +#------------------------------------------------------------ +# Close to ATtiny461 + +part + id = "t861"; + desc = "ATTINY861"; + has_debugwire = yes; + 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; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x93 0x0d; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 512; + num_pages = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATmega48 +#------------------------------------------------------------ + +part + id = "m48"; + desc = "ATMEGA48"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x59; +# avr910_devcode = 0x; + signature = 0x1e 0x92 0x05; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 45000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega88 +#------------------------------------------------------------ + +part + id = "m88"; + desc = "ATMEGA88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; +# avr910_devcode = 0x; + signature = 0x1e 0x93 0x0a; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega168 +#------------------------------------------------------------ + +part + id = "m168"; + desc = "ATMEGA168"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x06; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATmega328 +#------------------------------------------------------------ + +part + id = "m328p"; + desc = "ATMEGA328P"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x0F; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 1024; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + #------------------------------------------------------------ +# ATtiny2313 +#------------------------------------------------------------ + +part + id = "t2313"; + desc = "ATtiny2313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; +## Use the ATtiny26 devcode: + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0a; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. +# The information in the data sheet of April/2004 is wrong, this works: + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2 +#------------------------------------------------------------ + +part + id = "pwm2"; + desc = "AT90PWM2"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3 +#------------------------------------------------------------ + +# Completely identical to AT90PWM2 (including the signature!) + +part + id = "pwm3"; + desc = "AT90PWM3"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2B +#------------------------------------------------------------ +# Same as AT90PWM2 but different signature. + +part + id = "pwm2b"; + desc = "AT90PWM2B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3B +#------------------------------------------------------------ + +# Completely identical to AT90PWM2B (including the signature!) + +part + id = "pwm3b"; + desc = "AT90PWM3B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny25 +#------------------------------------------------------------ + +part + id = "t25"; + desc = "ATtiny25"; + has_debugwire = yes; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x08; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny45 +#------------------------------------------------------------ + +part + id = "t45"; + desc = "ATtiny45"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x06; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny85 +#------------------------------------------------------------ + +part + id = "t85"; + desc = "ATtiny85"; + has_debugwire = yes; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega640 +#------------------------------------------------------------ +# Almost same as ATmega1280, except for different memory sizes + +part + id = "m640"; + desc = "ATMEGA640"; + signature = 0x1e 0x96 0x08; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1280 +#------------------------------------------------------------ + +part + id = "m1280"; + desc = "ATMEGA1280"; + signature = 0x1e 0x97 0x03; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1281 +#------------------------------------------------------------ +# Identical to ATmega1280 + +part + id = "m1281"; + desc = "ATMEGA1281"; + signature = 0x1e 0x97 0x04; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2560 +#------------------------------------------------------------ + +part + id = "m2560"; + desc = "ATMEGA2560"; + signature = 0x1e 0x98 0x01; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2561 +#------------------------------------------------------------ + +part + id = "m2561"; + desc = "ATMEGA2561"; + signature = 0x1e 0x98 0x02; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny24 +#------------------------------------------------------------ + +part + id = "t24"; + desc = "ATtiny24"; + has_debugwire = yes; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny44 +#------------------------------------------------------------ + +part + id = "t44"; + desc = "ATtiny44"; + has_debugwire = yes; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x07; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny84 +#------------------------------------------------------------ + +part + id = "t84"; + desc = "ATtiny84"; + has_debugwire = yes; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0c; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB646 +#------------------------------------------------------------ + +part + id = "usb646"; + desc = "AT90USB646"; +# signature = 0x1e 0x96 0x82; ? + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB647 +#------------------------------------------------------------ +# identical to AT90USB646 + +part + id = "usb647"; + desc = "AT90USB647"; +# signature = 0x1e 0x96 0x82; ? + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1286 +#------------------------------------------------------------ + +part + id = "usb1286"; + desc = "AT90USB1286"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1287 +#------------------------------------------------------------ +# identical to AT90USB1286 + +part + id = "usb1287"; + desc = "AT90USB1287"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega325 +#------------------------------------------------------------ + +part + id = "m325"; + desc = "ATMEGA325"; + signature = 0x1e 0x95 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega645 +#------------------------------------------------------------ + +part + id = "m645"; + desc = "ATMEGA645"; + signature = 0x1E 0x96 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3250 +#------------------------------------------------------------ + +part + id = "m3250"; + desc = "ATMEGA3250"; + signature = 0x1E 0x95 0x06; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6450 +#------------------------------------------------------------ + +part + id = "m6450"; + desc = "ATMEGA6450"; + signature = 0x1E 0x96 0x06; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; diff --git a/arduino-0018-linux-x64/lib/RXTXcomm.jar b/arduino-0018-linux-x64/lib/RXTXcomm.jar new file mode 100644 index 0000000000000000000000000000000000000000..84e5f01dff26139e016015725e00afc37ce58e0d GIT binary patch literal 59464 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