serjtag-0.3/0000755000076400007650000000000010636223670012515 5ustar suzsuz00000000000000serjtag-0.3/Makefile0000644000076400007650000000273410635450323014157 0ustar suzsuz00000000000000############################################################################### # Makefile for the project serjtag ############################################################################### ## General Flags PROJECT = serjtag MCU = attiny2313 TARGET = $(PROJECT).elf CC = avr-gcc ## Options common to compile, link and assembly rules COMMON = -mmcu=$(MCU) ## Compile options common for all C compilation units. CFLAGS = $(COMMON) CFLAGS += -Wall -DF_CPU=8000000UL -Os -fsigned-char ## Assembly specific flags ASMFLAGS = $(COMMON) ASMFLAGS += -x assembler-with-cpp ## Linker flags LDFLAGS = $(COMMON) LDFLAGS += -Wl,-Map=$(PROJECT).map #LDFLAGS += -Ttext 0x1000 -Tdata 0x800160 ## Intel Hex file production flags HEX_FLASH_FLAGS = -R .eeprom ## Include Directories INCLUDES = -I. ## Objects that must be built in order to link OBJECTS = serjtag.o i2c.o ## Objects explicitly added by the user LINKONLYOBJECTS = ## Build all: $(TARGET) $(PROJECT).hex $(PROJECT).lss size ## Compile serjtag.o: serjtag.c $(CC) $(INCLUDES) $(CFLAGS) -c $< # $(CC) $(INCLUDES) $(CFLAGS) -S $< i2c.o: i2c.c $(CC) $(INCLUDES) $(CFLAGS) -c $< ##Link $(TARGET): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET) %.hex: $(TARGET) avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@ %.lss: $(TARGET) avr-objdump -h -S $< > $@ size: ${TARGET} @echo @avr-size ${TARGET} ## Clean target .PHONY: clean clean: -rm -rf $(OBJECTS) $(PROJECT).{elf,lss,map,hex} serjtag-0.3/README-j.txt0000644000076400007650000000742110634427765014457 0ustar suzsuz00000000000000 serjtag は、USB910(A) の jtag 機能 と i2c マスタ機能を取り出して、 ATtiny2313 に移植したものです。 USB910 の jtag 機能は、jtag にしては遅すぎるために、 秋月の FT245RL USBパラレル変換モジュール(K-1799) を使う、高速版という位置づけで 作りました。 いまのところ、この jtag 機能を サポートしているソフトウェアはありません が、xilprg という ソフトを改造すれば、Xilinx のデバイスへの書き込みが できるようになります。 xilprg http://sourceforge.net/projects/xilprg xilprg is a Xilinx FPGA/PROM/CPLD JTAG programmer tool for Win32/Linux. Supports Parallel III cable, Digilent USB. cblsrv is a Open-Source CableServer for Xilinx Impact. プロトコル 一般コマンド 'S' : get Software * SERJTAG を返します。 'V' : get software Version * 拡張モードの場合、拡張モードを リセットします。 'v' : get hardware Version * 拡張モードの場合、拡張モードを リセットします。 'e' : 拡張モード(1)にします。 'j' : 拡張モード(2)にします。 拡張モード(1) コマンド 's' chan size chan (1バイト) チャネル size (1バイト) 1-8 の範囲 戻り バイト数 (マイナスの場合はエラー) 'r' chan size chan (1バイト) チャネル size (1バイト) 1-8 の範囲 戻り バイト数 (マイナスの場合はエラー) 受信したバイト数 チャネル 0xA 以上 I2C エラーコード (-1) チャネルが存在しない or size が範囲外。 (-2 〜 ) デバイス固有のエラーコード JTAG/SPIマスタ (拡張モード2 コマンド) ( 'j' コマンドで、拡張モード 2 に入る必要があります。 ) パケットの形式 +-----------+-----+-----+-----------+-----------+ +-----------+ | COMMONAD |FLAGS|BITS | BYTES | DATA 1 |... | DATA N | +-----------+-----+-----+-----------+-----------+ +-----------+ 8 5 3 8 このフォーマットで送受信ともやりとりします。 FLAGS : bit4 RECIEVE フラグ bit3 TMS_HIGH フラグ bit2 TDI_HIGH フラグ bit1 USE_DELAY フラグ : JTAG 転送時 TCK の ON/OFF 時に delay を挿入します。 bit0 0 未定義 データ長 (bit 単位) BYTES * 8 + BITS ( データ バイト数 N = BYTES + (BITS + 7)/8 ) データフォーマット MSB first の bit-stream 最大 511 bit 'r' Request Recieved Data データ長 = 0 データ 0 バイト 記録した TDO Stream の 受け取り要求 TDO Stream は、COMMAND に 'R' が設定されて 送られてきます。 's' Set Port データ長 = 1 バイト データ bit7 TDI 値 bit6 TMS 値 bit5 TCK 値 bit3-0 ディレイ値 'd' Put TDI Stream データ長 = TDI Stream ビット数 TMS_HIGH フラグ によって TMS を設定し、 TDI Stream を ターゲットに 送ります。 RECIEVE フラグが 1 の場合、TDO Stream を 記録します。 'D' Put TDI+TMS Stream データ長 = TDI+TMS Stream ビット数 TMS_HIGH フラグ によって TMS を設定し、 TDI+TMS Stream を ターゲットに 送ります。 bitmap は、TDI TMS TDI TMS の順にデータをセットします。 RECIEVE フラグが 1 の場合、TDO Stream を 記録します。 'c' Get TDO Stream データ長 = TDO Stream ビット数 データ 0 バイト TMS_HIGH フラグ と TDI_HIGH フラグ によって TMS,TDI を設定し、 固定値の TDI Stream を ターゲットに 送り、TDO Stream を 記録します。 --- 拡張モード 2 プログラミングメモ 初期化 (1) 'S' コマンドで プログラマ名を取得。 "SERJTAG" または、"USB910" をチェック (2) 'V' コマンド を発行します。 "24" などと 2 バイトの情報が返却される。 (3) 'j' コマンド で 拡張モード(2)にする。 "Y" が返却されたら、拡張モード(2)をサポート。 "?" の場合は、拡張モード(2)をサポートしていない。 状態がわからないときの再初期化 (1) 'V' コマンド 70回 発行し、受信データをフラッシュ(全部捨てる)。 最大データ送信長は、3+64バイトなので、'V' コマンドを送りつづければ、 状態が確定します。 (2) 上の 初期化手順を行う。 serjtag-0.3/i2c.c0000644000076400007650000001110010634274013013322 0ustar suzsuz00000000000000/* * Copyright (c) 2007 Koji Suzuki * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include "serjtag.h" #define poll usbcdc_poll #define bit_set(port,bit) { port |= (1<<(bit));} #define bit_clear(port,bit) { port &= ~(1<<(bit));} #define min(a,b) ((a)<(b) ? (a):(b)) #ifdef I2C_EXTENSION #define TGT_SDA TGT_MOSI #define TGT_SCL TGT_SCK #include /* * 400kHz 1Mhz * Min Hi time 1.3u 0.4 * Min Low time 0.6u 0.4 * */ const static uint8_t i2c_delay_count1 = 2; // 0.5 us + @ 12MHz const static uint8_t i2c_delay_count2 = 6; // 1.25 us + @ 12MHz const static uint8_t i2c_wait_count = 100; // 125us @ 12MHz static inline void SCL_HI() { bit_set(TGT_PORT,TGT_SCL); bit_clear(TGT_DDR,TGT_SCL); } static void SCL_HI_CHK(uint8_t i) { bit_set(TGT_PORT,TGT_SCL); bit_clear(TGT_DDR,TGT_SCL); for (i=0; i|-+ +-|>|-+ | | | | | | | | | +-+-o o-+-+-o o-+---+ V --- --- PWROUT(+5V) SW1 SW2 SW1 = ON , SW2 = ON -> I/O base 3.3V (usable +- 25% ?) SW1 = OFF, SW2 = OFF -> I/O base 2.7V (usable +- 25% ?) SW1 = OFF, SW2 = OFF -> I/O base 2.1V (usable +- 25% ?) ATtiny2313V ~RESET --+ VCC D4 PD0 | SCK TGT_SCK TGT_TCK --- R ---o D5 PD1 | MISO TGT_MOSI TGT_TDI --- R ---o RXF# PA1 | MOSI TGT_MISO TGT_TDO --- R ---o TXE# PA0 | PB4 TGT_RST TGT_TMS --+ D6 PD2 | PB3 D3 | D7 PD3 | PB2 D2 o RD# PD4 | PB1 D1 SW3 o-- R -o WR PD5 | PB0 D0 o GND | PD6 PWREN# | | | +-------------------------------+ SW3 ... for self programming */ #include #include #include #include #include #include "serjtag.h" #define JTAG_BUFSIZE 64 #define getc par_getc #define putc par_putc #define bit_set(port,bit) { port |= (1<<(bit));} #define bit_clear(port,bit) { port &= ~(1<<(bit));} #define min(a,b) ((a)<(b) ? (a):(b)) #define PAR_WR PD5 #define PAR_WR_PORT PORTD #define PAR_WR_DDR DDRD #define PAR_RD PD4 #define PAR_RD_PORT PORTD #define PAR_RD_DDR DDRD #define PAR_TXE PA0 #define PAR_TXE_PIN PINA #define PAR_RXF PA1 #define PAR_RXF_PIN PINA #define PAR_PWREN PD6 #define PAR_PWREN_PIN PIND #define PAR_DATA_H_DDR DDRD #define PAR_DATA_L_DDR DDRB #define PAR_DATA_H_PORT PORTD #define PAR_DATA_L_PORT PORTB #define PAR_DATA_H_PIN PIND #define PAR_DATA_L_PIN PINB static void par_init() { bit_set(PAR_WR_DDR, PAR_WR); bit_set(PAR_RD_DDR, PAR_RD); bit_set(PAR_RD_PORT, PAR_RD); } #define swap(v) __asm__ volatile ("swap %0" : "=r" (v) : "0" (v) ) #define nop() __asm__ volatile ("nop" ) static inline uint8_t par_getcx() { uint8_t hi,lo; while (bit_is_set(PAR_RXF_PIN, PAR_RXF)) ; bit_clear(PAR_RD_PORT, PAR_RD); nop(); hi = PAR_DATA_H_PIN; lo = PAR_DATA_L_PIN; bit_set(PAR_RD_PORT, PAR_RD); swap(hi); return (hi & 0xf0) | (lo & 0xf); } static uint8_t par_getc() { return par_getcx(); } static void par_putc(uint8_t c) { while (bit_is_set(PAR_TXE_PIN, PAR_TXE)) ; bit_set(PAR_WR_PORT, PAR_WR); PAR_DATA_H_DDR |= 0xf; PAR_DATA_L_DDR |= 0xf; PAR_DATA_L_PORT |= c & 0xf; swap(c); PAR_DATA_H_PORT |= c & 0xf; nop(); bit_clear(PAR_WR_PORT, PAR_WR); PAR_DATA_H_PORT &= 0xf0; PAR_DATA_L_PORT &= 0xf0; PAR_DATA_H_DDR &= 0xf0; PAR_DATA_L_DDR &= 0xf0; } static inline void par_putcx_start() { PAR_DATA_H_DDR |= 0xf; PAR_DATA_L_DDR |= 0xf; } static inline void par_putcx(uint8_t c) { while (bit_is_set(PAR_TXE_PIN, PAR_TXE)) ; bit_set(PAR_WR_PORT, PAR_WR); PAR_DATA_L_PORT &= 0xf0; PAR_DATA_L_PORT |= c & 0xf; swap(c); PAR_DATA_H_PORT &= 0xf0; PAR_DATA_H_PORT |= c & 0xf; nop(); bit_clear(PAR_WR_PORT, PAR_WR); } static inline void par_putcx_stop() { PAR_DATA_H_PORT &= 0xf0; PAR_DATA_L_PORT &= 0xf0; PAR_DATA_H_DDR &= 0xf0; PAR_DATA_L_DDR &= 0xf0; } static uint8_t extmode = 0; uint8_t ext_buf[JTAG_BUFSIZE+1]; static inline void init_spi() { TGT_DDR &= ~((1<>= 1; if (jtag_bitoff == 0) { jtag_bitoff = 0x80; jtag_bytes++; } } _delay_loop_1(delay); bit_clear(TGT_PORT, TGT_TCK); } } int main(void) { uint8_t ch; #ifndef NO_CLKPR_SET /* set system_clock pre scaler 1/8 => 1/1 */ CLKPR = (1<>= 1; if (bits) { jtag_send_d(flags, getc(), bits); } } else if (ch == 'c') { // Get TDO Stream bits = getc(); bytes = getc(); flags = (bits & ~JTAG_BITS) | JTAG_RECIEVE; bits &= JTAG_BITS; jtag_prepare(flags); r = (flags & JTAG_TDI_HIGH)? 0xff: 0; if (flags & JTAG_USE_DELAY) { for (i=0; i EXT_BUFSIZE) bytes = EXT_BUFSIZE; if (dev == DEV_SYS) { ext_buf[0] = PORTA; r = 1; #ifdef I2C_EXTENSION } else if (DEV_I2C <= dev && dev <= 0x7f) { r = i2c_recv(dev, bytes); #endif } putc(r); for (i=0; ik療壕?\V~稀]6巾鏥<厘r字渫l戔 {説Y]]@ メ^淋=r戴[K3綰VgmシqNy]jQZ 8 ;e- y=*m_NTkTkpne@G{]Km,zS,U1,@ }[乕$p旙/5|b獻挂"#} p )礬謇Mt}^琶ly^X固#=NH\廁ub2B+cC@ Zh%0\io,L[ T╂縛潺kA))J.#8慫CJV8wn 雑9ZC%讐E,fQ@$~[T-4mi@I牋;fC4wぱ6蒂eN1D,放z~△ =wX航膩X~捻!W膿8呵zΑЇk%誼F$ス/F;Vσ"股滬.\"D%m _Ue豫M嚶Stk7$T棊F::P6樒&'yDlB9s弗/姙i6;As燥>耙Y2Et侏*\ mq[T呷5悔Z[ ?+naZVj麼 m ?уY5{x+Kqr 逋傀dP]菻^Mp/L$N牲bV集* l箒zqsQj4Ig魚ZjUDAWI)E8vJ粗zPMB楪TrC 嘲U%U撒p謬C CQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEei&5;T矯唆N G(V((((((z5況6m0;V|H仙ZtQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEUmD]pD/Uu/MR懷 i=ヌ奈$As姨/[$.vFホ@3W;"\V}~リvz雫笶/3>g擧府珥8Z 皿~G8'5x[5q}g潴Gj3~*iSf餬)\[xZgGT盍H齒 線3牡!i|湊c<>宮#\燒要 xE8mP)鵑E(靉M'wMh舐@ }6Gu=(bPi#\燒?哈.陋n-[W夷陥u N;kX${9{(v3哈.陋gk旭.7 ,j 3竈牡E屆]_蝟W/嘩H'%@5x-z菫r筈ゎL藾E槨到珱U-Em舷淵5[r6gEwqtgi棠鯡`@k/ 茉~万3SO?哈.陋y羶祚xo\子/同V '8枝_xL霆VF)鏥)F絣Fw p}j x帑IEDA原輯Q0\KC園/ugMm,夕7 6q聾^|@}6zU>w(= 侯怖^$Y旌"~嗄yч岔 [j末 J.鍋梼?~?親DtK焜\WK5(,/姦愚B7a絹f/e":_ハo顳/吝堅帋23U$+霊0i1]KM7Q肖m貨n! o#G3eQs棡hT'''ii宇Ai qk:D9Vo?觴v亶c.〇ETQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@U埒w\_A5j_ /ケG,([dik_i:蒭弓_臨Ks(にdIuc鬯耽.ik饋M[P丼尋.&PH]d鰛'姑7検陦'癧k<]I鈎M*榾^級u ゥ[Z[0営T}y=學y誣ホGau)#(] '7:眇*- 寇7 {<6U販:E&ch7PJ xD咄 iч嶇=RJFRI=O4WgF儺 N稼KR#+)"U 鞍4U痞K甬i}>吁 氛b6AG_卒l銓VZ|K bIkf蛋^咐X6`&7推Xp1N;S~懸z寵*淘 董iοHL+ 00#m舷扮5|3]Hグb訖5McxkH墓狽k聖-!99詈sX^[58/ \Eo'z冀%孃Htx説5髄JF;:e醜 燉萎邉)^*'6嚶Nt=/A6Noe ;APOZE?,57l檮$F┏m雫滉A泣C+B y慧mE媼 .aykj7鯏6飭$`叛^gYA2$js9;^tK[慌,EDD鱆;A2O]s9下| 掫Tr,az誡飫O紡偬NsX愬mj瑛m,墳()Rs苴邱xVPk蚌]3i^$檍争$SN`x 市..-aB嵐zWE'kqUQB'i3QH((((((((((((()蝶B8:o:@#Jn親鬟l}@5'uskB-U3`77文9sZZViDn 黷'BX>oz8(凶v/g:DP┰`V#O觴!Z?jt 'W0?if7Vd諡]3}鋳釿Лq+瘠岼HGFH6 *M要>Pr3Va_E=嬪~A\7?B"C%砲F!拷koO詮[Bb1yql/示n阨WM現EЮD8 I$PI髭東痍d豫拳瘋p]mн/吝堅囈-:[{8國 vL黏卿j{牡X*Pp霈-萄\|≒vyq帛":_ハo颱xc>|AaY?\uTs1(v0zZ#6昿 体5[烹\2^ol:.g!c崕 z2+8#XxZX9vgf2n(粭轡8+B](G1吮eY 手 33O嚶E橋R)$95kx-{)|俣>瞹'N8#撻ZPv*0QwH(整((((((((((( FckitUh;jm Fx濺i $y&:'pU|7krnsy:Bae\RssK'm%DV8酸R#pk-欠棡不h."傾嚆i$ETgS魘~nl`|U14剋ol$N nV彙v6V蚕F+M6qRji$:yc)R[x&.o^瓸bW4;F簒nUuBGoI?A35サX E拳_隰b瑞g麦5(xB4(O郡wBCg":us-噐+/Oo鮨\xg涛OZR[mp'8n9 |O衛|察^]yPY 皺=驪炭欖^勵d';v@蓄倦}@牡s$[ `I=+霰+FKVjwYP,*憺y@O7LT:洸{m-k聒:闢c3撫飭|:癬oV慄e[I榿@7 Ao昼 >li"H{chc~}m!,トP$qg麦5k/Oo鮨G^>6燉*O ?;\V寝餠+e黹m~W($qy~,x{Bg[RM%+ <^◎拳_隰W -VQ心t r\04=,I"h  w#犖 69#oSQ|I危>EMKI亙r9>噤Fj剄!hlvIrル|Xyw-'M珂 HH UGa8 祷錢~址lXk[3kt7+#pk険餠|7m滄xk< v戚9x=揮aSRf]G]原h`( >級o,鞳{cj邏NH@>凧1xD:oms 7{ GZo/ kZ沱S淮6mj7u服U4QE}_jriz,v< sqq.b9@S幡奥@dV%_ S&8?~?:(砺k8??u燠&\xR<八En*|'o瓢9~:Zq_椽ddMg6>S恣YV暎ZMn玖儷7~}Fd$砺k8??u燠&hY<伐Ru{?J#-]`h砺k8?y寔澎^XYe鰮h8)腥撫曠l[K[E&m e}楽祀 愃陜 w?G.C]蔦cX]!afyD2y誚ё勗_kZ螯T曵$y1?B醐]w]`i閧0Y-圄 文3r}jBK T|Aq$ス秋{ u燠&]w'{!!騎W*Bq制F%至 k禁饕 9R;獗{ _p\o.C]佃俔sp5ゥj?vf$+完9qU去Y,v|-1=G晝*b訖5M愃陜 w?VU2槨8ciDRC+q@9Y4i`iJ",vs8ъ+b訖5M戛 NS23zKc/筺OD(T噫 co%'尋蝴艘 m~4[ GbG#蜿MWh.危b;4i Sx8$g邂$erzエW#zc)!主醯Y +跳F{V%H狛觖=c=9)%7髄7惚e堪T|茫匝s=xrs#G5k71<+`sN2;T]制}5M縮OBA軅?.=鰹C匳大EES謝:EQ患vgP5[wL生動EeO ?;\@VW$qg麦4EeO ?;\@VW$qg麦4EeO ?;\@VW$qg麦4EeO ?;\@VW$qg麦4EeOW>/齏蛹#9 ry>?竍E]yWWEI$TwGf5稀W彪HI 2s濶X7anTF16[GNJtbu:+/B.+Fdl*鴻'羌+Qq|o6k x'+9鑁Y w:x賤#[NQ=99USW_P>v械2R盟FO_O娥nBeB##$4ZYヽ譟wQ`q]JyuV`G孔 NB`l?'5籐u5│Ki/7c#c<SZWm(m犯88炉NC]Ktde&咳 w$p]J:DY8擽z" 儁b\毛2煩害*?~孚t&1g勞h鷦Ed(F#U疏fPWT^麸_Ib&1B* =2j離|-ln*%s蛬5KY#稼勧cI%点]_P}s脞W)icu:FH2uw?隆Q7_uM桍屁蚊雨CIi貶q.ba;_罩&4Asgoy缸%F壮7@GC*n~1'LG?歐)TQEQEC5サX E拳_隧tPO貊?|m随z ET睦臚棍Q拳_隧tPO貊?|m随z ET睦臚棍Q拳_隧tPO貊?|m随z ET睦臚棍Q拳_隧tPO貊?|m随z ET睦臚棍Q拳_隧tPO貊?|m随2mL !OhRR*| k:纐fR+乃B#s^\?竍E]QEsmW揃0幀岡0汐p9/ 廼a[雀kvWHy$しuΨ胡`橋W僊YWrebSZ[30iqQ1偉pAiugm 2Q*o V*>蔽lu%]],~kWv櫃係状枷_侍$慥<-楹1隻9 HFVdgvU榊 I5f咀52bc7NR+NU{wZ岨:ZIwc*g'=3T筋]yL2r:1{暉 ]Y.,\$,FI%3ta偽査h"p2A8>:K+-^ kp,'8皮#虞p#@g&mn4dHc斂(T釵畠2in"閏;OJ7n->浚荷掟}9#G2HRi%q(I4j`.Fp*Cmk b8aT5g+_AQH5 3桟EvhJ(((凱.退uxJ%H= M貳s儚bjw`n.y'鰐x}H_ho陦MiC0umBuu71G#FG8}z(ョ{\F 勺O'陂J?G7Q VA& U癬iOF'\壬餾?]sG楢(e?阡nF'\壬餾(e?阡nF'\壬餾(e?阡nF'\壬餾(e?阡nF'\壬餾著O{=政`F溝sN#Eufiつl^V,1y%oVc柊/QEQEQE:r3H 靦oWu.Qm\TOx9$2'a 0 wz.N坊e_uV燉足QEv*f拳_陦6麦|随Z*U猶+o吹Gm[潺 粤講h+[)< ^M粗8M#O[vDQjj+b餘ei8I枷Fq}+メrtt?拔?黼m~+S{g煢'YP0~5ガ\]X^瞼tPY仔H.q嫣|6g5/AOZ泙e跼X叛^`:+v=+-6xX$薙tHa fxq;eB┝ *成甌YO-GS剩梟淀昨&[i3b]Q溯?杞7d:NskfDV;+囁7 v燔3n?亰m1楢M期MB欸 SNko[y'1P `點,xc>|AaY?\uW Ciucq{nすK-&Fwm8LWio7@io7G粋[tQ\粋[tio7@E桃"}H慈句l \庶365原窟pp=kjtyi&wW(ro綬"V稷; `qC5汞)擬Fty$0o`g#zm旻s陰現FMB{DQ)5<鞠Y'vQHY,zzw:(QEQEQEQEQEQEQEQEQEQEQEs/fス愴密sf/PH$~u[ 枡^"X*X批l屓gh?oqh寿*s<酵AO=>帷^$稼 m5{; R;0\惠a@"酬WIWT #B蔽upz娼Ο yx葱rx]躑l6s<.2d((Ad寔&QO5m&+/5"bO冲 夕 [悃dF8AU繦v盾Es"^!hTm]養:z^髭)_:甞zUsf((;輯0$F3Y6渠g柤鵤r| MlIF(姓Pk>O牒勺Br |e g(c.%FN e版+V霊Il3驕4gQ,A(SH$n 絶{V4*mZ(5R]6Ce晤ベnc?Lu屈)Xm^ uH|Vf gl JXF躪O苣,ZU3[)%~T,=iG_wfeZ纐yZ洗fvR[ rqァZl~'x屍{cjl,Az屮毬掬R碧鯵r*鞴vXDH#麩^1艟:<5=H^I禝!#K*祚A附.O,1毟d1mqN^fOR+TUYU2,KQD EC= K4QEb0(((((((輻鴫K{ dnZ=伝 秕zU S: dg6蟷\?;O2h7繦B;:<~=l欽p0fI$ぶ7uj%rQX隋-QO!Gm経Mq:5>#]頂}Htk 止H=觚%f%a5^ 沙艶ィO+D{gsPw =):{?W尓ふ o/.H醴翕 否wux+5君\了CFR4AE% K}O WkO/hk較/豕=wS个帳間up032{虍 播Q軸WX愬qm'@H*{A髱怏B/tmf\V枹),2 b朸)H^((+! 4 +6+OJ饅皖ge yg:擅w m\cr*am擇C漏%V椶0$7M[羣Q6?/竸艸Q ~??文XM7D鞐]B[M+察=#kh~"''v&[Ovd門 ps嗷悪S笹ハ_囎+額MMケ+N$#餤DU服菁Vァ蝴4q膝\ #mRA9?E疋8I雌━u.矚 4Uv杏#p認5-ュc MダE)}G右虱jw.Tt阡 4Bio複mKTn寅鞭ohs貘作]4陪犠釡拯1y馮夏!0 гN2QE QEQEQEQEQEQEQEs泡瀏%mnp+d y蜍ZZ6t._Zは$d1~8IdYsN俐?}aI Y淬Dd '葷穢-}zf-&{#oR0?+苙 (8?1猜O颱4}mws>zKwv鬆'i8+↑_歹21]AJ+vC卜h:斡6]Yw ;炳+74.'酬S|SKkp CcO_S]K# o 鼇 騷_饉-]2役 xN靂w]灸w0k顎K9e>eオh%会gm:MKp7zl5brIy)YZ[蒸ma瑤籀H&?詆*起jSZB馭!7艮蜍V?詆*櫑RqjKtg商4m提$e,C[(虫i- 砌hY湧b鰓[$靡mQO敲.'x夥.]ZMB竝e "l鷏j~=Ll5鏨杆nd隣bmjy禝遇m2w +勞Q@?o?uU崩CWU@Q@r蔟e}Zp收8舫u羝Omh 8;c\O騨/池|80m{sfz癪wY]+ A2#ea"kMY頌smqa#恷柱膕栃迵V~4mP8牴>w#X美#Yg?舸C据葉?x8l5Cヮq;KUHeiχ X+-Nf/g($% y U}7ZTs悲Nv#^j大M,x蹂m^~o8釉O[4j oIズG\I鍵al nNZ\罷AOx^H瞞58nHYzU:G, 恭D~蜚#ko 葛|k|!6e酵r{ kOメ鼎Xヒ j10 |!`8 GRYO#洲y?ZWIy)@r?:G{O 諍t擣pIpH尊oqZEE)lg糾H姫&,w*#ll`批kZ^+Tf(膵陶[X湍渭Xi21I@秘Ut鯤{6槐2>vs,gVN力剣z侶, @$m+d9k6y(18'vv狼fh7y[3[ Tオ-XG噎2;me\臂rsS筌迅琴^`r鬚ps簸5=ei7P^n]H蓚OjSI;DaETQEQEQEQEQEQEQEQEQEc#ォ\!F閏G雎&SvR(YZo+靖lMl批l屓f^癬7:Tznl[' =I=jQE#@(_-_@_貸 螯(WCmcR呷IiRo)$$P9]SMl}:  h*F 乱k畋kΧfrn]D)"# aiR49/&oI4E%#h%s*純p9噐]桎[Gsk2M *r肖o4J]cEΧ肖c識穴8Z(ZfcZ脹(Yu  @V湿訓DkuWll>Vk'^o2a20槓T ]5$グ2V梦u-&YPqsds~tF育w1 %棹XO4F倣}墻F2 j TS]很≠z!漆[n]{I勲7u6}<r3A瑠~zbj怯4RLcX9rюm連薹3\M5o%b)]G@}SG噬7Ij90故Km8kFfd%Z寶輸$Va1Aq]%28cwv占OSOjJ2皙v;奇6r9@ぷh?m鋺E2\K![hbV8]櫑,-寃u o`{ rO/^鉅jVI灸!融迎 r8'T2)踴_]ew:渠i)鈬 E  闍weR夬。%Z鉞TUuT(W襍昏|W! 恆+( z恕Z5r@cj箠話 厘>#g謝5 ] M勾-サne`2簾nH9z嫺;T OX!a鑑F.3zkSrF澳D~~A5H[U渦恃BZ`纛Dgl#z jh擡:(剋%^7兀2pA-4貔ERw砥w7B^獺.!h祝 盧*托w)o!7wB[[5斧g逸sp&ghq ~R_MIpSx;{ z剞x恁仁6MK?邉Kud臼q7=U~=ZMr派hゴzIbX~U*sC^;z+<]-Ww79B^_UB2@wv{樢sZ|6: !"qIzY被i^OV墅ゑ4Ra3,;UsX幎tHcfe*2=Zひp謚X}:IG碍glcs'箟ヨ(l`m'翫K⇒*規k,伶xOmZ^X帳@hRWsxpt_(G* 茯0NH,徒0q@ツ[;F}*u=*遼'`'phTjI] RQQnWRU才(EPEPEPEPEPEPEP=}-g,林w;峇4](h-l&J鱧iw18'g峇h%Zr+z (g;訥旱b[X*Eqq靂帛炭椶wiyalfI冽偉:0k識U#[陥= 赤Z5jz|`m趾X影1狛 'wQH(|W! 恆+W襍昏(ЙXi蒄}ww)k|=+6彈1ck翕p`脱H^EptOOms\:縷攵 `1薄_ 檪/薄_ kfg/&蚓:zZ構ch袖T9lNb(,UmM挟iy`=Q[Wmb1&饑WBa;7{*+h/me宜eU)$n2垓杙PA{jC# 疳#t4画Z頤F狆s/Y}葷yzU>謄馭:拳p?R+B{-!Z^y+ s薹:vkbVv%,TS被i^OUcM嶝^詫ぶ^v桔9韃e鎧Q姙q,X'sPxAnt}GOk4n8 A'ndt雪tSXfEhaon&}uD]2r?Y瓢(@QEQEQEQEQEQEQEW m5緬(qy$枝0c鈑<鉤+飭WN噬{s停<{V)-v(aX批{_|=us!建宇腊mu/g]u ~害 %qf3Сh=55 ";f$oCy渣1狐瞽KN閊^H(|W! 恆+W襍昏(+奩*KKKgDkpw2 莠B-畚Ql竃i(wm8脳kWxvQ[樂E"F%eGosj6z7}w6.蒹0薄_ 秕 彎-I.[O8n)|?昊~)(R66tZ猴i(愀K S1<舖%=n{ET泥ZF|%L萎c-鐡[外冥wH悵う dL?傚トz\羌&園=n9bkkh嫉g#O8=觀 n4z%旅dQe楞vp$$哽)~# ;數彜8lqj^p謚OEqOiis[X4p捉P壮Az |竒庚O羇H0*t}^?理[圸 I北$8黄j6WIkQGP}EdoQaqjNb 闇"?rQ0q潼GH孑J釛睥杭H 5QM2%i_ <7i塵n&H9ざe*U 2B D告]拈[s,Vф>ょ'餃鉢?w剔AEZ}欺`昜8観9(nyw (AEPEPEPEPEPEPEPEPEPEP砦h' C芟躑]9)u 3kj%g蠱$竣慎umз:k;vR1 =ON岩唄(KXco]欺Gu*夥6dv3qKEQ,e&pwi穽 Mp隲褞y膵+x"h禧 \g&寺5 磊YX更 &逵T呟.iこ元$r7(I>=胆r_h,惧5忖Ztpi5nV@IB{*羲#1橢M鋩pH@孀4 (9_貸 蟀_-_@ ((7z.膓UH蜚4襍昼On喞%垉GQ\蹌Xr s^41A$2xRァ`鷂|} $介妊9%-遶f板徠,|3尓)胥酔;寝r~D姥 3]笵[囿'|)eM5迯I&s-孕~y $~g_薄_ kfg/&Tpq藻R-[TJ3yo41 ^ `X@ 2 Ue苫`"\r21ZSc+TSQ4@UY +馭:拳p?WA\?I嫂b: 酎徊c,C=6V挈nQ@4mV-gJ/個姥r*mBi|f)%.YW?朋嫂"Mm礫_:D `H*FA伴C=u]K8|3i"pMEc>k~(E袂馳A[YW=++匠 ( ( ( ( ( ( ( ( ( ( ( ( +"[\PC'n薯1cx&Y脹}&\lmьkEFh+jcyc :o]ぉqV*i賊U#[k"E睛bIj%L俳k5wm.G[蒭I.]}嬪 屓gQ\Sj6e孔黹F蓊*Oc]m#@(_-_@_貸 螯(◆珊蔑{輪s':~倦砥:$z>H7ZCz$ 8\PV笵[囿U_(柑耡j|g招U$嘴dU薄_ kfg/&8狼dGXvY^>R_;影;`絮¨EW閏P%uIW!\abM;0 苜q"N\W?uoAEPGnご豫$i$!A tXAj0uX餐舳Jnu版#匣O隼q{Tb4X`i U游? &dek輸/因燔 (1m孫oOX^oO嵬_M珮XV厳 佐d_L 9歹9A[UFr凖m>tmUA{c,zjT緊$袿1]s8'V@tQEax裾E黔崚懸z寵*泊膠o到U] 恆<6彈Mi=y:吃pd斑#柞奢D岾硅jZ\MvWys駮d` z&?jM)隴;>壼床橋kKtQoq9'匳@?u;狼\C/`&矢x=s_VV汾ォg櫛\+/,i!'餅.ER,((((((((((((?]湍.r-no!Ya溢;O矍u_5N4V}6mGR原踵c*抽3YkxM{W/貮o8xo敍~G寶mu{[掣.d9Jl{?Vw^6皚7逧Mm^6e}mIb9fU;抱嶝蒭-I幼coF wI$8FW傘L^釐1F*DuR2NA6鍛W7$Kn6b(D1~c`jti-dBWtc'旗-丁厂7S{[X@ed_VJ~ 'z.G=.&宜4)*{Z| }g甎N:寿≡nnv猪J鴻皙憇搴^Ft拘諌M助'1鬨Xp≧推LZ3_IW;{h-&AA;.~a]>k/(FEPEPEPEPEPEPEPEPEPEPT{t*磑"\妓I9 Eyn泣MkS#仭y ny誚茣_: 4澂徒j~5Q@縦0 G0xj胡不mM斡=3Z:>y1翳e#rj/GtoZ3$Χ飲Id挟acT}心莓棍oGto;6棍"炙?巻莓棍oGto;6棍@7mx`-$-u?V?齶mWkFGeRW!Nmu萬 (~gJ麦m随V?齶mWj懸#7m随?竸m|Q"炙痴=狃b]:~sp?絳 s撫Z萬 (wFm拳F陌{α佑q擱( =:y0e7Sxs襟[官軌FKH#X彦u`} QEIQEQEQEn?c[熨.洞-帥Ut3_~|5xF5}*哇捧x界i:vfer#S][ { i(i馮$孃e9飃41<] 3]n推觴} 彳_QE((((((((((((((([灘F床鼬W&W3#[ OJ螯W[ OJ?+嫂P錣+嫂P錣[ OJ螯W[ OJ?+嫂P錣+嫂P錣[ OJ螯W[ OJ?+嫂P錣+嫂P錣[ OJ螯W[ OJ?+嫂P錣麩TB滞Jp+kN.7掾 #(Ve雪\膠o到Tah:脹蔗档cgg#(e=MY亂$w_F4{9 9eE}LGj嶽~s婁h:wt寺2+やtb楠z氏^櫁w劉\Io@ tE ~.Bk 冬??V>k/(FEPEPEPEPEPEPEPEPEPEPEPX2x$H翰2R憖<V~"瞹@i^+b倚悲I荏<峙イ6ZF叡DQ1教燠.2*鼙wK Z矯E姙R湛.`)hG?gQ`|~unIK 諏Z陜 ?G峪BハAUe馘^Olmb Q伐19 /;z榕Ko0原e 8Fi瘻!&貴乂sTmk数*\dUtVc9蹲wK k]R 皖MSv幇i)YhI,c!九n%Z=]7:喰l瑁xx55f弥蹲wK k]R 皓mk数*\dU椢_5随ウ袂Z-%訴F姓曇?Z\氛i3.-PF ^m艮qBk(((( Z混!?Vau8;uxUI祕觸w熙pwgCFd垰D.7#l勵i嚏:q.z#,8畔b:臂?[]:hNet3#!vpA{bC挟kS戮eqs9亰叉'/蕾住A旅< P銚$EE保v (AEPEPEPEPEPEPEPEPEPEPEP?睿區+it萱=姦 菫]ccKj7~Kla+%09RZes+wt菲'SuuлY\Q/ 8048' q燮Yo] G2FOW1穿k{Mqu(磨 .睛fF庇0Nn8>o [[Ey\`TVr9+I(%鑚{H&濤eb穎K[%姐桓V7 8糒WM惚5斜ZM模!Gv 鴿{M苧zT:9B iEYp W鬯圃1'IEW1AEP?飯?z+嵜i靉wD=tQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE磋o縦1獲g4WHd輻+f9uxP畔r= I^=稷J艀[幸ynvn Pk嶂M:番2J愚*枴膈T-,vWq3O hc_枚i秧x7? ?87n1kY$cf)2劬JJL9-(#$U諱%6n&D@?秧k?87n1qo 檣c*員X_[従粂mQyg7S+ク87n1qo 檣c+0%c5HngMr幇/(l?X([&KiCu dq_N@;+BZj[Tqq]J e|輓~.'K~-@8],h~遂 Rc澁[o) l S脈訖"^!:n鰰☆nB乾粁k備'RwUH厳#lClkSQkG:_mAbQ?螯23+1婁PB[&PDq!j`O霓TAш.{.OpK\WbQ<領AS3ZqYR醋王mb資_pQ嵶e?一= Gsh.9r4@煩\9 Gsh.9r4@煩椚 :v鬩!?~X槝|5tl雄y@@N 2G $+Sg#|@H漬)E@&$ 枦lU S|l8IA9Ia/A&*3篇__L魃皮tm煢笏S蛾 }I>6)O件z銕m.@ &=w 鏗y挈4D姙*X浜 }I>6ye3;T`4潮z~&X>$硲k ".孥E`5`] |l 26Fn}_;H4*&D較7訟|轍k5t鎌8J]K凡lu庸Qj植7no<畢垪M5犯mAF鏡o}l 2O6拉 e,窄n2(苓#@H $p=M||(苓#A*W寅蹼H / |゜xOaB ,Gと 飴 ,ウH {Y 言+,u7F霆A蟐A|NPPzH:6選AHu_^t仮rkf粘f0pCTYiI:iBP%#&*c 0展慱億矇YM Hu@ Rx\<(否PjDIkGhb#NtuD癡U'}U $ぃ_賄@# o{悵j.観E@#A d%(lbn Hsxぱ3軣Ff $#"X頡4E)o$T1梓%Bs_U盖 集5~a_t/wX*遷.4H$@z>8XArZ7&xD貍 :鬻]8o歳'JjiC<[7zwy r rn@"#H糶8Q&v}34;Dp7#,堵W<^ c鵑uQlt -侫<A;z#1パ;Z Ee%裙擴 0族kvD:i 殯X豈]72H Yt(0崇q H_"冢-"aR!a.=vXc4yTuo倖[酪仗OZ餒9RG^憚#jK0Os)p,){G<.^K 2`7i熟Bl@AX jUGR劬T!9} 戻"SQ"fP闍魎% Q:BgBiAE考LD"Y猝 @Is吊z>$鎮Q.@ Z$"n莓IQTX?沃6+RhUb:^\)瓲b>eiE|4= +T ′N( lE 6z慾k尽PeOa ]{D BEX~i@ "頁Q@H%s 4=xtU@照遠Pf j{?>B^欧` ^序O'dsc@胴:*DdK~^'S\G‡W)ro^*A_@国 ж圏[ HQ : L%y f{ s*F鄰)*Hyhi\XWo覗PbSaVp5X悚:9嬰CtFK@BZgg懈E;塗'4\X%-XR靂aD;橲*挽 5e"似篷V8聯 jKY 氓8;0/@@nG敕q-$AVT'>#v凡,#6〜tm弋@uQ 鵜救Q +!GoL 餤晝剞#゙R恒zg易"bJXo)Dx;ZLAg グJQZM}#d動I"/U."&&@質^I.@Dcm 嫐;o征10y1;?檳声b^慓=eGO2Nwyb(#q:eD%Y鮪鮪@X3Y$Z%HdTvH5E-9 汪`峠稍n?8 Y) 'i R$v一ie,%fwL檳 \w2&O l鷦'鐺 g)棟 遅 B年儔 pv7 "`AF猷d0髯@音 dFu-釆$B@音? 掟n9J+F[) mS@鉗,x哇K諏qR3踊書bf|=瘴Ν WB1e!族S魏F篩_CMM戝裝:p!n=:J5撈a/5S/JhQvewHYtM@缶n}(痂Wt#:c*/掣)vd ` v鯆;e7,-H信e嵩A_^ L島筴霹 W淡@j! 警 Uzhf0#P b`>]F/体r}魴/~* Wg" 反-T5[" 5m re;5A-絢1妹7=g胛 iu2<^L鯔_5$ -o@7 Cix7x $h2o2常 @& dBo|'R3綣 6X患#HOAgt峇U ]+dbb-qvM0aT7e$[Xe>h2c|w6.2父nQRH !b9;L,&TP*[NV>懿旌 $b0,/瘠2vAH紋hQ,i&@~\vX ξ,5@,i譛臟鈩他8HgR4鮠AX旛档W0!F席@f*葢\-kID凶&-"V\BJ ]&F?E廱J-NRk!HAWR亠iK+0;R;X4hI[JH Ed顕[w/M煙&鬲^初bP驫 cZ:H]5SDMw~U]@+蔗#佶]-[?iN哩ok*S串#尾^]ezf}瑶2y0`]翳{KM.位R8<.辯t_@Tii[G鬻 奉Y嵯※LyNtoy"L!{Zj體k%^DZ \恐藹LB 湎`UEo/}iTM%KO[4*啼i*啅ェ摸G颶di? R%K$b%I/@vV朷Z&& \誥z転@冕^*ZZZ5u:W t緝(3I"i`/紐w]L^k蜈 -`G捺.(VR=.'i5w.6%{^#>x櫞熊Vxj mj= LClzp:+0|MP,d率ntNx BR閙(FrPP $1n$N學9M8LX海\抄[ *TMu~)g渟E决V *TXD5UEWHZ,竭Z"32H8避}#! Li^dWtOE5KA1bb :iMWQ !^z V)vsRd 命kY貴褐:-RYVb俑∋掣x{舉AGdl嗣V=[! \-2gk6,[&i@TxcG砕X<Q}PP趨穴)箚JKOt逡081y=IW>Q|仰pbhao沓Xk)X'AqAiE5 H>56|Lz C,&暈Af僑6gR LB()zK[2/Azi線&?35XW^&j>絏,}wL;.%(茣   .?A 皚粉wWi鑚T__Ag V?tIRFy>ql^穽Io|詢NLc*(Fwd銹HwsltBA;03{V_NcVA,G緋U8X0h :蒲w:$If+蓐cRlU侖 PrK暢sNucS) %t笛(4y*DA鬢ZN=nャ :aGHeGV# m縒NXvBQeK>還v欷]? k("fsOtx8d殕LA** :V :Vmb気R ("oy劾鉈^lYt0半T~ 凉嵐DA[Ymv{eU仭T7 zQaV仭 &'YwDA Dam続<l @(s*'Rkd7 $,貳AmocVq驢釶@姪L\LxfE= &0vtf閏,cU#{Y@ 篏 a :熬m&@)_坪Yo0謐 胸S}2? 榊囓;G tn :C%敵d_lYt[,Q偈+)汪 皙Q$=l7Y枷I2s N拇Ujs8;於h奠%N,8 &s,Q(*^qgV\} "X張 LYEt7/Wlt@擲D x.否t]遁z頽|3焼.MtVTA$\xvБ ;H+M>U亶XcSz捕 }t5B: 鴎7YA*S(  潮R咥0**,Dg1XY0ヤ]簿=G3Z\2ed cDs拒 亭7o箱 m鴛蓆|幕(}G虜 : sMaV亅留z> -@zk簸me.悸嶋走~穐 V9 樋U@R働H_糜* _| gG癲隱uWv77 c2V@漲$ $"fvQIy k?W・^x瑳!R糜堂33微5Zz A@1 p蛇2kwt >O 砦泅 ^)Zwx謗{ t<{Nu[ATES,(t \飮^lAw 臈z 0sS2; /鵐sveuAb6_婪[D9swj6粳蛮!ay~LU諮H鮖[ :De¶p"?kA粨:H?dU嬢w>APbU(Z6]nGr頃R佰Y}HU]s覓.+|*/k偈"A| JW}~ t t彬N-5晝 )蒭襯i 偽?.}zUR<蝨xR働HWlC?Ui+)甘 m%w2VO=[剣 \jAJ歓 Z眉|y 謹 Z怨1tA)A壗1H2 A飲 ‡$2AGmN潘Tr +WYi|#AP亠>J米 k!= L[1(m@X~ ,N>b-,昴+莪9F籘$lVC 藷ゅIb+ YGA'-欟 HujucぎじR覊衆@Agy勣 re]gS$XfA>mUAt窟eYIAD;[e老|t =rP3j -橋k3tG k+wy,q朷qXIa欝-J米 8l 皸憙]n]%ecw}cE@燼殤l51賷 ^簣/魍Rl~3RIDn[y "WR{ R働椌工_兢n@眛 +qc;{祀G@B~n|l鴎 拒碑cU7 e熬7赳ぽ付Q` -愿H軛"eU,歸u$rBa]; 湍tQ要H稈!}&%Af*@Z@WV≫o)~s&`Z2lGP3|W@%燦A9P5!|h3t-隸!ZocCt5HcK7-坪 n晝-A槇4>6y,M.@H 芽@H cA^@Hyyx 4]#y滾q}1堤 宥.MIbFu4(IP"弍?E|N(60UA漕郁X~g *蓼 VByY #X}a!匪_hQrr厶Pq.xH葷欽<a)&< ,IV9)))|aXモT 'm哈0+F4>O-祊I泳Xhkmz IEa  ?続YjUN箇d^>F%&X@t@H1  ?野?l._嫦_ $@H90k亶t : Ad5lCl5ms憶!閥 祭9-tqHI+ 1貳rX5@#垉V9FwtAムB\m5@k $@> 2*{urJt4'卋|]鈑I?9e旄@iA{L[;8D0Op$n$誇:)K@H $ 4 u I@ fy鑁称SaF/d` 3[Ha$GwJ-0m~KHLs$@ $汐U$7 a%OXJ6 B(U|B/2u0\+~C[泗瓮i/W +Ru) E埼H w9~ o馬#:Vc$帥 `E@≠伊9PP?革jJ-" ?&=耶%29&H2s゙%D賀b0ZEk<9t"d1對t|134驗D{s1[a;箔G6q;gCIsNв9V%鉐=6gbIENDB`serjtag-0.3/FILES-txt0000644000076400007650000000071510636223670014122 0ustar suzsuz00000000000000FILES-txt Makefile README-j.txt i2c.c serjtag.c tests/test1.c avrdude-serjtag/README.txt avrdude-serjtag/src/avrdude-5.3.1-avr910d.patch avrdude-serjtag/src/avrdude-5.3.1-baud.patch avrdude-serjtag/src/avrdude-5.3.1-serjtag.patch avrdude-serjtag/src/avrdude-5.3.1-usb910.patch avrdude-serjtag/src/avrdude-5.3.1-ft245r.patch avrdude-serjtag/src/avrdude.spec avrdude-serjtag/binary/COPYING.txt avrdude-serjtag/binary/avrdude.conf tn2313/Makefile tn2313/serjtag.h serjtag-0.3/tests/0000755000076400007650000000000010635445121013653 5ustar suzsuz00000000000000serjtag-0.3/tests/test1.c0000644000076400007650000000155410635251770015071 0ustar suzsuz00000000000000#include #include #include #include #include #define uint8_t unsigned char #define int16_t short #define uint16_t unsigned short main(int argc,char *argv[]) { int fd,c,i,r; int speed; struct termios term; uint8_t buf[1024]; fd = open("/dev/ttyUSB0", O_RDWR); if (fd < 0) { perror("open device"); exit(1); } tcgetattr(fd, &term); speed = B57600; cfsetispeed(&term,speed); cfsetospeed(&term,speed); cfmakeraw(&term); usleep(100000); /* 100 ms */ tcsetattr(fd, TCSANOW, &term); /* setup done */ strcpy(buf, "SERJTAG"); printf("SER %02x %02x %02x %02x %02x %02x %02x\n" ,buf[0],buf[1],buf[2] ,buf[3],buf[4],buf[5],buf[6]); write(fd, "S", 1); r = read(fd, buf , 7); printf("S repl r = %d %02x %02x %02x %02x %02x %02x %02x\n" ,r,buf[0],buf[1],buf[2] ,buf[3],buf[4],buf[5],buf[6]); } serjtag-0.3/avrdude-serjtag/0000755000076400007650000000000010635656672015617 5ustar suzsuz00000000000000serjtag-0.3/avrdude-serjtag/README.txt0000644000076400007650000000457110636232447017313 0ustar suzsuz00000000000000------------------------------------- HOW-TO-INSTALL (0) Install WinAVR (1) replace WinAVR's avrdude.exe and avrdude.conf example: (MSYS) INSTALLDIR=/d/WinAVR/bin pushd $INSTALLDIR mv avrdude.exe avrdude-org.exe mv avrdude.conf avrdude-org.conf popd cd binary cp avrdude.exe avrdude.conf $INSTALLDIR ------------------------------------- HOW-TO-USE example: (Linux) avrdude -pt44 -c serjtag -P /dev/ttyUSB0 -U flash:w:usb910j44.hex -B 4000000 example: (Windows) avrdude -pt44 -c serjtag -P COM4 -U flash:w:usb910j44.hex -B 4000000 -c serjtag : Serial JTAG protocol The SERJTAG protocol's main function is to send and recv SPI bit-stream. Therefore the AVRDUDE can support the full function. But this require the high bandwidth: 32 bits send each 1 byte write 32 bits send/recv each 1 byte read -B 4000000 MAX SPEED 250000 default --- for 1MHz (8MHz + 1/8 fuse bit conf) CPU CLOCK ------------------------------------- HOW-TO-BUILD: (for Windows (MinGW+MSYS)) (0) Install MinGW and MSYS (0-2) Download and Install ftdi VCP driver (CDM X.XX.X.zip) cp FTD2XX.H /mingw/include/ftd2xx.h cp FTD2XX.lib /mingw/lib/ftd2xx.lib cp FTD2XX.dll /mingw/bin/ftd2xx.dll (1) Download and extract avrdude-5.3.1.tar.gz Download from http://savannah.nongnu.org/projects/avrdude/ tar -zxvf avrdude-5.3.1.tar.gz (2) Patch all cd avrdude-5.3.1 patch -p1 < avrdude-5.3.1-usb910.patch patch -p1 < avrdude-5.3.1-avr910d.patch patch -p1 < avrdude-5.3.1-serjtag.patch patch -p1 < avrdude-5.3.1-ft245r.patch patch -p1 < avrdude-5.3.1-baud.patch (3) Configure ./configure (4) Edit Makefile LIBS= -lhid -lserupapi -lftd2xx (5) Make make ------------------------------------- HOW-TO-BUILD: (for Linux RPM, no ft245r driver) (1) Download avrdude-5.3.1 Download from http://savannah.nongnu.org/projects/avrdude/ (2) cp avrdude-5.3.1.tar.gz avrdude-5.3.1-usb910.patch \ avrdude-5.3.1-avr910d.patch avrdude-5.3.1-serjtag.patch \ avrdude-5.3.1-baud.patch avrdude-5.3.1-ft245r.patch \ /usr/src/redhat/SOURCES (3) cp avrdude.spec /usr/src/redhat/SPECS (4) cd /usr/src/redhat/SPECS rpmbuild -bb avrdude.spec rpmbuild -bs avrdude.spec ( for Source RPM) serjtag-0.3/avrdude-serjtag/src/0000755000076400007650000000000010636232306016367 5ustar suzsuz00000000000000serjtag-0.3/avrdude-serjtag/src/avrdude-5.3.1-avr910d.patch0000644000076400007650000000213710635656672022712 0ustar suzsuz00000000000000--- avrdude-5.3.1-org/avr910.c 2007-03-28 14:56:25.000000000 +0900 +++ avrdude-5.3.1/avr910.c 2007-03-28 15:53:27.000000000 +0900 @@ -128,6 +128,7 @@ } +static int can_cmd = 0; /* * initialize the AVR device and prepare it to accept commands */ @@ -154,6 +155,9 @@ avr910_send(pgm, "V", 1); avr910_recv(pgm, sw, sizeof(sw)); + if (sw[0] == '2') { + can_cmd = 1; + } avr910_send(pgm, "v", 1); avr910_recv(pgm, hw, sizeof(hw)); @@ -245,7 +249,7 @@ { char buf[5]; - /* FIXME: Insert version check here */ + if (!can_cmd) return -1; buf[0] = '.'; /* New Universal Command */ buf[1] = cmd[0]; @@ -261,7 +265,7 @@ res[2] = cmd[1]; res[3] = buf[0]; - return 0; + return (buf[1] == 'Y')?0:-1; } @@ -332,7 +336,7 @@ cmd[0] = 'D'; } else { - return -1; + return avr_write_byte_default(pgm,p,m,addr,value); } cmd[1] = value; @@ -403,8 +407,7 @@ if (strcmp(m->desc, "eeprom") == 0) { return avr910_read_byte_eeprom(pgm, p, m, addr, value); } - - return -1; + return avr_read_byte_default(pgm,p,m,addr,value); } serjtag-0.3/avrdude-serjtag/src/avrdude-5.3.1-baud.patch0000644000076400007650000000177710635656672022450 0ustar suzsuz00000000000000diff -ru avrdude-5.3.1/ser_posix.c avrdude-5.3.1-serjtag/ser_posix.c --- avrdude-5.3.1/ser_posix.c 2006-12-12 01:02:45.000000000 +0900 +++ avrdude-5.3.1-serjtag/ser_posix.c 2007-06-18 15:41:00.000000000 +0900 @@ -66,6 +66,7 @@ { 57600, B57600 }, { 115200, B115200 }, { 230400, B230400 }, + { 3000000, B3000000 }, { 0, 0 } /* Terminator. */ }; diff -ru avrdude-5.3.1/ser_win32.c avrdude-5.3.1-serjtag/ser_win32.c --- avrdude-5.3.1/ser_win32.c 2006-12-11 21:47:35.000000000 +0900 +++ avrdude-5.3.1-serjtag/ser_win32.c 2007-06-18 15:40:36.000000000 +0900 @@ -46,6 +46,7 @@ /* HANDLE hComPort=INVALID_HANDLE_VALUE; */ static struct baud_mapping baud_lookup_table [] = { +#define CBR_3000000 3000000 { 1200, CBR_1200 }, { 2400, CBR_2400 }, { 4800, CBR_4800 }, @@ -54,6 +55,9 @@ { 38400, CBR_38400 }, { 57600, CBR_57600 }, { 115200, CBR_115200 }, +#ifdef CBR_3000000 + { 3000000, CBR_3000000 }, +#endif { 0, 0 } /* Terminator. */ }; serjtag-0.3/avrdude-serjtag/src/avrdude-5.3.1-serjtag.patch0000644000076400007650000006144110635656672023166 0ustar suzsuz00000000000000diff -ru avrdude-5.3.1/Makefile.in avrdude-5.3.1-serjtag/Makefile.in --- avrdude-5.3.1/Makefile.in 2006-12-23 07:56:05.000000000 +0900 +++ avrdude-5.3.1-serjtag/Makefile.in 2007-06-18 15:39:06.000000000 +0900 @@ -87,6 +87,7 @@ am_avrdude_OBJECTS = avrdude-config_gram.$(OBJEXT) \ avrdude-lexer.$(OBJEXT) avrdude-avr.$(OBJEXT) \ avrdude-avr910.$(OBJEXT) avrdude-avrpart.$(OBJEXT) \ + avrdude-serjtag.$(OBJEXT) \ avrdude-bitbang.$(OBJEXT) avrdude-butterfly.$(OBJEXT) \ avrdude-config.$(OBJEXT) avrdude-confwin.$(OBJEXT) \ avrdude-crc16.$(OBJEXT) avrdude-fileio.$(OBJEXT) \ @@ -270,6 +271,8 @@ avr910.h \ avrpart.c \ avrpart.h \ + serjtag.c \ + serjtag.h \ bitbang.c \ bitbang.h \ butterfly.c \ @@ -429,6 +432,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-avr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-avr910.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-avrpart.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-serjtag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-bitbang.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-butterfly.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-config.Po@am__quote@ @@ -542,6 +546,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -c -o avrdude-avrpart.obj `if test -f 'avrpart.c'; then $(CYGPATH_W) 'avrpart.c'; else $(CYGPATH_W) '$(srcdir)/avrpart.c'; fi` +avrdude-serjtag.o: serjtag.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -MT avrdude-serjtag.o -MD -MP -MF "$(DEPDIR)/avrdude-serjtag.Tpo" -c -o avrdude-serjtag.o `test -f 'serjtag.c' || echo '$(srcdir)/'`serjtag.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/avrdude-serjtag.Tpo" "$(DEPDIR)/avrdude-serjtag.Po"; else rm -f "$(DEPDIR)/avrdude-serjtag.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serjtag.c' object='avrdude-serjtag.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -c -o avrdude-serjtag.o `test -f 'serjtag.c' || echo '$(srcdir)/'`serjtag.c + +avrdude-serjtag.obj: serjtag.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -MT avrdude-serjtag.obj -MD -MP -MF "$(DEPDIR)/avrdude-serjtag.Tpo" -c -o avrdude-serjtag.obj `if test -f 'serjtag.c'; then $(CYGPATH_W) 'serjtag.c'; else $(CYGPATH_W) '$(srcdir)/serjtag.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/avrdude-serjtag.Tpo" "$(DEPDIR)/avrdude-serjtag.Po"; else rm -f "$(DEPDIR)/avrdude-serjtag.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serjtag.c' object='avrdude-serjtag.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -c -o avrdude-serjtag.obj `if test -f 'serjtag.c'; then $(CYGPATH_W) 'serjtag.c'; else $(CYGPATH_W) '$(srcdir)/serjtag.c'; fi` + avrdude-bitbang.o: bitbang.c @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -MT avrdude-bitbang.o -MD -MP -MF "$(DEPDIR)/avrdude-bitbang.Tpo" -c -o avrdude-bitbang.o `test -f 'bitbang.c' || echo '$(srcdir)/'`bitbang.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/avrdude-bitbang.Tpo" "$(DEPDIR)/avrdude-bitbang.Po"; else rm -f "$(DEPDIR)/avrdude-bitbang.Tpo"; exit 1; fi diff -ru avrdude-5.3.1/avrdude.conf.in avrdude-5.3.1-serjtag/avrdude.conf.in --- avrdude-5.3.1/avrdude.conf.in 2006-12-23 07:52:34.000000000 +0900 +++ avrdude-5.3.1-serjtag/avrdude.conf.in 2007-06-18 15:39:06.000000000 +0900 @@ -16,7 +16,7 @@ # id = [, [, ] ...] ; # are quoted strings # desc = ; # quoted string # type = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic | -# avr910 | butterfly | usbasp | +# avr910 | butterfly | usbasp | serjtag # jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw | # dragon_dw | dragon_jtag | dragon_isp | dragon_pp | # dragon_hvsp; # programmer type @@ -359,6 +359,12 @@ ; programmer + id = "serjtag"; + desc = "Serial JTAG Cable"; + type = serjtag; +; + +programmer id = "usbasp"; desc = "USBasp, http://www.fischl.de/usbasp/"; type = usbasp; diff -ru avrdude-5.3.1/config_gram.y avrdude-5.3.1-serjtag/config_gram.y --- avrdude-5.3.1/config_gram.y 2006-11-23 16:07:06.000000000 +0900 +++ avrdude-5.3.1-serjtag/config_gram.y 2007-06-18 15:39:06.000000000 +0900 @@ -38,6 +38,7 @@ #include "stk500v2.h" #include "stk500generic.h" #include "avr910.h" +#include "serjtag.h" #include "butterfly.h" #include "usbasp.h" #include "avr.h" @@ -135,6 +136,7 @@ %token K_STK500V2 %token K_STK500GENERIC %token K_AVR910 +%token K_SERJTAG %token K_USBASP %token K_BUTTERFLY %token K_TYPE @@ -416,6 +418,12 @@ } } | + K_TYPE TKN_EQUAL K_SERJTAG { + { + serjtag_initpgm(current_prog); + } + } | + K_TYPE TKN_EQUAL K_USBASP { { usbasp_initpgm(current_prog); diff -ru avrdude-5.3.1/lexer.l avrdude-5.3.1-serjtag/lexer.l --- avrdude-5.3.1/lexer.l 2006-11-23 16:07:06.000000000 +0900 +++ avrdude-5.3.1-serjtag/lexer.l 2007-06-18 15:39:06.000000000 +0900 @@ -122,6 +122,7 @@ allowfullpagebitstream { yylval=NULL; return K_ALLOWFULLPAGEBITSTREAM; } avr910 { yylval=NULL; return K_AVR910; } avr910_devcode { yylval=NULL; return K_AVR910_DEVCODE; } +serjtag { yylval=NULL; return K_SERJTAG; } usbasp { yylval=NULL; return K_USBASP; } bank_size { yylval=NULL; return K_PAGE_SIZE; } banked { yylval=NULL; return K_PAGED; } diff -ru avrdude-5.3.1/serjtag.c avrdude-5.3.1-serjtag/serjtag.c --- avrdude-5.3.1/serjtag.c 2007-06-18 15:52:39.000000000 +0900 +++ avrdude-5.3.1-serjtag/serjtag.c 2007-06-18 20:49:22.000000000 +0900 @@ -0,0 +1,724 @@ +/* + * avrdude - A Downloader/Uploader for AVR device programmers + * Copyright (C) 2003-2004 Theodore A. Roth + * + * 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 + */ + +/* $Id$ */ + +/* serjtag -- Serial Jtag Cable (using AVR) */ + +#include "ac_cfg.h" + +#include +#include +#include +#include +#include +#include + +#include "avr.h" +#include "pgm.h" +#include "serjtag.h" +#include "serial.h" + +#define SERJTAG_DEBUG 0 + +extern char * progname; +extern int do_cycles; +extern int ovsigck; +extern int verbose; + +static int serjtag_send(PROGRAMMER * pgm, char * buf, size_t len) +{ + return serial_send(&pgm->fd, (unsigned char *)buf, len); +} + + +static int serjtag_recv(PROGRAMMER * pgm, char * buf, size_t len) +{ + int rv; + + rv = serial_recv(&pgm->fd, (unsigned char *)buf, len); + if (rv < 0) { + fprintf(stderr, + "%s: serjtag_recv(): programmer is not responding\n", + progname); + exit(1); + } + return 0; +} + + +static int serjtag_drain(PROGRAMMER * pgm, int display) +{ + return serial_drain(&pgm->fd, display); +} + +static int serjtag_chip_erase(PROGRAMMER * pgm, AVRPART * p) +{ + unsigned char cmd[4]; + unsigned char res[4]; + + if (p->op[AVR_OP_CHIP_ERASE] == NULL) { + fprintf(stderr, "chip erase instruction not defined for part \"%s\"\n", + p->desc); + return -1; + } + + memset(cmd, 0, sizeof(cmd)); + + avr_set_bits(p->op[AVR_OP_CHIP_ERASE], cmd); + pgm->cmd(pgm, cmd, res); + usleep(p->chip_erase_delay); + pgm->initialize(pgm, p); + + return 0; +} + +#if SERJTAG_DEBUG == 1 +static void serjtag_check(PROGRAMMER * pgm) { + int i,bytes; + char buf[128]; + +fprintf(stderr,"check response\n"); +fflush(stderr); + i=0; + buf[i++] = 'r'; + buf[i++] = 0; + buf[i++] = 0; + serjtag_send(pgm, buf, i); + serjtag_recv(pgm, buf, 1); +fprintf(stderr,"\tCommonad = 0x%02x %c\n",buf[0],buf[0]); + serjtag_recv(pgm, buf+1, 1); +fprintf(stderr,"\tFlags = 0x%02x\n",buf[1]); + serjtag_recv(pgm, buf+2, 1); +fprintf(stderr,"\tBytes = 0x%02x\n",buf[2]); + bytes = buf[2]; + if (buf[1] & JTAG_BITS) bytes++; + if (bytes) { + fprintf(stderr,"\t"); + for (i=0; i= bytes) { + serjtag_recv(pgm, buf+3, bytes); + } else { + char tmp[1]; + int i; + serjtag_recv(pgm, buf+3, len); + for (i=0; i< bytes - len; i++) { + serjtag_recv(pgm, tmp, 1); + } + } + if (verbose) { + int i; + fprintf(stderr,"recv_j %c 0x%02x %d :",buf[0],buf[1],buf[2]); + for (i=0; ibitclock == 0.0) { // using default + delay_param = 3; + } else if (pgm->bitclock >= 4.0) { + delay_param = 0; + use_delay = 0; + } else { + delay_param = (int)((2.26/3.0) / pgm->bitclock); + if (delay_param > 15) delay_param = 15; + } + if ((verbose>=1) || SERJTAG_DEBUG) { + fprintf(stderr," serjtag:delay %d (%s) ( bitclk %.3f )\n" + ,delay_param, use_delay? "enabled":"disabled", pgm->bitclock); + } +} + +/* + * issue the 'program enable' command to the AVR device + */ +static int serjtag_program_enable(PROGRAMMER * pgm, AVRPART * p) +{ + char buf[128]; + int i; + int retry_count = 0; + + serjtag_set_delay(pgm); + + serjtag_send(pgm, "j", 1); // enter jtag mode + serjtag_recv(pgm, buf, 1); + if (buf[0] != 'Y') { + return -1; + } +#if SERJTAG_DEBUG == 1 +fprintf(stderr," Enter jtag mode .. success \n"); +#endif + +retry: + i=0; + buf[i++] = 's'; /* Set Port */ + buf[i++] = 0; /* flags */ + buf[i++] = 1; /* bytes */ + buf[i++] = 0; /* TDI(MOSI) = 0, TMS(RESET) = 0, TCK(SCK) = 0 */ + serjtag_send(pgm, buf, i); + usleep(5000); // 5ms + i=0; + buf[i++] = 's'; /* Set Port */ + buf[i++] = 0; /* flags */ + buf[i++] = 1; /* bytes */ + buf[i++] = JTAG_SET_TMS; /* TDI(MOSI) = 0, TMS(RESET) = 1, TCK(SCK) = 0 */ + serjtag_send(pgm, buf, i); + usleep(5000); // 5ms + i=0; + buf[i++] = 's'; /* Set Port */ + buf[i++] = 0; /* flags */ + buf[i++] = 1; /* bytes */ + buf[i++] = delay_param & JTAG_SET_DELAY; /* TMS(RESET) = 0, set delay */ + serjtag_send(pgm, buf, i); + usleep(5000); // 5ms + + i = 0; + buf[i++] = 'd'; /* PUT TDI Stream */ + buf[i++] = JTAG_RECIEVE | JTAG_USE_DELAY; + buf[i++] = 0; /* bytes : set after*/ + /* check */ + buf[i++] = 0xAC; + buf[i++] = 0x53; + buf[i++] = 0; + buf[i++] = 0; + /* signature[0] */ + buf[i++] = 0x30; + buf[i++] = 0; + buf[i++] = 0; + buf[i++] = 0; + /* signature[1] */ + buf[i++] = 0x30; + buf[i++] = 0; + buf[i++] = 1; + buf[i++] = 0; + /* signature[2] */ + buf[i++] = 0x30; + buf[i++] = 0; + buf[i++] = 2; + buf[i++] = 0; + buf[2] = i - 3; /* set bytes */ + buf[i++] = 'r'; /* Request Recieved Data */ + buf[i++] = 0; /* flags */ + buf[i++] = 0; /* bytes */ + serjtag_send(pgm, buf, i); +#if SERJTAG_DEBUG == 1 + fprintf(stderr,"enabling program delay %d retry %d\n",delay_param,retry_count); +#endif + serjtag_recv_j(pgm, buf, 3+4*4, SERJTAG_DEBUG?1:0); + + saved_signature[0] = buf[3+4*1 +3]; + saved_signature[1] = buf[3+4*2 +3]; + saved_signature[2] = buf[3+4*3 +3]; +#if SERJTAG_DEBUG == 1 + fprintf(stderr,"saved_signature %02x %02x %02x\n" + , saved_signature[0] + , saved_signature[1] + , saved_signature[2]); +#endif + if ((buf[3+2] == 0x53) && (saved_signature[0] == 0x1e)) // success + { + return 0; + } + if (retry_count < 5) { + retry_count++; + goto retry; + } + return -1; +} + +static int serjtag_read_sig_bytes(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m) +{ + m->buf[0] = saved_signature[0]; + m->buf[1] = saved_signature[1]; + m->buf[2] = saved_signature[2]; + return 3; +} + +/* + * initialize the AVR device and prepare it to accept commands + */ +static int serjtag_initialize(PROGRAMMER * pgm, AVRPART * p) +{ + char id[8]; + char sw[3]; + + /* Get the programmer identifier. Programmer returns exactly 7 chars + _without_ the null.*/ + + serjtag_send(pgm, "S", 1); + serjtag_recv(pgm, id, 7); + id[7] = 0; + + /* Get the HW and SW versions to see if the programmer is present. */ + + serjtag_send(pgm, "V", 1); + serjtag_recv(pgm, sw, 2); + sw[2] = 0; + + fprintf(stderr, "Found programmer: Id = \"%s\"; Revison = %s\n", id, sw); + + if (strncmp(id, "SERJTAG", 7) && strncmp(id, "USB910A", 7) + && strncmp(id, "USB910A", 7) ) + { + fprintf(stderr, "\tserjtag protocol not supported.\n"); + exit(1); + } + return serjtag_program_enable(pgm, p); +} + +static void serjtag_disable(PROGRAMMER * pgm) +{ + char buf[2]; + serjtag_send(pgm, "V", 1); + serjtag_recv(pgm, buf, 2); + + return; +} + + +static void serjtag_enable(PROGRAMMER * pgm) +{ + /* Do nothing. */ + + return; +} + + +/* + * transmit an AVR device command and return the results; 'cmd' and + * 'res' must point to at least a 4 byte data buffer + */ +static int serjtag_cmd(PROGRAMMER * pgm, unsigned char cmd[4], + unsigned char res[4]) +{ + char buf[10]; + + /* FIXME: Insert version check here */ + + buf[0] = 'd'; /* PUT TDI Stream */ + buf[1] = JTAG_RECIEVE | use_delay; + buf[2] = 4; /* bytes */ + buf[3] = cmd[0]; + buf[4] = cmd[1]; + buf[5] = cmd[2]; + buf[6] = cmd[3]; + buf[7] = 'r'; /* Request Recieved Data */ + buf[8] = 0; + buf[9] = 0; + + serjtag_send (pgm, buf, 10); + serjtag_recv (pgm, buf, 7); + + res[0] = 0x00; /* Dummy value */ + res[1] = cmd[0]; + res[2] = cmd[1]; + res[3] = buf[6]; + + return 0; +} + + +static int serjtag_open(PROGRAMMER * pgm, char * port) +{ + /* + * If baudrate was not specified use 19.200 Baud + */ + if(pgm->baudrate == 0) { + pgm->baudrate = 19200; + } + + strcpy(pgm->port, port); + serial_open(port, pgm->baudrate, &pgm->fd); + + /* + * drain any extraneous input + */ + serjtag_drain (pgm, 0); + + return 0; +} + +static void serjtag_close(PROGRAMMER * pgm) +{ + serial_close(&pgm->fd); + pgm->fd.ifd = -1; +} + + +static void serjtag_display(PROGRAMMER * pgm, char * p) +{ + return; +} + +static int serjtag_paged_write_gen(PROGRAMMER * pgm, AVRPART * p, + AVRMEM * m, int page_size, int n_bytes) +{ + unsigned long i; + int rc; + for (i=0; ibuf[i]); + if (rc != 0) { + return -2; + } + + if (m->paged) { + /* + * check to see if it is time to flush the page with a page + * write + */ + if (((i % m->page_size) == m->page_size-1) || (i == n_bytes-1)) { + rc = avr_write_page(pgm, p, m, i); + if (rc != 0) { + return -2; + } + } + } + } + return i; +} + +#define SERJTAG_BUFFERD_WRITE + +#ifdef SERJTAG_BUFFERD_WRITE +#define SERJTAG_BUF_SIZE 1024 +unsigned char *serjtag_buf; +int serjtag_buf_len; + +static void serjtag_flush(PROGRAMMER * pgm) { + if (!serjtag_buf || (serjtag_buf_len == 0)) return; + serjtag_send(pgm, serjtag_buf, serjtag_buf_len); + serjtag_buf_len = 0; +} + +static void serjtag_write(PROGRAMMER * pgm, unsigned char *buf, int size) { + if (!serjtag_buf) { + serjtag_buf = malloc(SERJTAG_BUF_SIZE); + if (!serjtag_buf) { + fprintf(stderr, "can't alloc memory\n"); + exit(1); + } + } + if (SERJTAG_BUF_SIZE < serjtag_buf_len + size) { + serjtag_flush(pgm); + } + memcpy(serjtag_buf + serjtag_buf_len, buf, size); + serjtag_buf_len += size; +} +#else +static void serjtag_flush(PROGRAMMER * pgm) { +} +static void serjtag_write(PROGRAMMER * pgm, unsigned char *buf, int size) { + serjtag_send(pgm, buf, size); +} +#endif + +#define USE_INLINE_WRITE_PAGE + +static int serjtag_paged_write_flash(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, + int page_size, int n_bytes) +{ + unsigned int i,j; + int addr,addr_wk,buf_pos,do_page_write; + char buf[128]; + + addr = 0; + for (i=0; i> 9) & 0xff; + buf[buf_pos++] = (addr >> 1) & 0xff; + buf[buf_pos++] = m->buf[i]; + addr ++; + i++; + if ( (m->paged) && + (((i % m->page_size) == 0) || (i == n_bytes))) { + do_page_write = 1; + break; + } + } + buf[2] = buf_pos - 3; +#ifdef USE_INLINE_WRITE_PAGE + if (do_page_write) { + + /* If this device has a "load extended address" command, issue it. */ + if (m->op[AVR_OP_LOAD_EXT_ADDR]) { + OPCODE *lext = m->op[AVR_OP_LOAD_EXT_ADDR]; + + buf[buf_pos++] = 'd'; /* PUT TDI Stream */ + buf[buf_pos++] = JTAG_RECIEVE | use_delay; + buf[buf_pos++] = 4; /* bytes */ + + memset(buf+buf_pos, 0, 4); + avr_set_bits(lext, buf+buf_pos); + avr_set_addr(lext, buf+buf_pos, addr/2); + buf_pos += 4; + } + buf[buf_pos++] = 'd'; /* PUT TDI Stream */ + buf[buf_pos++] = JTAG_RECIEVE | use_delay; + buf[buf_pos++] = 4; /* bytes */ + buf[buf_pos++] = 0x4c; /* Issue Page Write */ + buf[buf_pos++] = (addr_wk >> 9) & 0xff; + buf[buf_pos++] = (addr_wk >> 1) & 0xff; + buf[buf_pos++] = 0; + buf[buf_pos++] = 'r'; /* Request Recieved Data */ + buf[buf_pos++] = 0; + buf[buf_pos++] = 0; + } +#endif + serjtag_write(pgm, buf, buf_pos); +#if 0 +fprintf(stderr, "send addr 0x%04x size %d bufsize %d i %d page_write %d\n", + addr_wk,buf[2],buf_pos,i,do_page_write); +#endif + if (do_page_write) { +#ifdef USE_INLINE_WRITE_PAGE + serjtag_flush(pgm); + usleep(m->max_write_delay); + serjtag_recv_j(pgm, buf, 4 + 3, 0); +#else + int rc; + serjtag_flush(pgm); + addr_wk = (i-1) / m->page_size * m->page_size; + rc = avr_write_page(pgm, p, m, addr_wk); + if (rc != 0) { + return -2; + } +#endif + } + report_progress(i, n_bytes, NULL); + } + serjtag_flush(pgm); + return i; +} + + +static int serjtag_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, + int page_size, int n_bytes) +{ + if (strcmp(m->desc, "flash") == 0) { + return serjtag_paged_write_flash(pgm, p, m, page_size, n_bytes); + } + else if (strcmp(m->desc, "eeprom") == 0) { + return serjtag_paged_write_gen(pgm, p, m, page_size, n_bytes); + } + else { + return -2; + } +} + + +static int serjtag_paged_load_gen(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, + int page_size, int n_bytes) +{ + unsigned char rbyte; + unsigned long i; + int rc; + + for (i=0; ibuf[i] = rbyte; + report_progress(i, n_bytes, NULL); + } + return 0; +} + + +static struct serjtag_request { + int addr; + int bytes; + int n; + struct serjtag_request *next; +} *req_head,*req_tail,*req_pool; + +static void put_request(int addr, int bytes, int n) +{ + struct serjtag_request *p; + if (req_pool) { + p = req_pool; + req_pool = p->next; + } else { + p = malloc(sizeof(struct serjtag_request)); + if (!p) { + fprintf(stderr, "can't alloc memory\n"); + exit(1); + } + } + memset(p, 0, sizeof(struct serjtag_request)); + p->addr = addr; + p->bytes = bytes; + p->n = n; + if (req_tail) { + req_tail->next = p; + req_tail = p; + } else { + req_head = req_tail = p; + } +} + +static int do_request(PROGRAMMER * pgm, AVRMEM *m) +{ + struct serjtag_request *p; + int addr, bytes, j, n; + char buf[128]; + + if (!req_head) return 0; + p = req_head; + req_head = p->next; + if (!req_head) req_tail = req_head; + + addr = p->addr; + bytes = p->bytes; + n = p->n; + memset(p, 0, sizeof(struct serjtag_request)); + p->next = req_pool; + req_pool = p; + + serjtag_recv_j(pgm, buf, bytes + 3, 0); + for (j=0; jbuf[addr++] = buf[3 + 4*j + 3]; + } + return 1; +} + +#define REQ_OUTSTANDINGS 10 +static int serjtag_paged_load_flash(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, + int page_size, int n_bytes) +{ + unsigned long i,j,n; + //int rc; + int addr,addr_save,bytes,buf_pos; + int req_count = 0; + char buf[128]; + + addr = 0; + for (i=0; i= n_bytes) break; + buf[buf_pos++] = (addr & 1)?0x28:0x20; + buf[buf_pos++] = (addr >> 9) & 0xff; + buf[buf_pos++] = (addr >> 1) & 0xff; + buf[buf_pos++] = 0; + addr ++; + i++; + } + n = j; + buf[2] = bytes = buf_pos - 3; + buf[buf_pos++] = 'r'; /* Request Recieved Data */ + buf[buf_pos++] = 0; + buf[buf_pos++] = 0; + serjtag_send(pgm, buf, buf_pos); + put_request(addr_save, bytes, n); + req_count++; + if (req_count > REQ_OUTSTANDINGS) + do_request(pgm, m); + report_progress(i, n_bytes, NULL); + } + while (do_request(pgm, m)) + ; + return 0; +} + +static int serjtag_paged_load(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, + int page_size, int n_bytes) +{ + if (strcmp(m->desc, "flash") == 0) { + return serjtag_paged_load_flash(pgm, p, m, page_size, n_bytes); + } + else if (strcmp(m->desc, "eeprom") == 0) { + return serjtag_paged_load_gen(pgm, p, m, page_size, n_bytes); + } + else { + return -2; + } +} + +void serjtag_initpgm(PROGRAMMER * pgm) +{ + strcpy(pgm->type, "serjtag"); + + /* + * mandatory functions + */ + pgm->initialize = serjtag_initialize; + pgm->display = serjtag_display; + pgm->enable = serjtag_enable; + pgm->disable = serjtag_disable; + pgm->program_enable = serjtag_program_enable; + pgm->chip_erase = serjtag_chip_erase; + pgm->cmd = serjtag_cmd; + pgm->open = serjtag_open; + pgm->close = serjtag_close; + pgm->read_byte = avr_read_byte_default; + pgm->write_byte = avr_write_byte_default; + + /* + * optional functions + */ + + pgm->paged_write = serjtag_paged_write; + pgm->paged_load = serjtag_paged_load; + pgm->read_sig_bytes = serjtag_read_sig_bytes; +} diff -ru avrdude-5.3.1/serjtag.h avrdude-5.3.1-serjtag/serjtag.h --- avrdude-5.3.1/serjtag.h 2007-06-18 15:52:38.000000000 +0900 +++ avrdude-5.3.1-serjtag/serjtag.h 2007-06-18 16:30:02.000000000 +0900 @@ -0,0 +1,22 @@ +#ifndef serjtag_h +#define serjtag_h + +#include "avrpart.h" + +#define JTAG_BUFSIZE 64 + +/* flags */ +#define JTAG_RECIEVE 0x80 +#define JTAG_TMS_HIGH 0x40 +#define JTAG_USE_DELAY 0x10 +#define JTAG_BITS 0x7 + +/* 's' command (JTAG_SET) flags */ +#define JTAG_SET_TDI 0x80 +#define JTAG_SET_TMS 0x40 +#define JTAG_SET_TCK 0x20 +#define JTAG_SET_DELAY 0x0f + +void serjtag_initpgm (PROGRAMMER * pgm); + +#endif /* serjtag_h */ serjtag-0.3/avrdude-serjtag/src/avrdude-5.3.1-usb910.patch0000644000076400007650000001066710635656672022556 0ustar suzsuz00000000000000--- avrdude-5.3.1-org/avr910.c 2006-12-11 21:47:35.000000000 +0900 +++ avrdude-5.3.1/avr910.c 2007-03-27 23:18:29.000000000 +0900 @@ -44,6 +44,9 @@ static char has_auto_incr_addr; +static char is_usb = 0; +#define READ_SIZE 64 +static unsigned char extra_buf[1024+7]; static int avr910_send(PROGRAMMER * pgm, char * buf, size_t len) { @@ -145,6 +148,7 @@ avr910_send(pgm, "S", 1); memset (id, 0, sizeof(id)); avr910_recv(pgm, id, sizeof(id)-1); + is_usb = !strncmp(id, "USB910",6); /* Get the HW and SW versions to see if the programmer is present. */ @@ -419,35 +423,54 @@ avr910_set_addr(pgm, addr>>1); while (addr < max_addr) { - page_wr_cmd_pending = 1; - buf[0] = cmd[addr & 0x01]; - buf[1] = m->buf[addr]; - avr910_send(pgm, buf, sizeof(buf)); - avr910_vfy_cmd_sent(pgm, "write byte"); - - addr++; - page_bytes--; - - if (m->paged && (page_bytes == 0)) { - /* Send the "Issue Page Write" if we have sent a whole page. */ - - avr910_set_addr(pgm, page_addr>>1); - avr910_send(pgm, "m", 1); - avr910_vfy_cmd_sent(pgm, "flush page"); - - page_wr_cmd_pending = 0; - usleep(m->max_write_delay); - avr910_set_addr(pgm, addr>>1); - - /* Set page address for next page. */ - - page_addr = addr; - page_bytes = page_size; - } - else if ((has_auto_incr_addr != 'Y') && ((addr & 0x01) == 0)) { - avr910_set_addr(pgm, addr>>1); + if (is_usb && m->paged) { + int i; + int idx = 0; + extra_buf[idx++] = 'A'; + extra_buf[idx++] = (addr>>(8+1)) & 0xff; + extra_buf[idx++] = (addr>>1) & 0xff; + for (i=0; i< page_size; i++) { + extra_buf[idx++] = cmd[(addr+i)&0x01]; + extra_buf[idx++] = (addr + i >= max_addr)?0xff:m->buf[addr+i]; + } + extra_buf[idx++] = 'A'; + extra_buf[idx++] = (addr>>(8+1)) & 0xff; + extra_buf[idx++] = (addr>>1) & 0xff; + extra_buf[idx++] = 'm'; + avr910_send(pgm, extra_buf, idx); + avr910_recv(pgm, extra_buf, 3 + page_size); + addr += page_size; + usleep(m->max_write_delay); + } else { + page_wr_cmd_pending = 1; + buf[0] = cmd[addr & 0x01]; + buf[1] = m->buf[addr]; + avr910_send(pgm, buf, sizeof(buf)); + avr910_vfy_cmd_sent(pgm, "write byte"); + + addr++; + page_bytes--; + + if (m->paged && (page_bytes == 0)) { + /* Send the "Issue Page Write" if we have sent a whole page. */ + + avr910_set_addr(pgm, page_addr>>1); + avr910_send(pgm, "m", 1); + avr910_vfy_cmd_sent(pgm, "flush page"); + + page_wr_cmd_pending = 0; + usleep(m->max_write_delay); + avr910_set_addr(pgm, addr>>1); + + /* Set page address for next page. */ + + page_addr = addr; + page_bytes = page_size; + } + else if ((has_auto_incr_addr != 'Y') && ((addr & 0x01) == 0)) { + avr910_set_addr(pgm, addr>>1); + } } - report_progress (addr, max_addr, NULL); } @@ -536,22 +559,36 @@ avr910_set_addr(pgm, addr); while (addr < max_addr) { - avr910_send(pgm, &cmd, 1); - if (cmd == 'R') { - /* The 'R' command returns two bytes, MSB first, we need to put the data - into the memory buffer LSB first. */ - avr910_recv(pgm, buf, 2); - m->buf[addr*2] = buf[1]; /* LSB */ - m->buf[addr*2+1] = buf[0]; /* MSB */ - } - else { - avr910_recv(pgm, (char *)&m->buf[addr], 1); - } - - addr++; - - if (has_auto_incr_addr != 'Y') { - avr910_set_addr(pgm, addr); + if (is_usb && cmd == 'R') { + int i; + for (i=0; ibuf[addr*2+i] = extra_buf[i+1]; /* LSB */ + m->buf[addr*2+i+1] = extra_buf[i]; /* MSB */ + } + addr += READ_SIZE/2; + } else { + avr910_send(pgm, &cmd, 1); + if (cmd == 'R') { + /* The 'R' command returns two bytes, MSB first, we need to put the data + into the memory buffer LSB first. */ + avr910_recv(pgm, buf, 2); + m->buf[addr*2] = buf[1]; /* LSB */ + m->buf[addr*2+1] = buf[0]; /* MSB */ + } + else { + avr910_recv(pgm, (char *)&m->buf[addr], 1); + } + + addr++; + + if (has_auto_incr_addr != 'Y') { + avr910_set_addr(pgm, addr); + } } report_progress (addr, max_addr, NULL); serjtag-0.3/avrdude-serjtag/src/avrdude.spec0000644000076400007650000000600210636232257020700 0ustar suzsuz00000000000000## -*- mode: rpm-spec; -*- ## ## $Id: avrdude.spec.in,v 1.4 2005/11/29 20:28:51 joerg_wunsch Exp $ ## ## avrdude.spec. Generated from avrdude.spec.in by configure. ## %define debug_package %{nil} %define _with_docs 1 %{?_without_docs: %define _with_docs 0} Summary: AVRDUDE is software for programming Atmel AVR Microcontrollers. Name: avrdude Version: 5.3.1 Release: suz4 URL: http://savannah.nongnu.org/projects/avrdude Source0: %{name}-%{version}.tar.gz Patch1: avrdude-5.3.1-usb910.patch Patch2: avrdude-5.3.1-avr910d.patch Patch3: avrdude-5.3.1-serjtag.patch Patch4: avrdude-5.3.1-baud.patch Patch5: avrdude-5.3.1-ft245r.patch License: GPL Group: Development/Tools BuildRoot: %{_tmppath}/%{name}-%{version}-root %description AVRDUDE is software for programming Atmel AVR Microcontrollers. %if %{_with_docs} ## The avrdude-docs subpackage %package docs Summary: Documentation for AVRDUDE. Group: Documentation %description docs Documentation for avrdude in info, html, postscript and pdf formats. %endif %prep %setup -q %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %build #export CPPFLAGS=-DSUPPORT_FT245R #export LDFLAGS=-lftd2xx ./configure --prefix=%{_prefix} --sysconfdir=/etc --mandir=%{_mandir} \ --infodir=%{_infodir} \ %if %{_with_docs} --enable-doc=yes %else --enable-doc=no %endif make %install rm -rf $RPM_BUILD_ROOT make prefix=$RPM_BUILD_ROOT%{_prefix} \ sysconfdir=$RPM_BUILD_ROOT/etc \ mandir=$RPM_BUILD_ROOT%{_mandir} \ infodir=$RPM_BUILD_ROOT%{_infodir} \ install rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}-%{version} rm -f $RPM_BUILD_ROOT%{_infodir}/dir %clean rm -rf $RPM_BUILD_ROOT %if %{_with_docs} %post docs [ -f %{_infodir}/avrdude.info ] && \ /sbin/install-info %{_infodir}/avrdude.info %{_infodir}/dir || : [ -f %{_infodir}/avrdude.info.gz ] && \ /sbin/install-info %{_infodir}/avrdude.info.gz %{_infodir}/dir || : %preun docs if [ $1 = 0 ]; then [ -f %{_infodir}/avrdude.info ] && \ /sbin/install-info --delete %{_infodir}/avrdude.info %{_infodir}/dir || : [ -f %{_infodir}/avrdude.info.gz ] && \ /sbin/install-info --delete %{_infodir}/avrdude.info.gz %{_infodir}/dir || : fi %endif %files %defattr(-,root,root) %{_prefix}/bin/avrdude %{_mandir}/man1/avrdude.1.gz %attr(0644,root,root) %config /etc/avrdude.conf %if %{_with_docs} %files docs %doc %{_infodir}/*info* %doc doc/avrdude-html/*.html %doc doc/TODO %doc doc/avrdude.ps %doc doc/avrdude.pdf %endif %changelog * Fri Sep 23 2005 Galen Seitz - Default to enable-doc=yes during configure. - Move info file to docs package. - Make building of docs package conditional. Basic idea copied from avr-gcc. * Wed Aug 27 2003 Theodore A. Roth [Thanks to Artur Lipowski ] - Do not build debug package. - Remove files not packaged to quell RH9 rpmbuild complaints. * Wed Mar 05 2003 Theodore A. Roth - Add docs sub-package. - Add %post and %preun scriptlets for handling info files. * Wed Feb 26 2003 Theodore A. Roth - Initial build. serjtag-0.3/avrdude-serjtag/src/avrdude-5.3.1-ft245r.patch0000644000076400007650000006432510636232245022544 0ustar suzsuz00000000000000diff -ru avrdude-5.3.1-base/Makefile.in avrdude-wk/Makefile.in --- avrdude-5.3.1-base/Makefile.in Wed Jun 20 00:10:55 2007 +++ avrdude-wk/Makefile.in Wed Jun 20 00:11:50 2007 @@ -87,7 +87,7 @@ am_avrdude_OBJECTS = avrdude-config_gram.$(OBJEXT) \ avrdude-lexer.$(OBJEXT) avrdude-avr.$(OBJEXT) \ avrdude-avr910.$(OBJEXT) avrdude-avrpart.$(OBJEXT) \ - avrdude-serjtag.$(OBJEXT) \ + avrdude-serjtag.$(OBJEXT) avrdude-ft245r.$(OBJEXT) \ avrdude-bitbang.$(OBJEXT) avrdude-butterfly.$(OBJEXT) \ avrdude-config.$(OBJEXT) avrdude-confwin.$(OBJEXT) \ avrdude-crc16.$(OBJEXT) avrdude-fileio.$(OBJEXT) \ @@ -273,6 +273,8 @@ avrpart.h \ serjtag.c \ serjtag.h \ + ft245r.c \ + ft245r.h \ bitbang.c \ bitbang.h \ butterfly.c \ @@ -433,6 +435,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-avr910.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-avrpart.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-serjtag.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-ft245r.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-bitbang.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-butterfly.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avrdude-config.Po@am__quote@ @@ -559,6 +562,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='serjtag.c' object='avrdude-serjtag.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -c -o avrdude-serjtag.obj `if test -f 'serjtag.c'; then $(CYGPATH_W) 'serjtag.c'; else $(CYGPATH_W) '$(srcdir)/serjtag.c'; fi` + +avrdude-ft245r.o: ft245r.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -MT avrdude-ft245r.o -MD -MP -MF "$(DEPDIR)/avrdude-ft245r.Tpo" -c -o avrdude-ft245r.o `test -f 'ft245r.c' || echo '$(srcdir)/'`ft245r.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/avrdude-ft245r.Tpo" "$(DEPDIR)/avrdude-ft245r.Po"; else rm -f "$(DEPDIR)/avrdude-ft245r.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ft245r.c' object='avrdude-ft245r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -c -o avrdude-ft245r.o `test -f 'ft245r.c' || echo '$(srcdir)/'`ft245r.c + +avrdude-ft245r.obj: ft245r.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -MT avrdude-ft245r.obj -MD -MP -MF "$(DEPDIR)/avrdude-ft245r.Tpo" -c -o avrdude-ft245r.obj `if test -f 'ft245r.c'; then $(CYGPATH_W) 'ft245r.c'; else $(CYGPATH_W) '$(srcdir)/ft245r.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/avrdude-ft245r.Tpo" "$(DEPDIR)/avrdude-ft245r.Po"; else rm -f "$(DEPDIR)/avrdude-ft245r.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ft245r.c' object='avrdude-ft245r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -c -o avrdude-ft245r.obj `if test -f 'ft245r.c'; then $(CYGPATH_W) 'ft245r.c'; else $(CYGPATH_W) '$(srcdir)/ft245r.c'; fi` avrdude-bitbang.o: bitbang.c @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(avrdude_CPPFLAGS) $(CPPFLAGS) $(avrdude_CFLAGS) $(CFLAGS) -MT avrdude-bitbang.o -MD -MP -MF "$(DEPDIR)/avrdude-bitbang.Tpo" -c -o avrdude-bitbang.o `test -f 'bitbang.c' || echo '$(srcdir)/'`bitbang.c; \ diff -ru avrdude-5.3.1-base/avrdude.conf.in avrdude-wk/avrdude.conf.in --- avrdude-5.3.1-base/avrdude.conf.in Wed Jun 20 00:10:55 2007 +++ avrdude-wk/avrdude.conf.in Wed Jun 20 23:04:52 2007 @@ -16,7 +16,7 @@ # id = [, [, ] ...] ; # are quoted strings # desc = ; # quoted string # type = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic | -# avr910 | butterfly | usbasp | serjtag +# avr910 | butterfly | usbasp | serjtag | ft245r | # jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw | # dragon_dw | dragon_jtag | dragon_isp | dragon_pp | # dragon_hvsp; # programmer type @@ -362,6 +362,26 @@ id = "serjtag"; desc = "Serial JTAG Cable"; type = serjtag; +; + +programmer + id = "ft245r"; + desc = "FT245R Synchronous BitBang"; + type = ft245r; + miso = 1; # D1 + sck = 0; # D0 + mosi = 2; # D2 + reset = 4; # D4 +; + +programmer + id = "ft232r"; + desc = "FT232R Synchronous BitBang"; + type = ft245r; + miso = 1; # RxD + sck = 0; # RTS + mosi = 2; # TxD + reset = 4; # DTR ; programmer diff -ru avrdude-5.3.1-base/config_gram.y avrdude-wk/config_gram.y --- avrdude-5.3.1-base/config_gram.y Wed Jun 20 00:10:55 2007 +++ avrdude-wk/config_gram.y Wed Jun 20 01:48:20 2007 @@ -137,6 +137,7 @@ %token K_STK500GENERIC %token K_AVR910 %token K_SERJTAG +%token K_FT245R %token K_USBASP %token K_BUTTERFLY %token K_TYPE @@ -424,6 +425,12 @@ } } | + K_TYPE TKN_EQUAL K_FT245R { + { + ft245r_initpgm(current_prog); + } + } | + K_TYPE TKN_EQUAL K_USBASP { { usbasp_initpgm(current_prog); @@ -1268,10 +1275,10 @@ value = v->value.number; - if ((value <= 0) || (value >= 18)) { + if ((value < 0) || (value >= 18)) { fprintf(stderr, "%s: error at line %d of %s: pin must be in the " - "range 1-17\n", + "range 0-17\n", progname, lineno, infile); exit(1); } diff -ru avrdude-5.3.1-base/ft245r.c avrdude-wk/ft245r.c --- avrdude-5.3.1-base/ft245r.c Wed Jun 20 02:01:50 2007 +++ avrdude-wk/ft245r.c Wed Jun 20 23:02:11 2007 @@ -0,0 +1,762 @@ +/* + * avrdude - A Downloader/Uploader for AVR device programmers + * Copyright (C) 2003-2004 Theodore A. Roth + * + * 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 + */ + +/* $Id$ */ + +/* ft245r -- FT245R/FT232R Synchronous BitBangMode Programmer + default pin assign + FT232R / FT245R + miso = 1; # RxD / D1 + sck = 0; # RTS / D0 + mosi = 2; # TxD / D2 + reset = 4; # DTR / D4 +*/ + +#include "ac_cfg.h" + +#include +#include +#include +#include +#include +#include + +#include "avr.h" +#include "pindefs.h" +#include "pgm.h" +#include "bitbang.h" +#include "ft245r.h" + +#if defined(_WIN32) || defined(SUPPORT_FT245R) +#if defined(_WIN32) +#include +#include "ftd2xx.h" +#else +#include "ftd2xx.h" +#endif + +#define FT245R_CYCLES 2 +#define FT245R_FRAGMENT_SIZE 512 +#define REQ_OUTSTANDINGS 10 +//#define USE_INLINE_WRITE_PAGE + +#define FT245R_DEBUG 1 + +extern char * progname; +extern int do_cycles; +extern int ovsigck; +extern int verbose; + +static FT_HANDLE handle; + +static unsigned char ft245r_ddr; +static unsigned char ft245r_sck; +static unsigned char ft245r_mosi; +static unsigned char ft245r_reset; +static unsigned char ft245r_miso; + +static inline void setbit(UCHAR *data, int pinno, int v) +{ + if (v) { + *data |= (1 << (pinno)); + } else { + *data &= ~(1 <<(pinno)); + } +} + +static int ft245r_send(PROGRAMMER * pgm, char * buf, size_t len) +{ + FT_STATUS r; + DWORD rlen; + r = FT_Write(handle, buf, len, &rlen); + if (r == FT_OK) return 0; + if (len != rlen) return -1; + return -1; +} + + +static int ft245r_recv(PROGRAMMER * pgm, char * buf, size_t len) +{ + FT_STATUS r; + DWORD rlen; + + r = FT_Read(handle, buf, len, &rlen); + + if (r != FT_OK || len != rlen) { + fprintf(stderr, + "%s: ft245r_recv(): programmer is not responding\n", + progname); + exit(1); + } + return 0; +} + + +static int ft245r_drain(PROGRAMMER * pgm, int display) +{ + FT_STATUS r; + DWORD n; + r = FT_SetBitMode(handle, 0, 0x0); // reset + if (r != FT_OK) return -1; + r = FT_SetBitMode(handle, ft245r_ddr, 0x4); // set Synchronuse BitBang + if (r != FT_OK) return -1; + + r = FT_GetQueueStatus(handle, &n); + if (r != FT_OK) return -1; + if (n) { + fprintf(stderr, "ft245r_drain called but queue is not empty %d \n", + (int)n); + } + return 0; +} + +static inline int ft245r_sync(PROGRAMMER * pgm) +{ + FT_STATUS r; + UCHAR ch; + r = FT_GetBitMode(handle, &ch); + if (r != FT_OK) return -1; + return 0; +} + +static int ft245r_chip_erase(PROGRAMMER * pgm, AVRPART * p) +{ + unsigned char cmd[4]; + unsigned char res[4]; + + if (p->op[AVR_OP_CHIP_ERASE] == NULL) { + fprintf(stderr, "chip erase instruction not defined for part \"%s\"\n", + p->desc); + return -1; + } + + memset(cmd, 0, sizeof(cmd)); + + avr_set_bits(p->op[AVR_OP_CHIP_ERASE], cmd); + pgm->cmd(pgm, cmd, res); + usleep(p->chip_erase_delay); + pgm->initialize(pgm, p); + + return 0; +} + +static unsigned char saved_signature[3]; + +static int valid_rates[] = { + 2400, 4800, 9600, 14400, 19200, 38400, 57600, + 115200, 230400, 460800, 921600, 3000000 +}; + +static void ft245r_set_bitclock(PROGRAMMER * pgm) { + FT_STATUS r; + int rate = 0; + int i; + + if (pgm->bitclock == 0.0) { // using default + rate = 235000.0 /2; + } else if (pgm->bitclock >= 0.50 ) { + rate = 500000.0 /2; + } else if (pgm->bitclock < 0.01) { + rate = 1000.0 /2; + } else { + rate = pgm->bitclock * 1000000.0 /2; + } + for (i= sizeof(valid_rates)/sizeof(valid_rates[0]) -1; i>=0; --i) + { + if (valid_rates[i] <= rate) { + rate = valid_rates[i]; + break; + } + } + if (i<0) rate = valid_rates[0]; + + r = FT_SetBaudRate(handle, rate); + if ((verbose>=1) || FT245R_DEBUG) { + fprintf(stderr," ft245r: bitclk %d -> ft baud %d\n", + rate * 2, rate); + } +} + +static int set_reset(PROGRAMMER * pgm, int val) +{ + unsigned char buf[1]; + + buf[0] = 0; + if (val) buf[0] |= ft245r_reset; + + ft245r_send (pgm, buf, 1); + ft245r_recv (pgm, buf, 1); + return 0; +} + +static int ft245r_cmd(PROGRAMMER * pgm, unsigned char cmd[4], + unsigned char res[4]); +/* + * issue the 'program enable' command to the AVR device + */ +static int ft245r_program_enable(PROGRAMMER * pgm, AVRPART * p) +{ + int retry_count = 0; + unsigned char cmd[4]; + unsigned char res[4]; + int i,reset_ok; + + ft245r_set_bitclock(pgm); + +retry: + reset_ok = 0; + set_reset(pgm, 0); + usleep(5000); // 5ms + set_reset(pgm, 1); + usleep(5000); // 5ms + set_reset(pgm, 0); + usleep(5000); // 5ms + + cmd[0] = 0xAC; + cmd[1] = 0x53; + cmd[2] = 0; + cmd[3] = 0; + ft245r_cmd(pgm, cmd, res); + if (res[2] == 0x53 ) reset_ok = 1; + for (i=0; i<3; i++) { + cmd[0] = 0x30; + cmd[1] = 0; + cmd[2] = i; + cmd[3] = 0; + ft245r_cmd(pgm, cmd, res); + saved_signature[i] = res[3]; + } + + if (reset_ok && (saved_signature[0] == 0x1e)) // success + return 0; + + if (retry_count < 5) { + retry_count++; + goto retry; + } + if ((verbose>=1) || FT245R_DEBUG) { + fprintf(stderr, + "%s: ft245r_program_enable: failed\n", progname); + fflush(stderr); + } + return -1; +} + +static int ft245r_read_sig_bytes(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m) +{ + m->buf[0] = saved_signature[0]; + m->buf[1] = saved_signature[1]; + m->buf[2] = saved_signature[2]; + return 3; +} + +/* + * initialize the AVR device and prepare it to accept commands + */ +static int ft245r_initialize(PROGRAMMER * pgm, AVRPART * p) +{ + return ft245r_program_enable(pgm, p); +} + +static void ft245r_disable(PROGRAMMER * pgm) +{ + return; +} + + +static void ft245r_enable(PROGRAMMER * pgm) +{ + /* Do nothing. */ + + return; +} + +static inline int set_data(unsigned char *buf, unsigned char data) +{ + int j; + int buf_pos = 0; + unsigned char bit = 0x80; + + for (j=0; j<8; j++) { + buf[buf_pos] = 0; + if (data & bit) buf[buf_pos] |= ft245r_mosi; + buf_pos++; + + buf[buf_pos] = 0; + if (data & bit) buf[buf_pos] |= ft245r_mosi; + buf[buf_pos] |= ft245r_sck; + buf_pos++; + + bit >>= 1; + } + return buf_pos; +} + +static inline unsigned char extract_data(unsigned char *buf, int offset) +{ + int j; + int buf_pos = 1; + unsigned char bit = 0x80; + unsigned char r = 0; + + buf += offset * (8 * FT245R_CYCLES); + for (j=0; j<8; j++) { + if (buf[buf_pos] & ft245r_miso) { + r |= bit; + } + buf_pos += FT245R_CYCLES; + bit >>= 1; + } + return r; +} + +/* to check data */ +static inline unsigned char extract_data_out(unsigned char *buf, int offset) +{ + int j; + int buf_pos = 1; + unsigned char bit = 0x80; + unsigned char r = 0; + + buf += offset * (8 * FT245R_CYCLES); + for (j=0; j<8; j++) { + if (buf[buf_pos] & ft245r_mosi) { + r |= bit; + } + buf_pos += FT245R_CYCLES; + bit >>= 1; + } + return r; +} + + +/* + * transmit an AVR device command and return the results; 'cmd' and + * 'res' must point to at least a 4 byte data buffer + */ +static int ft245r_cmd(PROGRAMMER * pgm, unsigned char cmd[4], + unsigned char res[4]) +{ + int i,buf_pos; + unsigned char buf[128]; + + buf_pos = 0; + for (i=0; i<4; i++) { + buf_pos += set_data(buf+buf_pos, cmd[i]); + } + buf[buf_pos] = 0; + buf_pos++; + + ft245r_send (pgm, buf, buf_pos); + ft245r_recv (pgm, buf, buf_pos); + res[0] = extract_data(buf, 0); + res[1] = extract_data(buf, 1); + res[2] = extract_data(buf, 2); + res[3] = extract_data(buf, 3); + + return 0; +} + +static int ft245r_open(PROGRAMMER * pgm, char * port) +{ + FT_STATUS r; + int devnum = -1; + strcpy(pgm->port, port); + +#ifdef _WIN32 + if (!strncasecmp("ft", port, 2) && '0' <= port[2] && port[2] <= '9') { + devnum = port[2] - '0'; + } else { + fprintf(stderr, + "%s: invalid portname %s: use ft0 - ft9\n", + progname,port); + exit(1); + } + r = FT_Open(devnum, &handle); +#else + for (devnum=0; devnum<9; devnum++) { + r = FT_Open(devnum, &handle); + if (r == FT_OK) break; + } +#endif + if (r != FT_OK) { + fprintf(stderr, + "%s: %s open failed \n", + progname, port); + exit(1); + } + r = FT_SetBitMode(handle, 0, 0x4); // set Synchronuse BitBang + if (r != FT_OK) { + fprintf(stderr, + "%s: Synchronuse BitBangMode is not supported\n", + progname); + exit(1); + } +#if FT245R_DEBUG + fprintf(stderr, "%s: BitBang OK \n", progname); + fflush(stderr); +#endif + + ft245r_ddr = 0; + setbit(&ft245r_ddr, pgm->pinno[PIN_AVR_SCK], 1); + setbit(&ft245r_ddr, pgm->pinno[PIN_AVR_MOSI], 1); + setbit(&ft245r_ddr, pgm->pinno[PIN_AVR_RESET], 1); + ft245r_sck = 0; + setbit(&ft245r_sck, pgm->pinno[PIN_AVR_SCK], 1); + ft245r_mosi = 0; + setbit(&ft245r_mosi, pgm->pinno[PIN_AVR_MOSI], 1); + ft245r_reset = 0; + setbit(&ft245r_reset, pgm->pinno[PIN_AVR_RESET], 1); + ft245r_miso = 0; + setbit(&ft245r_miso, pgm->pinno[PIN_AVR_MISO], 1); + if ((verbose>=1) || FT245R_DEBUG) { + fprintf(stderr, + "%s: pin assign miso %d sck %d mosi %d reset %d\n", + progname, + pgm->pinno[PIN_AVR_MISO], + pgm->pinno[PIN_AVR_SCK], + pgm->pinno[PIN_AVR_MOSI], + pgm->pinno[PIN_AVR_RESET]); + } + + /* + * drain any extraneous input + */ + ft245r_drain (pgm, 0); +#if FT245R_DEBUG + fprintf(stderr, "%s: drain OK \n", progname); + fflush(stderr); +#endif + + return 0; +} + +static void ft245r_close(PROGRAMMER * pgm) +{ + FT_Close(handle); +} + +static void ft245r_display(PROGRAMMER * pgm, char * p) +{ + return; +} + +static int ft245r_paged_write_gen(PROGRAMMER * pgm, AVRPART * p, + AVRMEM * m, int page_size, int n_bytes) +{ + unsigned long i; + int rc; + for (i=0; ibuf[i]); + if (rc != 0) { + return -2; + } + + if (m->paged) { + /* + * check to see if it is time to flush the page with a page + * write + */ + if (((i % m->page_size) == m->page_size-1) || (i == n_bytes-1)) { + rc = avr_write_page(pgm, p, m, i); + if (rc != 0) { + return -2; + } + } + } + } + return i; +} + +static struct ft245r_request { + int addr; + int bytes; + int n; + struct ft245r_request *next; +} *req_head,*req_tail,*req_pool; + +static void put_request(int addr, int bytes, int n) +{ + struct ft245r_request *p; + if (req_pool) { + p = req_pool; + req_pool = p->next; + } else { + p = malloc(sizeof(struct ft245r_request)); + if (!p) { + fprintf(stderr, "can't alloc memory\n"); + exit(1); + } + } + memset(p, 0, sizeof(struct ft245r_request)); + p->addr = addr; + p->bytes = bytes; + p->n = n; + if (req_tail) { + req_tail->next = p; + req_tail = p; + } else { + req_head = req_tail = p; + } +} + +static int do_request(PROGRAMMER * pgm, AVRMEM *m) +{ + struct ft245r_request *p; + int addr, bytes, j, n; + char buf[FT245R_FRAGMENT_SIZE+1+128]; + + if (!req_head) return 0; + p = req_head; + req_head = p->next; + if (!req_head) req_tail = req_head; + + addr = p->addr; + bytes = p->bytes; + n = p->n; + memset(p, 0, sizeof(struct ft245r_request)); + p->next = req_pool; + req_pool = p; + + ft245r_recv(pgm, buf, bytes); + for (j=0; jbuf[addr++] = extract_data(buf , (j * 4 + 3)); + } +#if 0 +if (n == 0) // paged_write +fprintf(stderr, "recv addr 0x%04x buf size %d \n",addr, bytes); +#endif + return 1; +} + +static int ft245r_paged_write_flash(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, + int page_size, int n_bytes) +{ + unsigned int i,j; + int addr,addr_save,buf_pos,do_page_write,req_count; + char buf[FT245R_FRAGMENT_SIZE+1+128]; + + req_count = 0; + addr = 0; + for (i=0; i> 9) & 0xff ); + buf_pos += set_data(buf+buf_pos, (addr >> 1) & 0xff ); + buf_pos += set_data(buf+buf_pos, m->buf[i]); + addr ++; + i++; + if ( (m->paged) && + (((i % m->page_size) == 0) || (i == n_bytes))) { + do_page_write = 1; + break; + } + } +#if defined(USE_INLINE_WRITE_PAGE) + if (do_page_write) { + int addr_wk = addr_save - (addr_save % m->page_size); + /* If this device has a "load extended address" command, issue it. */ + if (m->op[AVR_OP_LOAD_EXT_ADDR]) { + unsigned char cmd[4]; + OPCODE *lext = m->op[AVR_OP_LOAD_EXT_ADDR]; + + memset(cmd, 0, 4); + avr_set_bits(lext, cmd); + avr_set_addr(lext, cmd, addr_wk/2); + buf_pos += set_data(buf+buf_pos, cmd[0]); + buf_pos += set_data(buf+buf_pos, cmd[1]); + buf_pos += set_data(buf+buf_pos, cmd[2]); + buf_pos += set_data(buf+buf_pos, cmd[3]); + } + buf_pos += set_data(buf+buf_pos, 0x4C); /* Issue Page Write */ + buf_pos += set_data(buf+buf_pos,(addr_wk >> 9) & 0xff); + buf_pos += set_data(buf+buf_pos,(addr_wk >> 1) & 0xff); + buf_pos += set_data(buf+buf_pos, 0); + } +#endif + if (i >= n_bytes) { + buf[buf_pos++] = 0; // sck down + } + ft245r_send(pgm, buf, buf_pos); + put_request(addr_save, buf_pos, 0); + //ft245r_sync(pgm); +#if 0 +fprintf(stderr, "send addr 0x%04x bufsize %d [%02x %02x] page_write %d\n", + addr_save,buf_pos, + extract_data_out(buf , (0*4 + 3) ), + extract_data_out(buf , (1*4 + 3) ), + do_page_write); +#endif + req_count++; + if (req_count > REQ_OUTSTANDINGS) + do_request(pgm, m); + if (do_page_write) { +#if defined(USE_INLINE_WRITE_PAGE) + while (do_request(pgm, m)) + ; + usleep(m->max_write_delay); +#else + int addr_wk = addr_save - (addr_save % m->page_size); + int rc; + while (do_request(pgm, m)) + ; + rc = avr_write_page(pgm, p, m, addr_wk); + if (rc != 0) { + return -2; + } +#endif + req_count = 0; + } + report_progress(i, n_bytes, NULL); + } + while (do_request(pgm, m)) + ; + return i; +} + + +static int ft245r_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, + int page_size, int n_bytes) +{ + if (strcmp(m->desc, "flash") == 0) { + return ft245r_paged_write_flash(pgm, p, m, page_size, n_bytes); + } + else if (strcmp(m->desc, "eeprom") == 0) { + return ft245r_paged_write_gen(pgm, p, m, page_size, n_bytes); + } + else { + return -2; + } +} + +static int ft245r_paged_load_gen(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, + int page_size, int n_bytes) +{ + unsigned char rbyte; + unsigned long i; + int rc; + + for (i=0; ibuf[i] = rbyte; + report_progress(i, n_bytes, NULL); + } + return 0; +} + + +static int ft245r_paged_load_flash(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, + int page_size, int n_bytes) +{ + unsigned long i,j,n; + //int rc; + int addr,addr_save,buf_pos; + int req_count = 0; + char buf[FT245R_FRAGMENT_SIZE+1]; + + addr = 0; + for (i=0; i= n_bytes) break; + buf_pos += set_data(buf+buf_pos, (addr & 1)?0x28:0x20 ); + buf_pos += set_data(buf+buf_pos, (addr >> 9) & 0xff ); + buf_pos += set_data(buf+buf_pos, (addr >> 1) & 0xff ); + buf_pos += set_data(buf+buf_pos, 0); + addr ++; + i++; + } + if (i >= n_bytes) { + buf[buf_pos++] = 0; // sck down + } + n = j; + ft245r_send(pgm, buf, buf_pos); + put_request(addr_save, buf_pos, n); + req_count++; + if (req_count > REQ_OUTSTANDINGS) + do_request(pgm, m); + report_progress(i, n_bytes, NULL); + } + while (do_request(pgm, m)) + ; + return 0; +} + +static int ft245r_paged_load(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m, + int page_size, int n_bytes) +{ + if (strcmp(m->desc, "flash") == 0) { + return ft245r_paged_load_flash(pgm, p, m, page_size, n_bytes); + } + else if (strcmp(m->desc, "eeprom") == 0) { + return ft245r_paged_load_gen(pgm, p, m, page_size, n_bytes); + } + else { + return -2; + } +} + +void ft245r_initpgm(PROGRAMMER * pgm) +{ + strcpy(pgm->type, "ft245r"); + + /* + * mandatory functions + */ + pgm->initialize = ft245r_initialize; + pgm->display = ft245r_display; + pgm->enable = ft245r_enable; + pgm->disable = ft245r_disable; + pgm->program_enable = ft245r_program_enable; + pgm->chip_erase = ft245r_chip_erase; + pgm->cmd = ft245r_cmd; + pgm->open = ft245r_open; + pgm->close = ft245r_close; + pgm->read_byte = avr_read_byte_default; + pgm->write_byte = avr_write_byte_default; + + /* + * optional functions + */ + pgm->paged_write = ft245r_paged_write; + pgm->paged_load = ft245r_paged_load; + + pgm->read_sig_bytes = ft245r_read_sig_bytes; +} +#else +static int ft245r_initialize(PROGRAMMER * pgm, AVRPART * p) +{ + return -1; +} + +void ft245r_initpgm(PROGRAMMER * pgm) +{ + pgm->initialize = ft245r_initialize; +} + +#endif diff -ru avrdude-5.3.1-base/ft245r.h avrdude-wk/ft245r.h --- avrdude-5.3.1-base/ft245r.h Wed Jun 20 02:01:52 2007 +++ avrdude-wk/ft245r.h Wed Jun 20 02:01:06 2007 @@ -0,0 +1,8 @@ +#ifndef ft245r_h +#define ft245r_h + +#include "avrpart.h" + +void ft245r_initpgm (PROGRAMMER * pgm); + +#endif /* ft245r_h */ diff -ru avrdude-5.3.1-base/lexer.l avrdude-wk/lexer.l --- avrdude-5.3.1-base/lexer.l Wed Jun 20 00:10:55 2007 +++ avrdude-wk/lexer.l Wed Jun 20 00:11:50 2007 @@ -123,6 +123,7 @@ avr910 { yylval=NULL; return K_AVR910; } avr910_devcode { yylval=NULL; return K_AVR910_DEVCODE; } serjtag { yylval=NULL; return K_SERJTAG; } +ft245r { yylval=NULL; return K_FT245R; } usbasp { yylval=NULL; return K_USBASP; } bank_size { yylval=NULL; return K_PAGE_SIZE; } banked { yylval=NULL; return K_PAGED; } diff -ru avrdude-5.3.1-base/serjtag.c avrdude-wk/serjtag.c --- avrdude-5.3.1-base/serjtag.c Wed Jun 20 00:10:55 2007 +++ avrdude-wk/serjtag.c Wed Jun 20 19:19:21 2007 @@ -467,12 +467,12 @@ int page_size, int n_bytes) { unsigned int i,j; - int addr,addr_wk,buf_pos,do_page_write; + int addr,addr_save,buf_pos,do_page_write; char buf[128]; addr = 0; for (i=0; ipage_size); /* If this device has a "load extended address" command, issue it. */ if (m->op[AVR_OP_LOAD_EXT_ADDR]) { OPCODE *lext = m->op[AVR_OP_LOAD_EXT_ADDR]; @@ -511,7 +511,7 @@ buf[buf_pos++] = 'd'; /* PUT TDI Stream */ buf[buf_pos++] = JTAG_RECIEVE | use_delay; buf[buf_pos++] = 4; /* bytes */ - buf[buf_pos++] = 0x4c; /* Issue Page Write */ + buf[buf_pos++] = 0x4C; /* Issue Page Write */ buf[buf_pos++] = (addr_wk >> 9) & 0xff; buf[buf_pos++] = (addr_wk >> 1) & 0xff; buf[buf_pos++] = 0; serjtag-0.3/avrdude-serjtag/binary/0000755000076400007650000000000010636232075017067 5ustar suzsuz00000000000000serjtag-0.3/avrdude-serjtag/binary/COPYING.txt0000644000076400007650000004363410635656672020766 0ustar suzsuz00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. serjtag-0.3/avrdude-serjtag/binary/avrdude.conf0000755000076400007650000134642010636222003021373 0ustar suzsuz00000000000000# $Id: avrdude.conf.in,v 1.116 2006/12/22 22:52:34 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 | serjtag | ft245r | # 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 # Note that both lists contradict for the ATmega32 and the ATmega163. # We go with the original AVR910 in these cases. As AVR910 still has # the originally name ATmega83 for the ATmega8535, we use the AVR109 # code here. # # Overall avrdude defaults # default_parallel = "lpt1"; default_serial = "com1"; # # 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 = "serjtag"; desc = "Serial JTAG Cable"; type = serjtag; ; programmer id = "ft245r"; desc = "FT245R Synchronous BitBang"; type = ft245r; miso = 1; # D1 sck = 0; # D0 mosi = 2; # D2 reset = 4; # D4 ; programmer id = "ft232r"; desc = "FT232R Synchronous BitBang"; type = ft245r; miso = 1; # RxD sck = 0; # RTS mosi = 2; # TxD reset = 4; # DTR ; programmer id = "usbasp"; desc = "USBasp, http://www.fischl.de/usbasp/"; type = usbasp; ; 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 = 0x46; 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 = 0x44; 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 = 0x75; 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"; ; ; #------------------------------------------------------------ # ATmega164 #------------------------------------------------------------ # close to ATmega16 part id = "m164"; desc = "ATMEGA164"; 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"; ; ; #------------------------------------------------------------ # ATmega324 #------------------------------------------------------------ # similar to ATmega164 part id = "m324"; desc = "ATMEGA324"; 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"; ; ; #------------------------------------------------------------ # 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 = 0x79; 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 = 0x77; 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 = 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 = 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 = 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"; ; ; #------------------------------------------------------------ # ATmega8515 #------------------------------------------------------------ part id = "m8515"; desc = "ATMEGA8515"; stk500_devcode = 0x63; avr910_devcode = 0x3B; 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 = 0x6A; 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"; ; ; #------------------------------------------------------------ # 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"; ; ; #------------------------------------------------------------ # 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 = 0; resetdelayus = 50; 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 = 0; resetdelayus = 50; 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 = 0; resetdelayus = 50; 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 = 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 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 = 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 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 = 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 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 = 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 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 = 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 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"; ; ; serjtag-0.3/avrdude-serjtag/binary/avrdude.exe0000755000076400007650000110311610636232505021230 0ustar suzsuz00000000000000MZ@ !L!This program cannot be run in DOS mode. $PELe3yF  8@ $ .text``.data  @.rdata@@.bss.idata$ @U]U1u1=wC=r[$1T$tzt$仍u]]=twJ=tu]]=t[=u吐$1t$tjt$倬=宣冉$L$pv蓊xl$ 1L$Lt0R$ 倡?$D$%$ \$ 'US$]$@RwMxECU\$ 0BD$T$L$ $C萍`Ctc@B`Ct `CD$`CK0 $`Ct&`C\$ `CQP$[t&';@Bnv粽L$CT$C$宙$D$`CB$蔘`CJv'U$TC荼&U$TC&U C]t&U hC]U]xUWVS\EH$( 顏E犹C仍C$蓼 糲蓼顏蓼f$;蓼 $蓼+$劍@'~@$B蕚t$$蓿 $葢$+'~ '争操奢奢\yD$$争操$$ 日鵑操争操奢奢yD$$争操  日鵑$蓼蓼操 糲糲$;蓼w號)顏脆B蹂曙u;=仍Cu H1PC=仍CE仍C4=仍Cw{CB璧 璧璧UM蹂曙曙j蹂昔B;E蹂 猖B蹂曙y曙up'蹂曙uW'曙eu}(=仍Ct 仍C糲$C糲}tE蹂顏虔顏B蹂曙u蛛&蹂`B~+糲蹂戉舜%戉TB倏D$糲A@D$$西C紳C糲B$r%D$糲A@D$$`CObC糲B$莨1%D$糲A@D$$PCRC糲B$}蜷$~CTCD$CH$莠CPCL薺$C$莖nu?PCD$TCD$ PBD$D$B`C@$P$4CxTu?PCD$TCD$ PBD$D$蔆B`C@$$蒻D$CD$@C$HpC蛹#茣|PCTCD${Ch$荼仟CPCl蕷#{Cx@u?PCD$TCD$ PBD$D$B`C@$T$8{Cd$+mn$5mx@1xHu?PCD$TCD$ PBD$D$B`C@$菴$茖xLu?PCD$TCD$ PBD$D$\B`C@$t$X@HBL9ADt}@DD$ @HBLD$@LD$@HD$PCD$TCD$ PBD$D$B`C@$葫$莉$菲kD${CD$\C$n仟C薤!糲D$pC$i!糲D$pC$uij!糲D$C$WiL!糲D$C$9i.!pC$.k!D$pC$菁o@$D$C$葯h$TC$莵藐 C$r薤 C$ C$莢G C$菠Ip C$莪H^ C$OL C$}n: C$萬( C$蒭 C$茘j C$ 蜥C$;蛟C$l`蚓C$;a藜C$ J薨C$蕚bC$葫LC$蔆JtC$菴abC$KPD$P糲@D$C$*C@S糲$ C|C$蕣hD$C$m@拿f f扠扠CC噫 ||$蓆eCC$Rh=D$C$蓚l@拿f f扠扠CC噫 $DeC糲@拿f f扠扠w糲B$蓆D$糲D$$茣A糲B$荼D$糲D$$~ D$糲D$$Y蜀D$糲D$$4藾D$糲D$$D$糲D$$蒻wD$糲D$$ 菘RD$糲D$$ -糲B$茲D$糲D$$j蝸糲B$nD$糲D$$4藾D$糲D$$D$糲D$$蒻wD$糲D$$菘RD$糲D$$-D$糲D$$ {D$糲D$$ V蜒D$ 糲@D${C@$莉{C@_糲$+D$@糲@D${C${{C@?糲$蓍\PCD$TCD$ PBD$D$B`C@$ $蓆仟C糲@拿f f扠Z`扠糲$]蚩仟C糲@拿f f扠Zd扠糲$仟C糲A@拿f f扠扠Bn仟C糲A@扠扠Bo仟C糲@扠扠Bp糲B$Y糲A$H糲$8蕭{C絹t?TCD$PCD$ PBD$D$DB`C@$K~$/~{C C$;bD$C$萪fwX{C@拿f f扠扠B  $R TCD$PCD$ PBD$D$B`C@$.}H{C絹t?TCD$PCD$ PBD$D$DB`C@$蓙|$萍|{C C$葷`D$C$qewX{C@拿f f扠扠B  $莊R TCD$PCD$ PBD$D$B`C@$菲{蜈 C$蔆_D$C$jdwX{C@拿f f扠扠B  $莪R TCD$PCD$ PBD$D$績B`C@$萃z蛩 C$菠^D$C$ccwX{C@拿f f扠扠B $荅R TCD$PCD$ PBD$D$B`C@$莉y蛆仟C糲@拿f f扠Zh扠糲$仟C糲@拿f f扠扠Bl糲$莉0仟C糲@拿f f扠扠Bm糲$c蛄糲8u{C@t糲8%u {C@t糲D$糲BD$$Hr仟C糲@拿f f扠扠糲$莚"仟C糲@拿f f扠扠糲$_蚋仟C糲@拿f f扠扠糲$仟C糲@拿f f扠(扠糲$菴2仟C糲@拿f f扠扠糲$o蛯仟C糲@拿f f扠扠糲$仟C糲@拿f f扠扠糲$菎5仟C糲@拿f f扠扠糲$r蜈仟C糲@拿f f扠扠糲$"仟C糲@拿f f扠扠糲$菻E仟C糲@拿f f扠扠糲$蝠仟C糲@拿f f扠扠糲$2薀仟C糲@拿f f扠扠糲$萵U仟C糲@拿f f扠扠糲$仟C糲@拿f f扠扠糲$B薺 仟C糲@拿f f扠扠糲$蓿e 仟C糲@拿f f扠扠糲$茴 仟C糲@拿f f扠扠糲$R蘚 仟C糲@拿f f扠扠糲$u 仟C糲@拿f f扠扠糲$莢% 仟C糲@拿f f扠扠糲$b蚯 仟C糲@拿f f扠 扠糲$ 仟C糲@拿f f扠扠糲$菎5 仟C糲@拿f f扠扠糲$r蜈 仟C糲@拿f f扠扠糲$" 仟C糲@拿f f扠扠糲$菻E 仟C糲@拿f f扠 扠糲$蝠 仟C糲@拿f f扠$扠糲$2薀 糲8Qu{C仟CR|P|$糲8Pu{C仟CR|磆P|糲$葭F 糲8Qu{C仟CR|@P|$糲8Pu{C仟CR|眇P|糲$t蜃糲8Qu{C仟CR|P|$糲8Pu{C仟CR|硼P|糲$糲8Qu{C仟CR| P|$糲8Pu{C仟CR|矍P|糲$莇)仟C糲@拿f f扠扠,糲$Y虧仟C糲@拿f f扠扠-糲$蕣o仟C糲@拿f f扠扠.糲$仟C糲@拿f f扠扠f0糲$B薺糲8Qu{C仟CR|P|$糲8Pu{C仟CR|磬P|糲$蓊V糲8Qu*仟C{C@|B|仟C{C@|瓊B|r糲8Pu*仟C{C@|瓔B|仟C{C@|瓊B|8糲86u(仟C{C@|B|仟C{C@|B|糲$"糲檍旬<t旬@t{C@x {C@x糲A$菷;vYC糲@$萬WD$C$蕈j糲$蝌CD${Cd$萵LC虱糲B$萃菻S$ 仟C4糲A$蕀nC糲8Q鏡B@糲$萇<C糲@拿f f扠ZD扠糲$|蜿C糲@拿f f扠ZH扠糲$/蘂C糲@拿f f扠ZL扠糲$萵UC糲@拿f f扠ZP扠糲$C糲@拿f f扠ZT扠糲$H藥C糲8Q鏡BX糲$C糲@拿f f扠扠B\糲$莠/C糲@拿f f扠扠B]糲$b蚯C糲@拿f f扠Z`扠糲$C糲@拿f f扠Zd扠糲$菷;C糲@拿f f扠Zh扠糲${蜴C糲@拿f f扠Zl扠糲$.蕁C糲@拿f f扠Zp扠糲$葹W糲A$N\O$ CDx糲B$操)糲)蓼糲糲蹂 B蹂蹂B顏蓼顏署x>署j2顏昔B蓼f;u顏猖B顏蛟蹂pB顏蘿}u犹C$GB蕘}u=仍Cu<仍CE0蓼;$u糲蓼蓼顏顏脆B蹂曙u覡蹂曙x曙j蹂f 昔Bu蹂猖B蹂曙y曙uT蹂)曙u;曙eu%糲$C糲蹂顏t$$蓼c $蓐c/t$$萇c $荵ce[^_]U(E @}Ef fEm]m}x}?TCD$PCD$ PBD$D$B`C@$c$蓿b}t E CUEx秒U(E-E} U B倏E蕭EEEE~EuElEcEZE QE HE ?PCD$TCD$ PBD$D$蕚B`C@$b$蓍aE秒USE pC$FD$pC$JED$8C蝎PC8C蜆PCE蓖E}*t}t} uPC諳}*u菁E}*u謳}/u}u掘PCD$ TCD$D$C`C@$蓐XED$D$C`C@$萢X$莟X^C鮎C狢C^C$茲pC8CE:^C 鮎C蜻^C 鮎C蛩^C 鮎C號^C鮎C藐^C 鮎C薀^C臓C@鮎CCEE8t^CEE鮎C誦PCD$D$C`C@$荼W$W雹CEuI雹CEH3雹CE 雹CEI雹CEJ蜻 雹CEK蚫 雹CE蘚 雹CE薇 雹CE 雹CE 雹CEm 雹CELW 雹CEA 雹CE+ 雹CE 雹CE 雹CE蜑 雹CE蚌 雹CE藹 雹CE薈 雹CE 雹CE{ 雹CEe 雹CE|O 雹CE!9 雹CEv# 雹CE" 雹CE#蝸 雹CEw蛛 雹CEx號 雹CE$薺 雹CEy 雹CE& 雹CE's 雹CE(] 雹CE)G 雹CE+1 雹CE  雹CE, 雹CE-蜿 雹CE.蛉 雹CE/蘆 雹CE/薛 雹CE 雹CE 雹CE0k 雹CE1U 雹CE2? 雹CE3) 雹CE4 雹CE5蝮 雹CE7蜃 雹CEz蚪 雹CE8藥 雹CE9薀 雹CE: 雹CE=y 雹CE>c 雹CE?M 雹CEA7 雹CEB! 雹CE{ 雹CEC蝠雹CED蛬雹CEE乕雹CEF薐雹CEG雹CE雹CEMq雹CEN[雹CEOE雹CER/雹CES雹CET雹CEU蜊雹CEV蛆雹CEW藾雹CEX蕭雹CEY雹CEZ雹CE[i雹CE\S雹CE]=雹CE^'雹CE_雹CE`蝗雹CEs蜈雹CEt蚣雹CEa藕雹CEb蕋雹CEc雹CEdw雹CEea雹CEfK雹CEg5雹CEh雹CEi 雹CEj蜩雹CEl蛞雹CEm蘿雹CEn蕷雹CEo雹CEp雹CEqo雹CErY雹CE}C雹CE~-$莅pCE$%pCE%蜩$6tpCE6蛄$<WpCE<藕$@:pCE@$pCE$pCEb$蓊pCEE$萋pCE($荅pCE $pCE蜴$opCE蚪$RpCE藉$ 5pCE $ pCE z$ 蕀pCE ]$ 葆pCE @$P菫pCEP#$Q茲pCEQ雹CuE蜍雹CZE蚩雹C?E薺雹C$EPCYPCD$ TCD$D$C`C@$莢KD$ 2CD$GCD$`C`C@$K$nKCD$PCD$ TCD$D$C`C@$KK$/KCD$ D$CD$C$KE藝E+CHEHCUCx$u&C@XCCCC@$CXC@;(CrYEC(CEE$cECU}t(C(CEUU韈(CE跚E}t } }tu薨}hCt/C(C8CJUE篩争E簪E粡=hCLC$X:EC(C莊E陝(CECU蓍1CXC@丕(CE陝(CECU蓍$C蓙 虔E秒USDC@E燹CECXCB@;(Cs $tC茵 Cx u,C(C)u E蜆E蚰C(C)EM愬EU9U}MEEEE夐癲Cx$uCXC@蝴C@ +EHE}CEEP(C)EExtYE@ E}MUE@ 争B A UE@ B ]E@ D$E@$菎C E霰@Exu $CZUEB(CC@ +EHE;} ~E CxE*EE;E}9C$萸GE}t#} tC@UEM E訖} uCEJEM E}uC@ 争t $CE譯XCYCD$ ED$D$CUP$GXCXCuC@ 争t $C CXCB=XCu1}uEC$蓖EC@$EM XCC@XCCXCB@C@CEEED[]U 8CECUE;(CU:tUBEEEf`BtUxCECE珮BEB;Et'UBU}J~EBE觧U珮BU`BEEJE秒U (CEEEf`BtExCECE珮BEB;Et'EBE}J~EBE觧E珮BE`BE}J鏡uEEEE秒U(CHC(C8CXC@;(Cv (CC(C)E(C菴E}t#}}tIU}tMC$q萇t EZ=hCu C$ICE:EC(C(CE(C(C(CHCEEE秒U=CuD$@C$莠CED$C$la秒UC;EuK=Ct+(CHCC(CBCXCBEC hC秒U紂C@XCC@(CCCC(CHC]US$(>E}u $C蔕UE B ]E@ $ CExu $C菽E@ED$E$PE[]U}u7E;Cu CExtE@$菎E$莊秒UE$IUE E@ EEE} tE @$m.~EEUB秒U}uME@E@E@@UE@BE@E@$E;CuH]U} vE E8uE EH8u E$(E}u $$CNUE B MUEBAE@EUE@ BE@E@E@ E@$E$%EEE秒UEEE8tE謗ED$E$秒UE EE$荳E}u $PCtEE;E }EUEEE諳EU E E@ED$E$E}u $yCE@E秒UED$D$C`C@$E?$)?UE$x?秒UE D$E$N?秒UE$+?秒U(E厚u7ETD$ PBD$D$C`C@$莖>E薊UD$E$UD$E$Et.EtEE韜 EEE刪E E@xE}u E"EE}teD$D$E$>ED$E$'ED$ED$E$M(UED$ED$E$佛D$D$E$.>ED$E$'ED$ED$E$蓙'UED$ED$E$估EED$ED$E$茵)UD$E$UEEE萇U E@DHE}~7E@tE8t"E@EEt E@EEEE訝EE秒U8ED$E $,E}u2E D$ ED$D$C`C@$Y<EE@tE}u E@DEED$D$E$荵<D$CE$<tD$CE$<uzE tnUED$E@HD$ ED$E D$E$ E}x5D$CE$(uE$E蓍JEE蓍?D$%CE$蒡;u3Et'UED$E D$E$E蓍EE;EUED$ED$ ED$E D$E$E}tMED$D$0C`C@$菫:}uED$D$\C`C@$:E蕈_EUED$ED$E$蕘(E?D$CE$N'uE$FE蓚EEE萇U(E厚u7ETD$ PBD$D$C`C@$蓿9EEE}u+ED$D$C`C@$莎9E^EuEuE刪EUD$E$UD$E$EE}teD$D$E$菷9ED$E$莎"ED$ED$E$#UED$ED$E$佛D$D$E$c9ED$E$P"ED$ED$E$#UED$ED$E$E@T$茱iUD$E$佛EE貮UXEEEE厚u7ETD$ PBD$D$(C`C@$蕣7E藏Ex@udUED$ED$ ED$E D$E$E}t}t(E逓eEE:Eu EIEt/EtEE憺 EEE刪fE樣TEx@t;Et/EtEE憺 EEE刪fE樣E@|EEfE}u E薑UD$E$UD$E$佛D$D$E$57ED$E$" ED$ED$E$蓆 ED$ED$E$菷!UED$ED$E$Ex@t%ED$U$佛E虍}u3E@T$(gUD$E$佛EEE}WE@\:EtE@]:EtE@T$萓fUED$ED$ ED$E D$E$E}UD$E$UD$E$佛E訂蚶D$E$+"Ei@BEEUED$ED$ ED$E D$E$E}t>UD$E$UD$E$佛E諦>D$E$!Ei@BEEE:EtUE)E;PTsJE:Eu EsExXfUD$E$弌PBD$D$C`C@$蒭3E|PBD$D$C`C@$荅3UE$佛$萋dUE D$E$E}ED$ PBD$D$C`C@$?3ED$ PBD$D$C`C@$3PBD$PBD$ PBD$D$PC`C@$葢2E蹄PBD$D$C`C@$莊2EtE}糶}レUD$E$UD$E$佛E艇 ED$U$佛EE追U(EEED$ED$ ED$ED$$葹jD$CE$~2uEED$CE$`2uEED$CE$B2uEED$CE$$2uEEED$ED$ ED$ED$$AjUED$ED$ ED$E D$E$佗UHED$E $!E}u2E D$ ED$D$C`C@$蒻0E蝙UD$E$佛EE@DEE;E}EEFE;E~>ED$D$CED$ED$ PBD$D$C`C@$_0D$CE$蒂0tD$CE$菘0uJEt>UED$E@HD$ ED$E D$E$EEE粡EtUED$E D$E$佛EE;EE@tEE麈D$ED$E$ED$ED$ ED$E D$E$#E}tPD$Q C`C@$7/D$_ C`C@$/UD$E$佛EEx@EEEM犧qHUE@HH9EtEH;Et蕾ED$ ED$E D$E$rE}ED$EPHE)@D$ EEEM犧qHUED$D$d C`C@$G.D$_ C`C@$/.UD$E$佛E}tED$U$E1EEE簓U(D$ CD$$KD$D$ D$%CE D$E$蓖E}y8ED$E D$ PBD$D$ C`C@$W-E#D$D$$萃EE秒UHED$E$E}u2ED$ ED$D$ C`C@$萬,EIED$E $萋E}u2E D$ ED$D$ C`C@$,E蝨E@tEE@tEE@DEE;E}SED$ D$CED$ED$D$CED$ PBD$D$ C`C@$,EEEE;E}qEMEU:tSEED$EED$D$CED$ PBD$D$ C`C@$+E EEEE簓U8ED$CE $jE}u E薹E}MED$EU@D)D$ ED$E D$E$E}y1ED$ PBD$D$ C`C@$葫*E7E汰E EEl}uEUEEE萇U(D$CE $E}u EE}U EE8ED$EU@D)D$ ED$E D$E$葯E}y1ED$ PBD$D$ C`C@$葢)EErEE貮U=狷Ct,ED$E D$E$E}t 狷CUE D$E$E=狷CtL}uFEED$ PBD$D$X C`C@$3)ED$E D$E$E秒UBED$E D$E$B 佗UBED$E D$E$BE}y-PBD$D$ C`C@$($t(秒UBE D$E$B佗UD$ED$E$T} t4E D$ PBD$D$ C`C@$ ($蓆'秒UD$D$ CE$菲D$ CE$pE @h$蔗X秒UD$D$ CE$D$ CE$'秒UD$D$ CE$LD$ CE$蔡秒U絽]UhED$D$+ CE$D$D$E$'D$ED$E$蕣E霰D$D$- C$u'摺CD$D$4 CE$D$ED$E$茴}2u 旭CD$D$6 CE$KD$ED$E$]D$D$8 CE$D$ED$E$(ED$ ED$D$< C`C@$蒹%ED$ ED$D$d C`C@$莉%ED$ ED$D$ C`C@$%D$D$ CE$jD$D$隶CE${=隶CYuD$ C`C@$>%D$D$ CE$D$ C`C@$ %ED$ED$E$ }uEE}unED$\C$葭EEE}uE微 CED$ ED$D$ C`C@$$U E9BdoEcD$! C`C@$R$}u`E @D$= Ct E# CE+ CED$ PBD$D$4 C`C@$$= Cu $蒂#ET= Cu E @dE昼EEEE拉D$ED$E$D$p CE$AE$葮秒U]U]U8=旭Cu E薔E.E EE @EE EE E貲D$ED$E$ D$ED$E$EUBE UE @UE}Yu EEEEE簓UE鹸u EKE D$Et$"BED$ED$E $佛D$E$萃秒UE$茗BE$BE秒U]U(EAE 争EE E蠻D$ED$E$莠D$~ CE$a秒U(EED$ CE$("uEtECEcE(JD$ CE$蔬!uED-ED$ED$ ED$E D$E$蓆EMEEED$E$D$ED$E$蓐D$ CE$EE秒U=整Ct#÷C@;EuU舒C整C{E刪D$E$D$D$ CE$lD$ED$E$~EtUEE∃CE牋C UE秒UED$E$D$D$ CE$蒿D$ED$E$蔕秒UD$ CE$L u,ED$ED$ ED$E D$E$茣EmD$ CE$ u,ED$ED$ ED$E D$E$%E*ED$ED$ ED$E D$E$2EE秒U8EcECEEEEE貲EEEE刪D$E$葫E;E=C\Ex@OEECAEECE争 EECE刪EEE;E}aECEED(EECEEEE;EsUEBtEE梛EEUEECAEECE争 EECE刪EECmEED$D$CE$ED$D$CE$UEE@T$茴N EED(EE@tEED$ED$E$D$ CE$荳EEEx@t}uyE靠D$E$蒿D$D$ CE$荳D$ CE$_EE@T$蒂ME刪D$E$EEEE跌*=隶CYt!EtE刪D$E$WD$ED$E$萠 _}tPE靠D$E$D$D$ CE$蓿D$ CE$E@T$ME秒UEEEED$E$荼EDE;EE@tEED$ED$E$nD$ CE$E@T$LE=隶CYtED$E$>D$ED$E$莎 kE秒UD$ CE$u,ED$ED$ ED$E D$E$荵EJD$ CE$Mu,ED$ED$ ED$E D$E$莇EEE秒U8ED$ CE$蔡u ERE0D$ CE$萢u EdE E紆虧UEEM9EEEED$E$蔘E;E=C}RE}ECRE謌D$ D$CE$D$@D$CE$E}?DUEEJtECUEBtEPECE覿E 蕋D$ED$E$蔬}RuCD$ED$E$UE RtEUEBtPE D$UEBtD$E$莵E=隶CYtED$E$~D$ED$E$蔘jEEEE簓UExD*PBD$D$ C`C@$EnD$D$ CE$蓚D$E@tD$E$蓼E@tEEPtE@tEPtEEE秒UD$ CET$E{@E@E>@E9@Ey{@Ez@EC@E@E@E @E@E@E ?@Eq@秒U$蕈E}u$D$C`C@$$qD$D$E$E秒UE}MU仭<EE}yEE豼)EEEUU}yEE篩操U)EM噫EMU仭8tE ME UE E ME UE齧"E.秒U E}MU仭<EE}yEE菫)EEEUU}yEE狒操U)EM噫EMU仭E嚠E}tE ME UE E ME UE阮"E 秒US EEE}MU仭<EE}yEE篩)EEEUU}yEE楞操U)EM豸噫E]MU仭慯$E}tE ME UE E ME UE襁"E []USE}MU仭<EE}yEE菫)EEEUU}yEE狒操U)EM雜噫EE UE"鏡M靦$E]MU仭慯E}tMUE MUE阮"E[]U} wzE操C倏E!CjE&CaE,CXE4COE<CFEEC=ENC4EZC+EfC"EtCE~CECECE秒U}w;E操C倏EC+EC"ECECECECE秒U$萬E}u$D$$C`C@$n$RD$D$E$蒟E秒US$Ed$ E}tvE$7E]E@D$RCtExtu;E@DD$ED$ PBD$D$HC`C@$萃EE$莠EEE$[]US蓆EEU糎D$T$ $?]E@D$莅CtExtu.E@DD$D$xC`C@$0$E@DD$D$E@t$茲E[]U(E $荳E貲EEEd$莨E}tFE$萼EED$ED$E $Hu EEEE$E覺}uEE蓚EE萇UST}u-ED$ED$ ED$D$CE $* }~(ED$ED$ ED$D$CE $蔟E@]D$ET[]US$pQ E}u$D$C`C@$葯 $萃 D$pD$E$Y E@@EE@tE@xE@|#EhElD$D$En$蔔 E]D$$蒭dE[]UEEdEEU糎pD$T$ $菴 UEdEd$菷E}t8E$萬$D$Ed$萋E$茴E訛E秒UEEE$cE}tZ}uTE$tEE@D$E $;tED$E $%uEE$E}tEE韜EE霽UEE$萠E}t1E$蒹EE@d;E uEEE$莚E詆EE秒U(E$wE}tbE$EElD$EhD$ED$E@D$ E D$D$CE$& E$'E秒UEE}t}t ECECECE秒UEE}t7}}t2}t}t $EC"ECECECECE秒U豸E @x$EE @t$BEE$E D$|ED$xE D$tED$pE D$lED$hE D$dED$`E D$\ED$XE D$TED$PE D$LED$HE @|刪t(E @|争t E樸CE棔CEE琺E爛CED$DED$@E @|t E悄CE悒CED$$菷0C=0Cu$D$C`C@$R$6E C=~ E$UED$E D$ C0C$蒭E C秒U贍EEE;EEE菁EEU-dEEM`BEEU-EEE}EM-LEEt KHK@KLEM`E汰 EEU`E耐 EEM`E@tEEEEEx@tE$bE@T$d&D$ D$XD$E$茫D$ED$E$}蝙E$E秒UD$*CE$Mu,ED$ED$ ED$E D$E$EJD$0CE$ u,ED$ED$ ED$E D$E$EEE秒U(EE;EvkED$ED$ ED$E D$E$E}t E顰9E@tUED$ED$E$WEEE霽U=@Ct@CEE@ @C9$菻E}u$D$C`C@$a$ED$D$E$蒭UEUE BUEB=0Ct0CUP E0C E0C C秒U貳= CuT蚌 CEE@ C= Cu C0CEEE@EE@E簀D$D$E$U堯@CB E遙@CD$ ED$XD$E$蓊EE;E}%U EJtE^EE誡TT秒U貳EEEE;EEEU-dEEU`BEEU-EEE簀E} E;Ew蕭EU-TEEt S(S STEU`E汰 EEU`E耐 EEU-EEEE>EEEEEZEU-rEEU-EEU-EED$XD$E$kED$ED$E$pE} ~ED$E$D$ED$E$} ED$E$葹t謌秒UD$*CE$>u,ED$ED$ ED$E D$E$EJD$0CE$蕀u,ED$ED$ ED$E D$E$EEE秒UD$7CET$#E!@E鬣@E@ET@E@E@E@EP@E認@Ec@Ezj@E雖@E @E罎@秒U(ED$ ED$E D$PC$CE}u EE;Et EEE秒UED$ ED$E D$PC$CE}u E;Eu-PBD$D$@C`C@$$w秒UD$D$PC$C E}t ED$`CD$PC$C E}t EWED$PC$CE}t E,}tED$D$tC`C@$莠EE秒UE \u(E D$D$C`C@$ED$D$E$蕀ED$E \$萵UED$ED$E$E @h$PUE D$E$佛EE秒U(EE搦拮晉烙zt EuEC拮晉烙s EREC晉烙w E1EC淺C漿}Ef fE鞅m鞁]m鯒E }x%E B;EE BEE誥}y BEED$PC$CEED$ ED$D$C`C@$菲秒UE} t CED$ED$E$CD$ED$E$秒U(EE$hED$E$w$nD$E$X$OD$E$9$0EESEEED$ED$E$}SuEE}AE0EEEEED$ED$E$蒭U属CEE觜}t=圧Cu EH} E蜷PBD$D$ C`C@$)`C@$蔔EE萇UEPt圧CEPtB欝CEPt乙C]UE D$E$H秒U]U]U讎EE},E ED$hE$<EE詢EE-EED$hD$E$蒿ED$hD$E$&D$h$lED$h$OE@D$h$1ED$h$E秒U EEEE 操EE}0EUC"t UEEE(E詈E秒UE EEEE}EEE"EtEMEUC EEEE"EtEMEUC EMEUpC EE麸(EdE秒U(EE D$Et$fD$E D$$CCKu'E 8/~E 89E 0E4E D$ PBD$D$HC`C@$蓙$萍D$PCE$CE}t4E D$ PBD$D$qC`C@$$wD$D$PC$C E}t-PBD$D$C`C@$;$PBD$D$C`C@$`C@$葆`CD$ED$$`CD$ED$$`CaD$ED$$`C@pCD$ED$$pCCD$ED$$C蒡CD$ED$$C菷CD$ED$$CED$ED$ED$ED$ PBD$D$C`C@$D$E$ PBD$D$C`C@$k`C@$;秒US}t]UM 噫 ]UM 噫"[]UPC$C秒U]U(EE;ED$ED$E$[E@tED$ED$ ED$E D$E$SE}t EyEx@t`EEEM雕qHUE@HH9Et EH;Et2ED$ ED$E D$E$E}t EE%EEE秒U=犁Ct÷CEE@ 犁C9$)E}u$D$C`C@$荼$D$D$E$1UEUE BUEB=亠Ct{CUP EPC EPC正C秒U贍=正CuD蛆\CEE@ 正C=正Cu \CPCEEE@EE@E簀D$D$E$nU堯犁CB E遙犁CED$HD$E$茫EE;E}4E菫D$H$葩U EBtEE訥DD秒U跏EEEE;EREE菁EEE} Et 8H 8@8D$HE$EE豼 鏡D$HE$dEE賺鏡D$HE$@EE@tED$HE$EEEEx@t`C@D$$ rEE霰D$E@D$E$\E}?u6D$D$*CE$D$ED$E$D$D$,CE$蔆D$ED$E$蓊}?tD$E@D$E$菎D$D$.CE${D$ED$E$ED$ ED$D$0C`C@$ZED$ ED$D$XC`C@$2}?uD$wC`C@$(ED$ ED$D$C`C@$蒻D$D$CE$莚D$D$@CE$萓=@CYuD$C`C@$D$D$CE$XD$ED$E$j}Yt-PBD$D$C`C@$7$D$ED$E$E崛CD$ED$E$蔟ECCD$D$HC`C@$萓D$D$CE$D$C`C@$D$ED$E$}u"ED$D$C`C@$K觴D$C`C@$1ETE @dE拉D$ED$E$蒻D$CE$E$C秒UE$a秒U]UE D$Et$菎E鹸u EKBED$ED$E $佛D$E$萸秒UD$D$CE$D$CE$荳BE$BE秒U]U(EAE 争EE E蠻D$ED$E$茱D$CE$J秒UHEED$CE$!tD$CE$ u]EBEE$PEEE$kD$ED$ED$ PBD$D$`%C`C@$}to}uiED$E$E}uNL$RD$ED$ED$ PBD$D$%C`C@$莚Es}E操%CED$ED$ ED$ED$E$(E蝠ED$ED$ ED$ED$E$菁E蘰ED$ED$ ED$ED$E$蔡EED$ED$ ED$ED$E$蔘EkED$ED$ED$ ED$ED$E$E8ED$ED$ PBD$D$%C`C@$pE7}~+}u%D$%CE$HuE$@]EEEE蕊UUE UBE 争UE 争]UE fEUEUBE争秒U(=霪CヘD$&C`C@$荅EE;EE ED$D$&&C`C@$qEEUU}yEE遭操U)u`C@D$$ . $ 萸EtEt`C@D$$ 蔗E AE}U&C倏D$.&C`C@$荳藺D$2&C`C@$薀D$:&C`C@$D$J&C`C@$cnD$U&C`C@$ITD$k&C`C@$/:D$&C`C@$E D$D$&C`C@$蓴`C@D$$ 葮秒U=霪C~(ED$ PBD$D$&C`C@$茴E$葢EEu-PBD$D$&C`C@$i$MED$E D$E$EE EE@ BED$ED$E$B t-PBD$D$ 'C`C@$蒹$萇E$蕈秒UBED$E D$E$Bt-PBD$D$\'C`C@$x$\=霪C~1`C@D$$ KED$E D$E$^秒UBE D$E$B佗UHBE塲B=霪C~!PBD$D$'C`C@$萇D$E$EE;E E =霪C~!PBD$D$'C`C@$uBD$ED$E$B t5PBD$D$'C`C@$+E圍BE薊BD$ED$E$Bu0}Au*=霪CD$(C`C@$菽蝙}ESEEE E =霪C~!PBD$D$,(C`C@$zBD$ED$E$B t5PBD$D$'C`C@$0E圍BE藪BD$ ED$E$Bu)}Au#=霪C~$D$(C`C@$萍 EE;E |;=霪C~!PBD$D$\(C`C@$E圍BEE圍BEE佗UHD$D$E$=yD$E$E薊D$E$萵=霪C~!PBD$D$(C`C@$蓙ESD$ED$E$蔡D$ ED$E$蓍=霪C~$EE@D$D$(C`C@$EE塢UE=霪C~!PBD$D$(C`C@$CD$ED$E$PD$ED$E$H}AtS=霪C~`C@D$$ 蓙ED$ PBD$D$)C`C@$菴E@=霪CuD$.&C`C@$UE D$E$佛EE秒U讎D$|D$h$蒻hE .EE -EE ,EE d$uE}E$uE貲D$e)CE$mu*E@HCC契D$ht$荼%D$k)CE$,uE@HPCEE$tE韈o=霪C~!PBD$D$t)C`C@$MD$|hD$E$WD$ED$E$O}AtL=霪C~`C@D$$ 蓖ED$ PBD$D$)C`C@$萋!=霪CuD$.&C`C@$茖秒UEx=霪C~!PBD$D$ *C`C@$mD$ED$E$zD$ED$E$r}AtS=霪C~`C@D$$ ED$ PBD$D$<*C`C@$蓍E(=霪CuD$.&C`C@$菴EE秒U絽]U=犇Ct E蜊E=霪C~!PBD$D$*C`C@$`D$ED$E$mD$ED$E$e}AtS=霪C~`C@D$$ ED$ PBD$D$*C`C@$蒂E2=霪CuD$.&C`C@$莢犇CEE秒U=犇Cu E蝮E個E=霪C~!PBD$D$ +C`C@$CD$ED$E$PD$ED$E$H}AtS=霪C~`C@D$$ 蓙ED$ PBD$D$`+C`C@$菴E2=霪CuD$.&C`C@$犇CEE秒UE}w&E盗%C;EuE灯%CEE誑EE秒UE @|争u7E D$ PBD$D$+C`C@$蔔 5D$E$茹B@E;pCE$''u3ED$ PBD$D$+C`C@$a=霪C~.ED$ PBD$D$(,C`C@$%'D$D$bE$3u1EpCBED$E$BE搦拮晉烙uzb=霪C~.E\$ PBD$D$`,C`C@$E\$E$t 蕋GFD$GD$E$[D$(D$E$P(AtO=霪C~`C@D$$ 蓁(D$ PBD$D$,C`C@$菫!=霪CuD$.&C`C@$E D$E$C鏡D$D$E$C争鏡D$D$E$w{C鏡D$D$E$XC$O^C$BC$UCCu0PBD$D$,C`C@$蕚 {C$ 0C^Cu=PBD$D$,C`C@$C$莅 藝清CCE$莚y D$%-CH$7'D$D$ HD$E D$E$ y 4'y!PBD$D$,-C`C@$菴 秒UC$菠C^C$莖斡CE$菻秒U]U=霪C~!PBD$D$-C`C@$7E D$Et$2pCE}=霪C~/E盗%CD$ PBD$D$-C`C@$莽BED$E盗%CD$E $佛D$E$bE$uBE盗%CpC=霪C~!PBD$D$-C`C@$JEUBE$BEPBD$D$.C`C@$EEE秒U=霪C~!PBD$D$2.C`C@$莊B@E;pCpC$E}u,pCD$ PBD$D$H.C`C@$Ou=霪C~*pCD$ PBD$D$x.C`C@$ED$D$bE$+u#BED$E$BE個tBU堕$@E秒UhEBE=霪C~6ED$ED$ED$ PBD$D$.C`C@$SE$y Ef}uE}~4ED$ PBD$D$.C`C@$蓼EE@$2EEu-PBD$D$ /C`C@$莊E蛉EWD$e)CE$$uE抂CCEE-D$k)CE$蓆uE抉清C{CEE堝hBEE;E6D$ED$E$qE}tLD$D$E$萪y-PBD$D$8/C`C@$荳E蛔EU);E}EU)E韜EE=霪C~/ED$ED$ PBD$D$t/C`C@$REE}t9U仭争劍EU仭争劍D$E$蓖E蹊EED$E$萸=霪C~!PBD$D$/C`C@$萋D$ED$E$葭D$ED$E$菲}Atp=霪C~`C@D$$ kED$ PBD$D$/C`C@$BUE0E硲BEJ=霪CuD$.&C`C@$蕀ED$D$E@$ED$UEBtD$E@$E@D$ED$E$萢D$ED$E$菘}Atm=霪C~`C@D$$ eED$ PBD$D$/C`C@$<UE*E硲BEG=霪CuD$.&C`C@$蔕UE蘊E$E硲BEEE追UxEB棋=霪C~6ED$ED$ED$ PBD$D$<0C`C@$sE$菴y胤[E@lEERD$e)CE$菘u E桧ED$k)CE$茵uE姫}t } B}7ED$ PBD$D$d0C`C@$菘~胤藜BEE;ED$ED$E$mE}tOD$D$E$Ly0PBD$D$0C`C@$2~胤)EU);E}EU)E韜EE=霪C~/ED$ED$ PBD$D$0C`C@$菁}}tOUB仭争劍EU仭争劍EU仭争劍D$E$T#EEEEED$E$/=霪C~!PBD$D$1C`C@$%}D$ED$E$2ED$口D$E$%EE->8At}=霪C~`C@D$$ 荵}EE->D$ PBD$D$@1C`C@$|UE蝙棋B胤e=霪CuD$.&C`C@$>|ED$口@D$UEBt$蓚|UEi棋BE胤胤秒Uh奬傴油眉蹄箭=霪C~/ED$ED$ PBD$D$1C`C@$u{E$菫y収蘿ERD$e)CE$萸{uFE薜E@H眉眉H#E傴油CC奬箭D$k)CE$s{uC`C@$[ED$ ED$D$,>C`C@$萢[ED$D$X>C`C@$荐[D$}>C`C@$[ED$D$>C`C@$k[ED$ ED$D$,>C`C@$9[E D$D$X>C`C@$[儀CD$慣CD$碍CD$卸CD$鰻CD$ 扱CD$D$>C`C@$荳ZEEHED$D$>C`C@$ZE$莟ZE} ~m}*ED$ PBD$D$>C`C@$CZ1E$gD$ PBD$D$D?C`C@$ZEQ牲C*}u3}w*-牲CPBD$D$?C`C@$菽Y}u}w-牲C=霪C~0} t*\CD$ PBD$D$?C`C@$rY} t} tF牲C}u6} w-PBD$D$@C`C@$*YEkE EED$D$E$蓼-} PBD$D$d@C`C@$菲XEED$D$E$荅-y E蜉D$E$蕈E$菁PBD$PBD$ PBD$D$@C`C@$LX$0XEE=霪C~!PBD$D$ AC`C@$XD$ED$E$XED$E$_E}U=霪C~`C@D$$ 莪XED$ PBD$D$>C`C@$WE乕=霪C~3`C@D$$ [XED$ED$E$荅2=霪Cu)ED$ ED$D$=C`C@$WEEE$*W}t:E$D$ PBD$D$@AC`C@$菽VEEE隻U(E=霪C~!PBD$D$AC`C@$zVD$ED$E$萍ED$E$葭E}U=霪C~`C@D$$ $WED$ PBD$D$AC`C@$蕣UE蛛=霪C~3`C@D$$ 莽VED$ED$E$2=霪Cu)ED$ ED$D$=C`C@$UEEE$U}t:E$D$ PBD$D$BC`C@$7UEUE D$E$佛EE貮UPBD$D$TBC`C@$蓊T秒UhD$+D$$UU E .EE -EE ,EE 0D$)$sE @|争$EE @|争$EE d$/8E}3E$B8E簀D$BCE$TE@H`CE@DD$$`C契D$$萇E@D5`C契D$$E @|争tuD$E D$$*TD$E D$$T%D$BCE$莅SuE@HCEE$ 7E蓍寵=霪C~!PBD$D$BC`C@$莽R\C@D$D$E$ED$E$#E}N=霪C~`C@D$$ tSED$ PBD$D$BC`C@$LR藕=霪C~3`C@D$$ &SED$ED$E$t2=霪Cu)ED$ ED$D$=C`C@$葫QEEE$蔘Q}t1E$蒹D$ PBD$D$4CC`C@$Q秒U8E EEPtEED$D$ E$M&EPtE E EEEPu EE肓EEE=霪C~IEPt ECCECCED$ PBD$D$CC`C@$荼PD$ED$E$ ED$E$E}U=霪C~`C@D$$ bQED$ PBD$D$CC`C@$:PE乕=霪C~3`C@D$$ QED$ED$E$[2=霪Cu)ED$ ED$D$=C`C@$萓OEEE$蒂O}t:E$萍D$ PBD$D$ DC`C@$uOEEE萇U絽]U(=Ct E蕾E=霪C~!PBD$D$HDC`C@$ OD$ED$E$_ED$E$fE}U=霪C~`C@D$$ 莊OED$ PBD$D$DC`C@$NE蝴=霪C~3`C@D$$ bOED$ED$E$莪2=霪Cu)ED$ ED$D$=C`C@$NEEE$1N}taE$!D$ PBD$D$DC`C@$菠M}鶇u!PBD$D$+EC`C@$茖MECEE貮U(=Cu EE=霪C~!PBD$D$HEC`C@$;MD$ED$E$ED$E$E}U=霪C~`C@D$$ 蒹MED$ PBD$D$EC`C@$莉LE蜀=霪C~3`C@D$$ MED$ED$E$葆2=霪Cu)ED$ ED$D$=C`C@$CLEEE$_L}t:E$OD$ PBD$D$EC`C@$蔕KE$CD$E$FEE貮UE}w&E凍B;EuE塘BEE誑EE秒U跏@EPt&<4FCE @|争t0@$<>FCE @|争t @@uA@EEu-PBD$D$IC`C@$菽?E藪ED$BCE$.@uE@闇PC`CEXD$BCE$蕣?uAE@映CCEEPtE$c?EBdEE;ED$ED$E$-UE);E}EU)EEE=霪C~/ED$ED$ PBD$D$IC`C@$>ED$E$,ED$E$ED$D$E $蓖>ED$UEBtD$E $蕘>E=霪C~!PBD$D$8JC`C@$蕣=E D$ED$E$LED$E$SE}=霪C~`C@D$$ >=霪C~(ED$ PBD$D$tJC`C@$o=UEB寸B+ED$ PBD$D$JC`C@$)=E$N=E筍BE=霪C~3`C@D$$ 蓍=ED$ED$E$72=霪Cu)ED$ ED$D$=C`C@$<E8tZE$荼D$ PBD$D$(KC`C@$a<E$<E${<E筍BE1E$_<UE E$G<E筍BEEE猊UhBE=霪C~6ED$ED$ED$ PBD$D$pKC`C@$莊;EPuE$Ey E>E@lEED$BCE$蕀;uE抂8D$BCE$葆;u!E抉EPt E蛔BdEE;ED$ED$E$)UE);E}EU)E韜EE=霪C~/ED$ED$ PBD$D$KC`C@$:ED$E$.ED$E$E=霪C~!PBD$D$KC`C@$=:D$ ED$E$ED$E$E}=霪C~`C@D$$ 蓊:=霪C~(ED$ PBD$D$LC`C@$莢9UEB寸B-ED$ PBD$D$dLC`C@$l9E硲BE =霪C~3`C@D$$ 7:ED$ED$E$2=霪Cu)ED$ ED$D$=C`C@$蒻8E8tOE$D$ PBD$D$LC`C@$莚8E$萪8E硲BEFED$E@D$UEBt$C9E$8UECE硲BEEE追UhEEEEE=霪C~/ED$ED$ PBD$D$MC`C@$蒟7EPuE$uy EEED$BCE$-8u-E薜E@HEEH#EE佛EPC@CE珸mD$BCE$蓍7uGEPt E"<E蕷E@HEEH#EE佛ECpCE珸D$0MCE$7u,E蕾EEPE虧D$^GCE$H7u,E蕾EEPED$6MCE$7u,E蕾EEPREFD$E5ED$ PBD$D$HQC`C@$M*E薺EEEED$ED$E$蒻*=霪C~0ED$ED$ PBD$D$|QC`C@$葹)ED$ED$E$1ED$E$8E}U=霪C~`C@D$$ *ED$ PBD$D$QC`C@$a)E乕=霪C~3`C@D$$ 4*ED$ED$E$2=霪Cu)ED$ ED$D$=C`C@$蒟(EEE$)}t:E$蓴D$ PBD$D$$RC`C@$(EEE班U8ED$D$E$rAED$D$E$PED$ E D$D$RC`C@$(ED$ED$ E D$D$RC`C@$蒟'ED$ E D$D$RC`C@$萓'ED$ED$ E D$D$RC`C@$'儀CD$ 慣CD$碍CD$卸CD$鰻CD$扱CD$ E D$D$SC`C@$0'E D$E$秒UhED$D$E$yE$菷契P$d$SC漿\$ E D$D$QSC`C@$莢&EP8ED$D$E$y}u!D$mSCE$q&SC]千}u!D$uSCE$J&SC]千}wHfEfP$d$SC滂\$D$}SCE$萇'fEfP$d$SC滂]宣yfEfP$d$SC滂\$D$SCE$'fEfP$d$SC滂]摂SCu摂\$ED$ E D$D$SC`C@$e%秒UD$SCE$.秒UD$SCET$<%E?WAE9zAE[AE-[AE`SAELAE[AE_AExjAEpAE>bAE fAE ]}AE0-uAE秒UD$SCET$[$E?WAE9zAE[AE-[AE`SAEMAEe\AE_AExjAEpAE>bAE fAE ]}AEEP秒UD$TCET$}#E?WAE9zAE[AE-[AE`SAELAEF]AE_AExjAEpAE>bAE fAE ]}AE0-uAE秒UD$TCET$"E?WAE9zAE[AE-[AE`SAEMAE'^AE_AExjAEpAE>bAE fAE ]}AEEP秒USE@$蓼!E}u E+EE@EEE@UE E@EE@H;E~sUEDU ]U仭E U ]U仭E DEEP仭E @EP仭E EP仭EHEP仭EAEEE[]UExE$E}u EExu'UEBUEBEE@)EUE@BEPEUEBUEBE@EUEBEE@E@EEE秒UE @E @U E@UE B]U}u,$ E}u E藾Ef@EEEf@E@ E@E} u Ef@MU 仭fAME@P見仭AEx}u E$菠E$E@E@E@EEE秒UEEE@ E}tE@$E EE謔E$秒UEEE@E}tEEE$*EE諧Efxt E$ 秒UEEE$cE}u EnEU PEx u'UEB UEBEE@)UE@BEEPEUEBEEE秒U(EEEE@ E}tdE@D$E $EE}uE}tUE}y!E D$ED$E$GEE跌"EEE D$E$萍EEE貮U(EEE@ E}tYE@D$E $EE}u EK}y"E D$ED$E$莊E#EE襦E D$E$;EE霽UE@ ]UE@]UE]UE@]UE@]UE]UE $蒹t$D$E $D$E$荼詬E秒U EEE@E}u E E@EE秒UEE} tE$i;E r EEE@ EE}tE;E tEEE諠}t E@E韜EE霽UEE} tE$蓿;E r E-E@ EEE;E tEEE謇EEE霽U} uED$E$E藾E$蓆E}u E蕁UEBE@ ;E u&UE E@U EBUEB [} u+EUE@BEPEUEB*UE UE @BEEBEPEEEE秒U(EE}t E@;Er EwE8uE D$E$wE韜XE@ EE}tE;EtEEE諠}u EE D$ED$E$tEE霽U(EEE EE@ E}tE;Et EE謌}u EED$ED$E$EE霽U E@ ;E u/UE B Ex tE@ @UE@IE@;E u#UE @BExt)E@E PE E E @BE @EE D$E$\EE秒UEEEE@ E}tE@;E tEEE諤}u EED$E$蔘EE霽UEEE EE@ E}tE;Et EE謌}u EED$E$EE霽UEE} t E;E r EQE@ EE}tE;E tEEE諠}tED$E$%E韜EE霽UEEE@E}u EED$E$葆EE秒UEEE@ E}t.E@D$E $Eu E@EEE詭EE秒UHE EE D$D$ TCE$蓙D$HTCE$萼D$TCE$菎E@D$(E@D$$E@D$ E@D$E@ D$E@D$E@D$E@D$ ED$D$TCE$TD$ UCE$AEE@E}tSED$E@D$ED$D$ED$ ED$D$UCE$萵EE襷}D$UCE$荵EE@ E}tcED$ E@D$E@D$ED$D$ED$ ED$D$lVCE$RE$SEE;Et#ED$ ED$D$VCE$秒UPBD$D$VC`C@$葫秒U(D$]CE$^E}uD$D$ED$ PBD$D$]C`C@$zE1PCETCECE$gEE秒U{CTD$ ED$D$^C`C@$ {CD$ ED$D$)^C`C@$萬亰CED${C$佗U(EEE$E}t~}uxE$荐EE$mE}tA}u;E$~EED$E $HuEE$>E觜E$.E|}tEE蓚EE萇U(E$蒹E}tvE$蕣EE$菫$葢ELD$EHD$ED$T$ E D$D$A^CE$E$E秒U8U仭E EM9EEE=xCu蕷D$E$FE鞁E`^C漿涸]}t4愀CE葩莊CED$ E蒂%莊C\$E$xC}d~EdE;愀C~)EXCED$ E蒂%莊C\$E$xC}du 愀C秒U(*CD$2D$ $C蓁EE;E}U仭争劍C#E諄}t*D$h^C`C@$HCE8C=HCu7E \$ED$D$ C8CD$D$j^C`C@$莚}du"HCD$^C`C@$秒UE劍E}t5ED$D$^C`C@$PhCXC4E;hC~)=XCu D$^C`C@$E(詭}du>=XCu5E \$D$^C`C@$葷hCXC E劍寸hC秒US4$蓆蕀処u-PBD$D$^C`C@$n$R糴E巡wF8t;8:t0糴U糴覡8:蕀$,蕀8u-PBD$D$^C`C@$莅 $ D$^C蕀$ 蕀@蕀$9 @$莪 C蕀xuD$蕀@$D 蕀@ 蕀檠?E糴-蕀$菫 @$8 蕀8u-PBD$D$^C`C@$荳 $ D$蕀$茲 8ru蕀@薨8wu蕀@8vu蕀@sD$ PBD$D$^C`C@$ D$^C`C@$蓿 蕀$ 蕀$ 檠蜴8:tNPBD$D$D_C`C@$ 蕀$莟 蕀$茖 檠顋D$:顋$J 諸u>蕀@ 顋$葯 瓊蕀瓊@$E C|顋)瓊蕀瓊@$ C陋緒t@8t陋?陋a戍舜戍_C蕀@ 蛬蕀@ 虱蕀@ 藥蕀@ 薊蕀@ 蕀@ 蕀@ v蕀@ g蕀@ XD$ PBD$D$h_C`C@$ 蕀$莨 蕀$莪 檠蕀xuKPBD$D$^C`C@$D 蕀$d 蕀$V 檠C瓊D$顋D$蕀@$菘 蕀@瓊蕀檠檠4[]US$ E}u-PBD$D$^C`C@$$oD$ED$E$5 ]E$5]E@$"CE[]US$sE}u-PBD$D$^C`C@$蔔$葩]E $菴]E$莚CUEBUEB E[]U8ED$E $E}u4E D$ ED$D$_C`C@$fExEx=0C(ED$ PBD$D$`C`C@$D$,`CD$$D$D$ ED$E D$E$5朋E}y;ED$ED$ PBD$D$4`C`C@$E薇D$D$$EE=0CTED$``C@$葯t E@E粳Eb`CED$ PBD$D$k`C`C@$ED$ED$E D$ E@ D$E@D$$hE}E@D$ PBD$D$`C`C@$茖E薺Ex>=0CTED$``C@$蕀t E@E琺E爻`CED$ PBD$D$`C`C@$-D$ED$E D$ E@ D$E@D$$gE}y7E@D$ PBD$D$`C`C@$菫E蚌EE=0C/ED$ED$ PBD$D$`C`C@$w}ugD$`CD$$蒟D$ED$ ED$E D$E$蓼咨E貲D$D$$6ED$ED$E D$ D$D$``C$蕈eE}y;ED$ED$ PBD$D$`C`C@$E蕷EE=0CED$ED$ PBD$D$aC`C@$QcEx"UD$E$E $蔘E=0CdE@D$ED$ PBD$D$8aC`C@$葩E@D$ED$ PBD$D$`aC`C@$茫D$ED$E D$ E@ D$E@D$$dE}y7E@D$ PBD$D$aC`C@$?EQEE=0CZED$E@D$ PBD$D$aC`C@$蓿ED$ PBD$D$aC`C@$菠D$,`CD$$@D$ED$ ED$ED$E$葢逓E}yTED$ED$ PBD$D$4`C`C@$LUD$E$佛EED$D$$=0C!PBD$D$aC`C@$葹ED$ ED$ED$E $圉E}yFPBD$D$bC`C@$UD$E$佛E=0C/ED$ED$ PBD$D$.bC`C@$8ED$U$倬4E@D$ PBD$D$LbC`C@$蓿EEE萇U(粽争操莚J3210($E D$/$uPB=PBuE D$\$RPB=PBtPB E PB`CPC_D$ CPBD$D$tjC`C@$葮E$蒭ERP}t =狷CTD$ED${C$飾E=0Cc}x]TtT=狷Ct jC jCT$TD$ PBD$D$kC`C@$PTD$ED${C$i償E}PT=0C+TD$ PBD$D$8kC`C@$茵TD$ED${C$蓖償E}y!PBD$D$hkC`C@$Y}t>=0C!PBD$D$kC`C@$)ED${C$P飾}tED${C$UE陝C$葹E}tYE$蔕EED$ED$ ED$ED${C$蓼E}t EE$E襦88y=0CD$h^C`C@$10D$1D$ 2D$3D$$葩$CD$ED${CD$D$ D$D$$tv$CD$ED${CD$D$ D$D$$菷t-PBD$D$kC`C@$JE蝴:0 $D$0D$ PBD$D$$lC`C@$蒻4u$XlC菷, ,,$y$CD$D$ ED$ {CD$D$lC0$莚u#PBD$D$lC`C@$J)PBD$D$lC`C@$':3 $D$3D$ PBD$D$lC`C@$菲4u$XlC荅, ,,$qy$CD$D$ ED$ {CD$D$mC3$u#PBD$D$lC`C@$+)PBD$D$lC`C@$:2 $D$2D$ PBD$D$mC`C@$茗4u$XlC, ,,$Ry$CD$D$ ED$ {CD$D$DmC2$qu#PBD$D$lC`C@$ )PBD$D$lC`C@$蓍:1 $D$1D$ PBD$D$LmC`C@$4u$XlCk, ,,$3y$CD$D$ ED$ {CD$D$mC1$Ru#PBD$D$lC`C@$蓁)PBD$D$lC`C@$菠=0C\PBD$D$mC`C@$uD$mC`C@$wD$mC`C@$]$t(tE亰C{C$亰C{C$亰CD${C$亰C{C$=0C!PBD$D$mC`C@$荳E秒UE %EE } ~}  E蘋E E 操=霪Ct)E @D$ PBD$D$sC`C@$5E蜀=霪C~(ED$ PBD$D$tC`C@$蔕ED$E$荀荀打D$D$ED$D$ T$D$$}ED$ PBD$D$@tC`C@$rE$蒟E$I$:EE貮UHEEE 争tEE E} ~}  E6} t} t } tEED$E$萋打D$D$ED$D$ T$D$$]ED$ PBD$D$ptC`C@$RE$菁E$)$=霪C~(ED$ PBD$D$tC`C@$蔔E E}t!}}t !}tE E E }鏡E}t }鏡EEE粡E E}t'}}t ;}t$3$CE霰E贊tC]{CE霰E贐tCL÷CE霰E贔tC;=霪Ct)E @D$ PBD$D$tC`C@$ EJ=霪C~(ED$ PBD$D$uC`C@$菻}t }鏡EEEE簓U} ~}  EuD$E D$E$葩E言~E$/蕈D$E D$E$荀E言~E$蔕苙EE秒U]U]U]U]U]UXEE$錮D$D$D$D$ D$D$E $!E}l打D$D$ED$D$ T$D$$CED$E D$ PBD$D$8uC`C@$1E$ErD$D$E$ uBE$jE D$ PBD$D$duC`C@$菴ED$D$E$8EE%EE$EE$E疇EEEED$E$tu?E$菎E D$ PBD$D$uC`C@$Ei=霪C~/ED$E D$ PBD$D$uC`C@$蕚UE雜C犖C亳CEE棉UEE}t4UD$ED$E$4E$蒄=霪C~(ED$ PBD$D$uC`C@$#E秒UD$#vCET$E@E亙@E@EA@E!@EaAEAEAE過AE戟AEw@E@Ez@E釈AE AE4 AE8AE< AEc@Ezj@秒UEEEEEf8t1Ef8v E?E諤EEEE詁EE秒UEEEEE$^CD$ D$D$E$\CE簀EE}tE$EED$ED$ ED$D$E$XCu蜍D$ED$D$ D$ED$E$`C}t E$菫E$蕚EE看D$ED$ED$ ED$ED$E$`CD$ED$D$D$ D$D$E$yE}uE ED$E$;CE;E E;EE}}D$D$E$ヾC u E$xD$E$蓊tVD$D$E$仝C u E'$ D$E$t E蘢E$TC}t E$蕣}tUEEEどUE$秒U(EEEE E}t}t2QD$ED$ ED$ED$E$|E!ED$ED$E$ーC E}u EEE貮U(EEEE E}t}tJsUED$ED$ ED$ED$E$蒡E}t5UE+UEED$ED$E$゜C E}u EEE貮U}ED$ ED$D$0vC`C@$EE;E},E ED$D$?vC`C@$蒻E詭D$EvC`C@$菲EE;E}TE E8v*E E8~w`C@D$E E$萇`C@D$$.莚E襪D$HvC`C@$PSED$ ED$D$KvC`C@$%}#E}lE;E}'E ED$D$?vC`C@$葹D$ZvC`C@$菁}u`C@D$$ 蓍EヌD$^vC`C@$E}\E;E}ME E8v*E E8~w`C@D$E E$`C@D$$.hED$HvC`C@$ E E(蚌秒U}w;E操vC倏EbvCFEkvC=EzvC4EvC+EvC"ED$D$vC$ CdE CE秒U(EwCE wCD$ED$D$ ED$D$E$茗E}tE$KWE}t=ED$D$ PBD$D$C`C@$荀E珱蛔D$ED$E$Ly $`}u EEE D$ED$E$ y $}u1E D$ PBD$D$C`C@$E瓔8ED$D$ PBD$D$C`C@$菘E瓔E猊U8ED$D$E$ED$D$E$蕀ED$D$E$葹ED$D$E$菁ED$ E D$D$C`C@$%ED$ED$ E D$D$(C`C@$蔕}wQECCEE}t}t EKCERCED$ E D$D$YC`C@$茵E D$E$秒UHED$D$E$蓍ED$D$E$莽ED$D$E$莎ED$D$E$ED$D$E$ERP,$d$C漿\$ E D$D$qC`C@$萇ERP,$d$C漿\$ E D$D$C`C@$E D$D$C`C@$n}uD$C`C@$PEC]}wBE操(C倏E+E "E@EEEE葩E玳驂]E@RP,$d$E玳驂]珈E珈C拮晉烙wE珈C漿]倏ExC2E珈C拮晉烙wE珈C漿]倏E|CECED$E珈\$D$C`C@$KE貂RP,$d$C淺C漿 C涸\$ E D$D$C`C@$秒UD$HCE$W秒UD$ICET$蕚EBEBE BE$ BEBE蝙AE|AE BE, BEc@Ezj@E BE BE  BE$BE(8BE,+BE0)BE秒UEffEE@f操UfEE秒UBED$E D$E$B t-PBD$D$C`C@$D$(秒U EEE},w'EpB:EuErBEE誡EE秒U(E $fEf}u7E D$ PBD$D$C`C@$E蜩f}u$E @疏E ffEf}uE ffEE$EEu-PBD$D$C`C@$$蔟~E/UBEUE争ED$E D$E$ED$ED$E$EE$菻~EEE霽UH=精Cu$ED$E D$E$葫傲e=精Cu$ED$E D$E$Z傲8戛PB撼E争暼E%棍檣ED$E D$戛$莪~EE-奩E9奩s7EE缺EE缺E奩- 2奩觧奩E9奩s 奩謌BED$戛D$E$B t-PBD$D$C`C@$}$蔬|傲傲秒UBE D$E$B佗UBED$E D$E$BE}y*PBD$D$TC`C@${|EEEE秒U(ED$E$萪E}-PBD$D$C`C@$%|EEH;Ev6ED$EHD$ PBD$D$C`C@$葯{EEEE}t#}}_}陬t,TPBD$D$C`C@${EPBD$D$0C`C@$Z{EUED$ PBD$D$dC`C@$&{E!EHD$E@D$E $菻{EEE秒UXEEEEEE=精Cu!ED$E D$E$葫E也=精Cu!ED$E D$E$E也}D$E$gE珈]}Q}GBD$ED$E$By蜿UE0}E操C}EEE:PBuEPBfEZE鐐EEDUEE/}u EEE;EsE UE;ED$ED$ PBD$D$C`C@$&yE癒!}u5E 8u-PBD$D$C`C@$蓚xE油蜀EE;EuvEm}u E^EPBD$D$(C`C@$xE愈PBD$D$PC`C@$exE愉cD$E$yeE珈]俚E俑e憖E葫冨蛬w蚣PBD$D$tC`C@$ xE EEE棉UXE=精Cu EMEED$ED$E$D$ ED$E$E}}J}@}6EE}v1ED$D$C$yu精C蕾}v.ED$D$C$hyu 精C~} v.ED$ D$C$4yu 精CJEE-=霪Ct+ED$ PBD$D$C`C@$v精C=霪C~1\CTBD$ PBD$D$0C`C@$@vE薇}!XED$ PBD$D$`C`C@$vE綬s}u4}!PBD$D$C`C@$菁uE9}!磊ED$ PBD$D$C`C@$uEE蕊U(EEE;EsE鞫EED$E D$E$荐ED$E D$E$/E}ィ}-PBD$D$(C`C@$蓿tE蚓E @8u EE韈E @8u#PBD$D$PC`C@$荐t,E @D$ PBD$D$xC`C@$ztEYE$rE}t>}!E D$ PBD$D$C`C@$(tEEE霽U(EEEEE EE @EE EE ED$ D$ED$E$0E}y*PBD$D$C`C@$sEi}1ED$ PBD$D$C`C@$OsE2UEUBEUEUEEE霽UHE \u4E D$ PBD$D$DC`C@$萼rE藺UD$E$估EE Hh袴Mb藾帆)E抛EED$E \$\D$ D$ED$E$莽EE @h$xUE D$E$UD$E$EEE塢U8ED$U$}uE"E EE E晞E2E EE E敘D$ D$ED$E$EE @h$茯UE D$E$UD$E$E秒UD$E D$E$秒UD$E D$E$蔬秒U8E `u4E D$ PBD$D$C`C@$莠pEEE EE EE EE EE EE EE EED$E `$葮YD$ D$ ED$E$EE簓U(E E EE EE EE EE EE EE E鑁D$ D$ED$E$秒U(E0E EE (EE $EE EE EE EE EE E霰D$ D$ ED$E$秒UUE D$E$佗UxE E}u}u Y}uQE D$}u E医CE溢CED$ PBD$D$C`C@$unEE-D$ E D$E@$oD$ !D$!ED$E$茖E}y-PBD$D$XC`C@$蔔mEC虻CE d$莨QE}tvE$萼QE芝D$CE$.nuExH~8E@HC+D$CE$nuExH~ E@H0CE$ZQE宣`C$lmC$_mC$rm`C`Cu-PBD$D$C`C@$蓴lE^C$*mCCu7PBD$D$C`C@$茫l`C$萠lE/CpCUE D$E$EE孤UD$E D$E$_秒UD$E D$E$=秒U8EEED$ D$ED$E$iE}y!PBD$D$C`C@$菴k秒U8`C$蒭k`CC$菽kC} uE!E1EE萋EED$ D$ED$E$菷E}y-PBD$D$C`C@$k$k秒UD$E$:秒UD$E$秒U]UEE鹸t EE精CD$>CE $WuBpB精CD$D$GCE $ku$D$LC`C@$DjE薐E D$Et$3jBED$ED$E $佛D$E$蔔E$蓆D$E$葮E搦拮晉烙uz+UE\$E$0t EEE秒UBE$BE秒U8EE 争EE 争EE 争EE E貲D$ D$ED$E$E}y*PBD$D$xC`C@$葆hEEE猊UxE奩傲癒美逓線=霪C~/ED$ED$ PBD$D$C`C@$EhD$CE$菎h}u 時$時4時戛EE@H癒縮u 癒癒H#E奩傲pC`C線逓E6美'D$CE$huu}u 刷&刷6刷戛EE@H癒縮u 癒癒H#E奩傲CC線D$CE$gtD$CE$kgu/}u 込(込8込戛E>D$CE$%gu/}u 向(向8向戛E蝌D$CE$萬fu/}u 捲(捲8捲戛E蕾D$CE$fu%}u 屈*屈:屈戛vD$CE$]fu%}u 京,京<京戛:D$CE$!fu#}u 棄+棄;棄戛縮t:傲;奩u*M癒H#U線周B}u@癒争撼癒暼逓奩嚠 美D$E$ E撼=霪C~!PBD$D$C`C@$莅dD$ ED$戛D$E$ E}y-PBD$D$HC`C@$`d周o縮tP傲奩癒D$戛D$線$蓙dM癒H#U線 U暼周周秒UD$ED$ED$ ED$E D$E$萬秒UD$ED$ED$ ED$E D$E$荐秒UEEEE逓線周向棄蔭=霪C~/ED$ED$ PBD$D$C`C@$葆bD$CE$[c}u #3美E@H周充u 周周H#E逓線pC`C蔭棄EP向AD$CE$莅bun}u %5美E@H周充u 周周H#E逓線CC蔭藜D$CE$)btD$CE$buG}u '7美EE EE E蓍GD$CE$茣auG}u '7美EE EE E蓍D$CE$VauG}u '7美EE EE E蓍D$CE$蔕`u=}u )9美E EE E蓚7ED$ PBD$D$C`C@$_蚋周E充周D$D$蔭$W`周H#M蔭E 周争服周朋満充v!周$茫満満E@d癒周D$蔭D$美$蔡_棄逓嚠 向D$E$荅;E服E朋}uE満E癒E満E=霪C~!PBD$D$C`C@$^D$ ED$美D$E$蓴E}y-PBD$D$4C`C@$I^充t 線秒U(EED$ED$ED$ ED$E D$E$k秒U(EED$ED$ED$ ED$E D$E$-秒Ux}uEEEED$CE$蓐]u EEEt$ED$CE$莎]uEE@dE}uE@|E@xEEE@`EP`EEu7E D$ PBD$D$|C`C@$\蝨棄D$E$蔔E棄EEu7E D$ PBD$D$C`C@$\棄D$E$E棄E鈴sEP`E秀u7E D$ PBD$D$C`C@$荐[ 棄D$$ E棄E容E習u7E D$ PBD$D$\C`C@$B[藝棄D$$荳D棄EE@\EE@]E冉EEE;EaD$ED$E$[IUE);EsEU)E韜EE}u%E@tD$ED$E$6t蜊D$ ED$向$/[E霑込E刷}t EE;EuME嚠 ED$E$菷EEED$UEBtD$向 $菎ZD$ E D$向D$E$K蔭衆y-PBD$D$C`C@$YUEE秒UhEEED$CE$萸YuFEpC}u #3EEtJEAD$CE$sYu*C}u %5E汎E棒}~E$蒿 EEE@dE}uEEEE;ED$ED$E$葮FUE);EsEU)E韜EE}u%E@tD$ED$E$莇t!D$ED$向$莚XE遭込U 刷}t EE;EuME嚠 ED$E$DEEED$UEBtD$向$>XE;Et(UE)D$D$向E$葆WD$ ED$向D$E$棄輯y-PBD$D$C`C@$蒟V蔭UE_E蔭蔭秒UD$ED$ED$ ED$E D$E$秒UD$ED$ED$ ED$E D$E$葯秒UEE;E }EEE8t EE諍EE秒UhE@lEE@xEEED$CE$ZVu/EEEEt$ED$CE$VuE習u7E D$ PBD$D$C`C@$KUq棄D$$菽>棄E稠EE;E3D$ED$E$CUE);EsEU)E韜EE霰D$ED$向$~UE霑込E刷E%;Et%E%EME嚠 ED$E$D$ D$向D$E$菎蔭衆y-PBD$D$LC`C@$T;ED$向D$UEBt$莟TUE藾E秒UhE@lEEEED$CE$Tu<}u $4E版EEt@E7D$CE$萋Su }u &6E版EE;E3D$ED$E$wAUE);EsEU)E韜EE霰D$ED$向$vSE霑込E刷E%;Et%E%EME嚠 ED$E$ D$ D$向D$E$荳棄輯y-PBD$D$|C`C@$ R蔭;ED$向D$UEBt$荅RUE藾E蔭蔭秒UD$ED$ED$ ED$E D$E$菽秒UD$ED$ED$ ED$E D$E$秒U8E  C涸(C淺}Ef fEm}鞅mEUEED$D$E$Dt-PBD$D$C`C@$萼PEE:EvhE \$EP$d$(C漿\$ PBD$D$C`C@$PED$D$E$荵t EED$D$E$EE貮U8E C涸C淺}Ef fEm}鞅mEUEED$D$E$,t*PBD$D$0C`C@$莉OEiE:EvBEP$d$C漿\$ PBD$D$dC`C@$rOEED$D$E$茲EE貮UHEEE 搦拮晉烙w}E PC拮晉烙wE XC拮晉烙wE XC漿] E貳C2E `C拮晉烙wE `C漿] E賁CE賽ChC\$ED$E \$ PBD$D$C`C@$xNE@8$E }Ef fE葫m萬}獸mEUEE}wWE$B汰 p兀9Er.EEE$BEp兀髷EE襭}u9D$ED$ PBD$D$C`C@$莟MEYED$D$E$蓊E}u&ED$D$E$菴E}uEE樣EE槁UE}wE揶4PBE 拮晉烙sE誣=霪C~3ED$EC4PB\$D$pC`C@$葫LE鏡D$D$E$秒UEE}tn}w}tP}w}t;x}tEp}@tX}@w} tC\}tJ}tHEsEjEaEXEOE FE =E4ED$ PBD$D$C`C@$蓆K$菻KE秒UHhC]鞆E鞆pC淺]葩E u鞆xC涸}Ef fE籏m籖]瞹mEEE E靼蛬wQEEP$d$M鞆C漿\$E C漿\$ PBD$D$C`C@$5K`E E葫冨蛬wOEEP$d$M鞆C漿\$E C漿\$ PBD$D$ C`C@$葭JED$D$E$秒UXE EEEE蒜D$ D$ED$E$蕘y2ED$ PBD$D$C`C@$PJEUEEE追UXE UEUEEEEE頁D$ D$ED$E$ly2ED$ PBD$D$C`C@$菴IEEE追U(E UEUED$ED$E$菷E}y)ED$ PBD$D$C`C@$LIE:Eu3=霪C~*PBD$D$ C`C@$IEED$ED$E$菽EE秒U(\CE}t}r}t}t$E[C"EXCE_CEfCEcC=精CED$ E D$D$hC`C@$gHED$D$E$ED$D$E$}ED$D$E$cED$ E D$D$C`C@$蓿GED$ED$ E D$D$C`C@$菽G=精CED$D$E$蒿EE}贔to}贔}Ut<}讓t*^}跪t:}跪 }趙t1A}蹂t6EC4EC+EC"ECECECE[CED$ E D$D$C`C@$蒟FE D$E$秒U8=精Cu]ED$D$E$莎E$萬契P$d$C漿\$ E D$D$C`C@$iFQED$D$E$EP$d$C漿\$ E D$D$C`C@$FED$D$E$F=精CED$D$E$ED$D$E$ED$D$E$蓚EP$d$C漿\$ E D$D$C`C@$jEE D$D$/C`C@$KE}uD$DC`C@$-EEC]EE}w@UC倏E+E "E@EEEE鞆E葆驂]E@P$d$E葆驂]葩E葩C拮晉烙wE葩C漿]菁E簇C2E葩C拮晉烙wE葩C漿]菁E簗CE簧CED$E葩\$D$IC`C@$(D=精Ct =精Ct6EC4PB\$ E D$D$RC`C@$葯CGEP$d$C淺C漿C涸\$ E D$D$oC`C@$C秒UD$CE$荅秒UHED$ D$ED$E$萠E}y*PBD$D$C`C@$$CEEE佗U=霪C~!PBD$D$C`C@$萬BEKD$D$GCE $mCu$D$LC`C@$茵BE蜚E D$Et$BBED$ED$E $佛D$E$VD$E$紆t>PBD$D$4C`C@$BUE$佛$蒹A精CE搦拮晉烙uz+UE\$E$0t EEE秒U=霪C~!PBD$D$lC`C@$lAEKD$D$GCE $蓼Au$D$LC`C@$.AE蜚E D$Et$ABED$ED$E $佛D$E$蓊D$E$磬t>PBD$D$4C`C@$@UE$佛$r@精CE搦拮晉烙uz+UE\$E$0t EEE秒U=霪C~!PBD$D$C`C@$蔔?EKD$D$GCE $@u$D$LC`C@$荵?E蜚E D$Et$茯?BED$ED$E $佛D$E$pD$E$"癰t>PBD$D$C`C@$,?UE$佛$>精CE搦拮晉烙uz+UE\$E$0t EEE秒UD$CET$茯>E3BEYBE7BE6BE1BE/BE.BE7BE@9BEc@Ezj@E&EBE LBE +_BE$sQBE(RBE,zSBE0VBEDF_BE秒UD$CET$=E_6BEYBE7BE7BE2BE1BE7BE@9BE>BEDBELBE QBE +_BE$sQBE(RBE,zSBE0VBE秒UD$CET$<E6BEYBE7BE7BE03BE1BE7BE@9BE?BEDBE:LBE BEDBELBE QBE +_BE$sQBE(RBE,zSBE0vUBE秒UD$!CET$8E6BEYBE7BE7BE03BE1BEbBE_AE?BEDBE:LBE 3t6PC$B@D$ED$$从C{2OCED$E $G"E}u2E D$ ED$D$HC`C@$2E蛄}D$ED$E$蓆2PCE8uE;Et9ED$ PBD$D$tC`C@$1EXD$ED$E $*1$BE8uE ;Et9E D$ PBD$D$C`C@$!1E蜆E@DEE;PCwO}u PC=ED$PCD$ PBD$D$C`C@$莨0E$BPC;EvPCU)丕$B$B$萪0E}u-PBD$D$C`C@$Z0EE$B;EUEED$EPCD$ ED$E D$E$E}taE D$EPCD$ ED$D$C`C@$菁/}uED$D$DC`C@$茴/EhEH$BD$ ED$PCD$`C $D$vC`C $N/E$s/$BPCEE猊UST}$D$xC`C@$/E EEED$E $蓊E}u2E D$ ED$D$HC`C@$莚.E薐E@DE霰D$ED$E$/EE8uE;Et9ED$ PBD$D$C`C@$4.E8E;Es;ED$ED$ PBD$D$C`C@$蔡-E蝠EEEE;Ev4ED$ PBD$D$C`C@$荅-E薛E$萵-E}u-PBD$D$]C`C@$h-ElEE;EEEXD$ED$EE$).E8uEE;EtLEED$ PBD$D$xC`C@$菽,E$蓙,E藜EMED$U$佛EEE;EUEED$EED$ ED$E D$E$ E}tkED$EED$EED$ PBD$D$C`C@$蔟+}uED$D$C`C@$菻+EUED$EED$ ED$E D$E$EEE:EtGED$EED$EED$ PBD$D$C`C@$J+E}tED$U$EE$?+D$vC`C $蔟*EET[]US4E厚u.ETD$D$@C`C@$莢*E薀}t$D$|C`C@$*E{EHE菁EE;EEEXD$ED$EE$B+E8uEE;EtAEED$ PBD$D$C`C@$蒂)E蚣EXUD$E$UED$ED$E$佛D$C`C@$v)EE;E}/EED$D$C`C@$?)E詆D$vC`C@$ )D$vC`C $)EE4[]UPBD$D$C`C@$蔆(UE D$E$亳秒UD$vC`C $(D$ D$CE D$`C $蓖D$vC`C $U(秒UE D$E$[E}tED$D$C`C@$(D$CE $E}u!E D$D$ C`C@$葭'qD$LC`C $莵'EE@D;E~/E@tED$D$bC`C $'E詁D$gC`C $`'秒U絽]UE u4ETD$ PBD$D$lC`C@$'EEU$ 佛EE秒U(}t$D$押C`C@$菷&E蝎ED$E$茱(]E;Eu9ED$ PBD$D$函C`C@$h&EE$u4ETD$ PBD$D$陝C`C@$%&E蕈YUE鞆\$E$$E}t1ED$ PBD$D$$C`C@$葭%E蕘EE萇U(}t$D$TC`C@$%E^ED$E$w']E;Eu\ED$tC$萬%u搦]韜9ED$ PBD$D$xC`C@$%E蚫E8mt E8MtE鞆 C淺]韜 E8kt E8KtE鞆(C淺]E,u4ETD$ PBD$D$C`C@$$E蕈YUE鞆\$E$,E}t1ED$ PBD$D$燿C`C@$@$E蕘EE萇U(}t$D$0C`C@$$EED$E$葢%]E;Eu9ED$ PBD$D$DC`C@$茹#E薈E鞆丕C淺]E0u4ETD$ PBD$D$hC`C@$V#E蕈YUE鞆\$E$0E}t1ED$ PBD$D$C`C@$#E蕘EE萇U(}t$D$悖C`C@$菲"E蝎ED$E$荐$]E;Eu9ED$ PBD$D$陦C`C@$k"EE(u4ETD$ PBD$D$C`C@$("E蕈YUE鞆\$E$(E}t1ED$ PBD$D$LC`C@$蕚!E蕘EE萇UD$yC`C $茖!E}U仭pBD$D$C`C $d!U仭pBD$U仭xBD$`C $(!D$vC`C $!EjD$C`C $蓆 秒UHE$荀 E簀EEEE$!EE霑$蔟 E愬EE;E}EE愬E諫E狷EEEEEEE8ED$ED$E$莎ED$E$3 E UEE$萼EEE@EEE@EE牝EMgfff藾帆)仭仭)_EEED$E$葮EE霑D$E$菽EEEEEEE;E EE愬E諄EUE操$~EE操EEED$ED$E$葭EE;E}5E EU)EE UEEE訝EE版E$萸E$菘U EE秒U(E$EEEE}U仭pBD$E$7 u;UED$ ED$E D$E$tBE韈ED$U仭pBD$E$葆 u?}t3ED$ PBD$D$C`C@$EEEE}t8UED$ ED$E D$E$tBE韜1ED$ PBD$D$C`C@$EE霽U(ED$$9C!`CD$D$$bt$ 秒U(E$`C@$萇%4C%,CU]薈U]薈%0C,|$(|$0\$ t$$tyt$4$=1\$D$ t$ T$$t$'$@BL$1L$ T$<G>婪湎1T$D$ $t$萵\$ 1t$$|$(,UWVSVS\$ wCt$$`CT$L$@$M t\$`Ct$@$0$ 5`C@t$W[^UWVSLD$HtBT$D1Cu -tBC=B5|B=tB1;|$HC^l$D\B;-u {v$|C言CBZu L$`9-$|C=ul$`U-+ 幡L[^_]B;U;k-B:dT$`T$`|$<-<+ $莪2WkBx:}utBL[^_]=|Bt =B7{mCBx-\B向35|Bt$F=BL$tB)\$)D$(\$$\$ t&D$ T$ |$ ut$1\$l$,)|$ T$ 9T$,D$ 71L$,;\$ 4}Yl$DLD$(Cl$D)D;\$ LD}09}l$$C;\$ l$DDLD|'D$,T$ 9T$,x;{向tB@;D$HtB=xB言CBtT$`::t$@CWt$rl$`W pBM-+ 惡|$`:15C}-C柔C-B蛻NtB5xBtBtl$`}:t|$$bC蒭=pBL?[^_]=tBT$D_4tB5C蝗z:stB@;D$HtBxB酸CBtl$`}:t|$$@CT=pB|$`-+ 丿t t$`~:t:?w:m\$t$))5|B=Bl$CE-tB=tB|$=|B諄=B蘊B浩C BD$ 5|BT$ t$))D$:t$CD$8D$;\$<1匕?pBt$@|$Dl$HLqv_D$4\$\操|D$4L$\操Ttwl 1*|$`髱t$4\$`3蛯|$8<$ 秤F -CL$X9:檣|$T$8$爨CT$~蘓1千圉L$\D 5C^-xBt'L$X9:t$C|$8|$3tBT$D$4l$\操\(D( pBL$l$XI tBM-+ 丿f|$X:Wt$4蚶5xBl$X}:s|$\$8$C\$V=B|B)l$$l$)T$t$( D$T$|$u\$01t$L$,l$)|$9l$,D$ }S1l$,;\$ 4/}4D$T 磯l$()l$TC;\$ DLD} 9}D$$鷹D$,L$9L$,覊T$))|$0|$0=tB5B|B蘊IT$0L$T|$0,G|$=tB-Cd15pB`D$,L$(D$ T$$D$ L$T$$葫%TC%XC%LC%C%PC%pC%@C%8C% C%4C%C%びC%C%(C%貫C%C%樮C%尉C%紗C%袴C%C%贄C%$C% C%簷C%C%DC%C%A.AAA@ @鴣@0@V@@@H@i@@@剄@`@ Q@3@@C@ d@`@@s@ >@整@@狠@窰@@f@ @陽@@@0@@蛄@@稚@@行@排@占@ @+@@p@@\@-@塢@@@{@`@_@u@~@質@卆@@@J@畛@@N@"@@腟@鏨@絣@@@B@q@f@洵@z@$@椥@襖@@j@\@f@h@@◆@@@@(@@|@<@ @@@@@@ @4@d@@@@h@@@@p@X@P@P@X@p@@@@p~@}@{@`z@ y@x@v@u@t@s@r@r@ q@Pp@ o@m@@l@k@i@h@`g@@f@@e@@d@@c@`b@a@`@`@^@]@[@@Z@Y@W@V@fffffU@fffffT@楊面蓑S@R@Q@楊面 Q@@P@33333N@M@fffff&L@楊面面J@楊面I@CoBC5CoB:CICsBPCCyBCCrzBCCzBCCwBC$Cq{B,CXC{B^C|CBCC}BCC~BCCBCCBCCg{BC@@B?聖C  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ >?@ABCDEFGHI  J^\STUVR]ONLM_PQ`abcdefghijklmnopqrs{tuvwxyzXY~|}Z[K-,*21043./%&'()!"#$ +5:98<;67=Wc hiWXY23  !#$%&'()*+,-./01234567:;=>?@ABCHKMNPQSTUVWXZ[]^_`bflmnpqrtuvxyzY\\\\d\d\dEW]8  !1"# $% &'(jk)l*+,-.m  !nopqrst/0123456789uvwx:;<=>?@ABCDEFGHIJKLMNOPQRSTUVyz{|}~1 #$a%&'(T)*XZ[+\d5]^6,_`-./0abcd    efge"4789:;<=>?P@ABCDEFGHIJKLMOQRSUVWYZ[\]^_`bNyRS 8'>B!"&RS24>?AC57TUVWXYZ[\]^cdefghijklnopqrstuvwxyz{|}~2 M-.19@;<DD$&[/0_`ab6:>B OPQ()*+3@EFGHIJKLMNhX2parser stack overflow%s: error at %s:%d: required parameter id not specified %s: error at %s:%d: programmer type not specified %s: error at %s:%d: must specify page_size for paged memory %s: error at %s:%d: must specify num_pages for paged memory %s: error at %s:%d: page size (%u) * num_pages (%u) = %u does not match memory size (%u) %s: error at %s:%d: devicecode is deprecated, use stk500_devcode instead %s: error at line %d of %s: control stack already defined %s: Warning: line %d of %s: too many bytes in control stack %s: Warning: line %d of %s: too many bytes in flash instructions %s: Warning: line %d of %s: too many bytes in EEPROM instructions parse error,@m@@@*@@.@9@W@u@@<@<@@@'@9@K@]@o@@@@@@@@@@#@5@G@Y@k@}@@@~@(@h@@@@ @C @h @ @ @ @!@C!@h!@!@!@!@<@<@<@<@<@<@<@<@<@<@<@<@<@<@<@<@<@<@<@<@!@A"@"@"@#@\#@4$@%@&@(@)@U)@)@ *@m*@*@ +@]+@+@+@M,@,@,@J-@-@-@:.@.@.@*/@z/@/@0@j0@0@ 1@Z1@1@1@J2@2@2@:3@3@3@W4@4@5@p5@5@*6@6@J7@7@7@8@<@<@<@<@q8@8@8@=9@9@9@$:@V:@:@ ;@W;@;@;@><@<@%s: error at line %d of %s: pin must be in the range 0-17 %s: error at %s:%d: invalid opcode @@@@(@@4@@@@@I@@R@@[@@d@@m@@v@@@@ %s: error at %s:%d: too many opcode bits for instruction %s: error at %s:%d: invalid bit specifier "" %s: error at %s:%d: invalid bit specifier '%c' %s: error at %s:%d: can't parse bit number from "%s" %s: error at %s:%d: invalid bit specifier "%s"   1 2AX *:e;COWf.?@GLP+-8DHMQY3Z/4BbhSTg_~%)<=>a`cN[n$'dEsR^\&(|5mIJKt}6pqw0olU#V]79i!krj"Fuv,xzy{  !"#$%&'()*+,-./01/1/.9]+%*0%35`;D3EJUS`Z`kaoWa[,\tSV_ceadSblOO^K\EN\MbLXREH<HADBBG=JH2@68L:@@<.;/94;:701&%3(!:1"*&)'*(!$      _zyx~s~s}wggvsrlroruqagfk]nj`lb[fObV^PWJRMJ]QXBU@LVUCONRBGN@9E98;C>C2?0/6;&2;73&82&03(-%-)'3%   \wxm%}      "#$ $)''45&5(74,:<<58;/=156;8;@AFCHMB@MMRTTVVIOOLQNa\P]R_[VWJKKLLMMJJJJJJNJJJNJJJJJJJJJJJJJJJJJJJJJJJOJJPJJJJNJJJJQJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJOJJJJJJJQJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ      !" #$%&'() * +-.-.4B57777777J;9=C/E/JD<LG>KN|FQ?H@}IWAOSYXMTR`ZUab:V[\]^cd_ime4n5jsftgk6hu7vw77777777777777xxxxxxxxxxxxxx" ')/#*0<=(+1"#Y>hViZWlm      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI,,,,,000001111166qqqqrrrrryy~}|{zyxwvutsrqponkjgfedcba`_^]\[XUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?;:985432.-,&%$!     ~{zJ3polPJ83J22 JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ= ="!#"! $#!$$yy!####%@%#&(%4(4&/G%@/%YU&%U/G/Y/555555577777779999999EVEMHbeE]Mg[HEVME[]g[bbexxxxxxxM<<M"22"5Vz5Vz      !#$%&'()*,-./02356789:<=>?@ACEKKKKKLLLLLMMMMMNNOOOOPPPPPQQ}|{xvutsronmlkjihgfedcba`_][ZYXWUTSPONMLIHGFEDCBA@=;764310/.-,+*('&$#      }|{zyxwvusrqponlkjihgfedcb`^]\[ZYXWVUTSRPONLKJIGFDCB@?>=;9876543210/.-,)('&%$#"!      ~}|{zponmlkjihfdca`_^\ZXTSRQPNLKJIHFDCA?><;63*)' JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJerror at %s:%d: EOF in comment comment started on line %d error at line %d: unterminated character constant error at %s:%d: possible old-style config file entry /avrdude.conf.sampleD:/msys/1.0/local/etc Update your config file (see %s%s for a sample) error at %s:%d unrecognized character: "%s" fatal flex scanner internal error--no action foundH@H@H@H@H@I@5I@=G@DI@YI@I@9J@LJ@_J@rJ@J@J@J@J@K@*K@@K@VK@lK@K@K@K@K@K@K@L@L@2L@HL@^L@tL@L@L@L@L@L@L@M@$M@:M@PM@fM@|M@M@M@M@M@M@N@N@,N@BN@XN@nN@N@N@N@N@N@N@O@O@4O@JO@`O@vO@O@O@O@O@O@O@P@&P@S@TS@jS@S@S@S@S@S@S@T@T@0T@FT@cT@T@T@T@T@T@U@.U@KU@hU@U@U@U@U@U@V@3V@PV@mV@V@V@V@V@=G@V@BW@W@W@W@W@W@W@fatal flex scanner internal error--end of buffer missedfatal error - scanner input buffer overflowinput in flex scanner failedout of dynamic memory in yy_create_buffer()out of dynamic memory in yy_scan_buffer()out of dynamic memory in yy_scan_bytes()bad buffer in yy_scan_bytes()%s %s: Error: %s programmer uses avr_read_byte_default() but does not provide a cmd() method. No "%s" memory for part %s flasheepromsignatureavr_read(): error reading address 0x%04lx read operation not supported for memory "%s" %s: Error: %s programmer uses avr_write_page() but does not provide a cmd() method. avr_write_page(): memory "%s" not configured for page writes %s: Error: %s programmer uses avr_write_byte_default() but does not provide a cmd() method. %s: this device must be powered off and back on to continue %s: attempting to do this now ... %s: initialization failed, rc=%d %s: can't re-initialize device after programming the %s bits %s: you must manually power-down the device and restart %s: %s to continue. %s: device was successfully re-initialized fuselfusehfuseefuse%s: WARNING: %d bytes requested, but memory region is only %dbytes %sOnly %d bytes will actually be written ***failed; *** page %ld (addresses 0x%04lx - 0x%04lx) failed to write Reading%s: error reading signature data for part "%s", rc=%d avr_verify(): memory type "%s" not defined for part %s %s: WARNING: requested verification for %d bytes %s%s memory region only contains %d bytes %sOnly %d bytes will be verified. %s: verification error, first mismatch at byte 0x%04x %s0x%02x != 0x%02x %s: WARNING: can't read memory for cycle count, rc=%d %s: WARNING: can't write memory for cycle count, rc=%d %s: erase-rewrite cycle count is now %d %s: avr910_recv(): programmer is not responding %s: error: programmer did not respond to command: %s echip erasePenter prog modeLleave prog modeSUSB910VvpFound programmer: Id = "%s"; type = %c Software Version = %c.%c; Hardware Version = %c.%c aProgrammer supports auto addr increment. t Programmer supports the following devices: (unknown) Device code: 0x%02x = %s warningerror%s: %s: selected device is not supported by programmer: %s select deviceset addrflasheepromwrite byteRdmflush pageflush final page%s: memsize too small for sig byte readsavr910avr_new_opcode(): out of memory READWRITEREAD_LOREAD_HIWRITE_LOWRITE_HILOADPAGE_LOLOADPAGE_HILOAD_EXT_ADDRWRITEPAGECHIP_ERASEPGM_ENABLET@]@f@o@x@@@@@@@@IGNOREVALUEADDRESSINPUTOUTPUT@@@@ @avr_new_memtype(): out of memory %s: can't alloc buffer for %s size of %d bytes avr_dup_mem(): out of memory (memsize=%d) %s Block Poll Page Polled %sMemory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack %s----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- yesno%s%-11s %4d %5d %5d %4d %-6s %6d %4d %6d %5d %5d 0x%02x 0x%02x %s Memory Ops: %s Oeration Inst Bit Bit Type Bitno Value %s ----------- -------- -------- ----- ----- %s %-11s %8d %8s %5d %5d new_part(): out of memory %s%-4s = %-15s [%s:%d] dedicatedpossible i/oRESETMISOMOSISCKpsuedo%sAVR Part : %s %sChip Erase delay : %d us %sPAGEL : P%02X %sBS2 : P%02X %sRESET disposition : %s %sRETRY pulse : %s %sserial program mode : %s %sparallel program mode : %s %sTimeout : %d %sStabDelay : %d %sCmdexeDelay : %d %sSyncLoops : %d %sByteDelay : %d %sPollIndex : %d %sPollValue : 0x%02x %sMemory Detail : %s: serjtag_recv(): programmer is not responding chip erase instruction not defined for part "%s" recv_j %c 0x%02x %d :%02x enableddisabled serjtag:delay %d (%s) ( bitclk %.3f ) @茣N?jSVFound programmer: Id = "%s"; Revison = %s SERJTAGUSB910A serjtag protocol not supported. can't alloc memory flasheepromserjtag%s: ft245r_recv(): programmer is not responding ft245r_drain called but queue is not empty %d chip erase instruction not defined for part "%s" ft245r: bitclk %d -> ft baud %d ?{Gz?.A@%s: ft245r_program_enable: failed ft%s: invalid portname %s: use ft0 - ft9 %s: %s open failed %s: Synchronuse BitBangMode is not supported %s: BitBang OK %s: pin assign miso %d sck %d mosi %d reset %d %s: drain OK can't alloc memory flasheepromft245rbitbang_cmd(): [ %02X ] [ ] chip erase instruction not defined for part "%s" program enable instruction not defined for part "%s" AT90S1200%s: AVR device not responding %s: error: no pin has been assigned for %s AVR RESETAVR SCKAVR MISOAVR MOSI%s: error: no cmd() method defined for bitbang programmer %s: butterfly_recv(): programmer is not responding %s: error: programmer did not respond to command: %s echip erasePenter prog modeLleave prog modeConnecting to programmer: SVvpFound programmer: Id = "%s"; type = %c Software Version = %c.%c; No Hardware Version given. Hardware Version = %c.%c aProgrammer supports auto addr increment. b%s: error: buffered memory access not supported. Maybe it isn't a butterfly/AVR109 but a AVR910 device? Programmer supports buffered memory access with buffersize=%i bytes. t Programmer supports the following devices: Device code: 0x%02x select deviceEexit bootloaderset addrflasheepromlockwrite bytegFgElfusehfuseefusewrite block%s: memsize too small for sig byte readsavr910%s at %s:%d new_token(): out of memory error at %s:%d: can't scan hex number "%s" id(): out of memory token = %d = NUMBER, value=%gSTRING, value=%sID, value=%s dup_string(): out of memory avrdude.confavrdude.rc#2$FW6etHZ咯l輔~蝸3"V,Gu>d@杰R轌dv!0&gv4DUJ端Xムn諛|樋1 w.fT畄@R+:dN_vm|Ν$耽6狒H ;Z*^lO}~l .礑<正B)8P fo~tL]&盻4礎9J(X nn\|M (:3DJ[Vix` r/>筴 山2ZLKy^hh ?z.*。8FkzTHYb-%s: can't auto detect file format when using stdin/out. Please specify a file format using the -f option and try again. %s: %s file %s auto detected as %s %s: can't open %s file %s: %s %s: invalid %s file format: %d flash!AdA5AAAAAAAK%Raw message: 0x%02x OK FAILED breakpoint hit IDR dirty Synchronization lost sleep instruction hit target power lost unknown message 0x%02x A( A A A_ A AE Ay A A %s: jtagmkI_send(): sending %zd bytes %s: jtagmkI_send(): out of memory%s: jtagmkI_send(): failed to send command to serial port %s: jtagmkI_recv(): failed to send command to serial port %s: jtagmkI_resync() %s: jtagmkI_resync(): Sending sync command: %s: jtagmkI_resync(): failed to send command to serial port got RESP_OK %s: jtagmkI_resync(): Sending sign-on command: %s: jtagmkI_resync(): timeout/error communicating with programmer %s: jtagmkI_getsync(): Sending sign-on command: got %s %s: jtagmkI_chip_erase(): Sending chip erase command: %s: jtagmkI_chip_erase(): timeout/error communicating with programmer (resp %c) flasheeprom%s: jtagmkI_set_devdescr(): Sending set device descriptor command: %s: jtagmkI_set_devdescr(): timeout/error communicating with programmer (resp %c) %s: jtagmkI_reset(): Sending reset command: %s: jtagmkI_reset(): timeout/error communicating with programmer (resp %c) %s: jtagmkI_program_enable(): Sending enter progmode command: %s: jtagmkI_program_enable(): timeout/error communicating with programmer (resp %c) %s: jtagmkI_program_disable(): Sending leave progmode command: %s: jtagmkI_program_disable(): timeout/error communicating with programmer (resp %c) %s: jtagmkI_initialize(): part %s has no JTAG interface %s: jtagmkI_initialize(): unsupported baudrate %d %s: jtagmkI_initialize(): trying to set baudrate to %d %s: jtagmkI_initialize(): trying to set JTAG clock period to %.1f us %s: jtagmkI_initialize(): timeout/error communicating with programmer (resp %c) %s: jtagmkI_initialize(): Out of memory hfuse%s: jtagmkI_initialize(): warning: OCDEN fuse not programmed, single-byte EEPROM updates not possible %s: jtagmkI_open() %s: jtagmkI_open(): trying to sync at baud rate %ld: %s: jtagmkI_open(): succeeded %s: jtagmkI_open(): failed to synchronize to ICE %s: jtagmkI_close() %s: jtagmkI_close(): unsupported baudrate %d %s: jtagmkI_close(): trying to set baudrate to %d %s: jtagmkI_paged_write(.., %s, %d, %d) %s: jtagmkI_paged_write(): page size %d too large %s: jtagmkI_paged_write(): Out of memory %s: jtagmkI_paged_write(): sync loss, retries exhausted %s: jtagmkI_paged_write(): block_size at addr %d is %d %s: jtagmkI_paged_write(): Sending write memory command: %s: jtagmkI_paged_write(): timeout/error communicating with programmer (resp %c) %s: jtagmkI_paged_load(.., %s, %d, %d) %s: jtagmkI_paged_load(): page size %d too large %s: jtagmkI_paged_load(): sync loss, retries exhausted %s: jtagmkI_paged_load(): block_size at addr %d is %d %s: jtagmkI_paged_load(): Sending read memory command: %s: jtagmkI_paged_load(): timeout/error communicating with programmer (resp %c) %s: jtagmkI_read_byte(.., %s, 0x%lx, ...) lfuseefuselockcalibrationsignature%s: jtagmkI_read_byte(): timeout/error communicating with programmer (resp %c) %s: jtagmkI_write_byte(.., %s, 0x%lx, ...) %s: jtagmkI_write_byte(): timeout/error communicating with programmer (resp %c) .AtA@eA%s: jtagmkI_getparm() %s: jtagmkI_getparm(): Sending get parameter command (parm 0x%02x): %s: jtagmkI_getparm(): timeout/error communicating with programmer (resp %c) %s: jtagmkI_getparm(): unknown parameter 0x%02x OK, value 0x%02x %s: jtagmkI_setparm() %s: jtagmkI_setparm(): Sending set parameter command (parm 0x%02x): %s: jtagmkI_setparm(): timeout/error communicating with programmer (resp %c) %sICE hardware version: 0x%02x %sICE firmware version: 0x%02x 1 MHz500 kHz250 kHz125 kHz???%sVtarget : %.1f V %sJTAG clock : %s (%.1f us) .AAA@@o@JTAGMKIRSP_DEBUGWIRE_SYNC_FAILEDRSP_FAILEDRSP_ILLEGAL_BREAKPOINTRSP_ILLEGAL_COMMANDRSP_ILLEGAL_EMULATOR_MODERSP_ILLEGAL_JTAG_IDRSP_ILLEGAL_MCU_STATERSP_ILLEGAL_MEMORY_TYPERSP_ILLEGAL_MEMORY_RANGERSP_ILLEGAL_PARAMETERRSP_ILLEGAL_POWER_STATERSP_ILLEGAL_VALUERSP_NO_TARGET_POWERRSP_SET_N_PARAMETERSUnknown JTAG ICE mkII result code 0x%02x0x%02x Raw message: 0x%02xOK FAILED Illegal breakpoint Illegal command Illegal emulator mode: DebugWire: JTAG: HVSP/PP: SPIIllegal JTAG ID Illegal MCU state: Stopped: Running: ProgrammingIllegal memory type Illegal memory range Illegal parameter Illegal power state Illegal value No target power Sign-on succeeded memory contents: parameter values: SPI data returned: BREAK event, PC = 0x%lx, reason unspecifiedprogram breakdata break PDSBdata break PDMSBunknown: 0x%02xunknown message 0x%02x )8A2;A;A= 4.14 %s: jtagmkII_getsync(): ISP activation failed, trying debugWire %s: Target prepared for ISP, signed off. %s: Please restart %s without power-cycling the target. %s: jtagmkII_getsync(): Sending get sync command: %s: jtagmkII_getsync(): bad response to set parameter command: %s %s: jtagmkII_chip_erase(): Sending chip erase command: %s: jtagmkII_chip_erase(): timeout/error communicating with programmer (status %d) %s: jtagmkII_chip_erase(): bad response to chip erase command: %s %s: Chip erase not supported in debugWire mode flasheeprom%s: jtagmkII_set_devdescr(): Sending set device descriptor command: %s: jtagmkII_set_devdescr(): timeout/error communicating with programmer (status %d) %s: jtagmkII_set_devdescr(): bad response to set device descriptor command: %s stopreset%s: jtagmkII_reset(): Sending %s command: %s: jtagmkII_reset(): timeout/error communicating with programmer (status %d) %s: jtagmkII_reset(): bad response to reset command: %s %s: jtagmkII_program_enable(): Sending enter progmode command: %s: jtagmkII_program_enable(): timeout/error communicating with programmer (status %d) %s: jtagmkII_program_enable(): bad response to enter progmode command: %s %s: JTAGEN fuse disabled? %s: jtagmkII_program_disable(): Sending leave progmode command: %s: jtagmkII_program_disable(): timeout/error communicating with programmer (status %d) %s: jtagmkII_program_disable(): bad response to leave progmode command: %s debugWireJTAG%s: jtagmkII_initialize(): part %s has no %s interface %s: jtagmkII_initialize(): unsupported baudrate %d %s: jtagmkII_initialize(): trying to set baudrate to %d %s: jtagmkII_initialize(): trying to set JTAG clock period to %.1f us %s: jtagmkII_initialize(): Out of memory hfuse%s: jtagmkII_initialize(): warning: OCDEN fuse not programmed, single-byte EEPROM updates not possible %s: jtagmkII_open() usbavrdude was compiled without usb support. %s: jtagmkII_open_dw() %s: jtagmkII_dragon_open() %s: jtagmkII_dragon_open_dw() %s: jtagmkII_close() %s: jtagmkII_close(): Sending GO command: %s: jtagmkII_close(): timeout/error communicating with programmer (status %d) %s: jtagmkII_close(): bad response to GO command: %s %s: jtagmkII_close(): Sending sign-off command: %s: jtagmkII_close(): bad response to sign-off command: %s %s: jtagmkII_paged_write(.., %s, %d, %d) %s: jtagmkII_paged_write(): Out of memory %s: jtagmkII_paged_write(): block_size at addr %d is %d %s: jtagmkII_paged_write(): Sending write memory command: %s: jtagmkII_paged_write(): timeout/error communicating with programmer (status %d) %s: jtagmkII_paged_write(): fatal timeout/error communicating with programmer (status %d) %s: jtagmkII_paged_write(): bad response to write memory command: %s %s: jtagmkII_paged_load(.., %s, %d, %d) %s: jtagmkII_paged_load(): block_size at addr %d is %d %s: jtagmkII_paged_load(): Sending read memory command: %s: jtagmkII_paged_load(): timeout/error communicating with programmer (status %d) %s: jtagmkII_paged_load(): fatal timeout/error communicating with programmer (status %d) %s: jtagmkII_paged_load(): bad response to read memory command: %s %s: jtagmkII_read_byte(.., %s, 0x%lx, ...) lfuseefuselockcalibrationsignature%s: illegal address %lu for signature memory %s: jtagmkII_read_byte(): Sending read memory command: %s: jtagmkII_read_byte(): timeout/error communicating with programmer (status %d) %s: jtagmkII_read_byte(): fatal timeout/error communicating with programmer (status %d) %s: jtagmkII_read_byte(): bad response to read memory command: %s %s: jtagmkII_write_byte(.., %s, 0x%lx, ...) %s: jtagmkII_write_byte(): Sending write memory command: %s: jtagmkII_write_byte(): timeout/error communicating with programmer (status %d) %s: jtagmkII_write_byte(): fatal timeout/error communicating with programmer (status %d) %s: jtagmkII_write_byte(): bad response to write memory command: %s jXA\EAi@hTA%s: jtagmkII_getparm() %s: jtagmkII_getparm(): Sending get parameter command (parm 0x%02x): %s: jtagmkII_getparm(): timeout/error communicating with programmer (status %d) %s: jtagmkII_getparm(): bad response to get parameter command: %s %s: jtagmkII_setparm() %s: jtagmkII_setparm(): unknown parameter 0x%02x %s: jtagmkII_setparm(): Sending set parameter command (parm 0x%02x, %zu bytes): %s: jtagmkII_setparm(): timeout/error communicating with programmer (status %d) %s: jtagmkII_setparm(): bad response to set parameter command: %s JxA xAxAxAJxA&xA/xA8xAJxAAxA%sM_MCU hardware version: %d %sM_MCU firmware version: %d.%02d %sS_MCU hardware version: %d %sS_MCU firmware version: %d.%02d %sSerial number: %02x:%02x:%02x:%02x:%02x:%02x %sVtarget : %.1f V 6.4 MHz2.8 MHz%.1f MHz%.1f kHz%sJTAG clock : %s (%.1f us) @@jXA\EAffffff@hTA羇@.AJTAGMKIIJTAGMKII_DWDRAGON_JTAGDRAGON_DWlist id %p internal data structures: num f pool n_ln top bottom next_ln np_top np_bottom ---- - ---- ---- ---------- ---------- ---------- ---------- ---------- %4d %1d %4d %4d %10p %10p %10p %10p %10p node pools: idx np magic1 next prev magic2 ---- ---------- ---------- ---------- ---------- ---------- %4d %10p 0x%08x %10p %10p 0x%08x list elements: n ln magic1 next prev data magic2 ---- ---------- ---------- ---------- ---------- ---------- ---------- %4d %10p %10x %10p %10p %10p %10x *** list count is not correct *** list id indicates %d, counted items = %d 5.3.1Usage: %s [options] Options: -p Required. Specify AVR device. -b Override RS-232 baud rate. -B Specify JTAG/STK500v2 bit clock period (us). -C Specify location of configuration file. -c Specify programmer type. -D Disable auto erase for flash memory -i ISP Clock Delay [in microseconds] -P Specify connection port. -F Override invalid signature check. -e Perform a chip erase. -O Perform RC oscillator calibration (see AVR053). -U :r|w|v:[:format] Memory operation specification. Multiple -U options are allowed, each request is performed in the order specified. -n Do not write anything to the device. -V Do not verify. -u Disable safemode, default when running from a script. -s Silent safemode operation, will not ask you if fuses should be changed back. -t Enter terminal mode. -E [,] List programmer exit specifications. -y Count # erase cycles in EEPROM. -Y Initialize erase cycle # in EEPROM. -v Verbose output. -v -v for more. -q Quell progress output. -q -q for less. -? Display this usage. avrdude project: r%s: can't open config file "%s": %s %sProgrammer Type : %s %sDescription : %s %s%-8s = %-30s [%s:%d] .A %s | %s | %d%% %0.2fs %s | # | 100%% %0.2fs %s: out of memory flash%s: invalid I/O mode '%c' in update specification allowed values are: r = read device w = write device v = verify device %s: invalid update specification %s: invalid file format '%s' in update specifier ^AAAAAAAAAAAAAAAAAApA"%s" memory type not defined for part "%s" %s: reading %s memory: Reading%s: failed to read all of %s memory, rc=%d -%s: writing output file "%s" %s: write to file '%s' failed %s: reading input file "%s" %s: writing %s (%d bytes): Writing%s: failed to write %s memory, rc=%d %s: %d bytes of %s written %s: verifying %s memory against %s: %s: load data %s data from input file %s: %s: read from file '%s' failed %s: input file %s contains %d bytes %s: reading on-chip %s data: %s: verifying ... %s: verification error; content mismatch %s: %d bytes of %s verified %s: invalid update operation (%d) requested %s: cannot initialize updater list ?b:B:c:C:DeE:Fi:np:OP:qstU:uvVyY:%s: invalid baud rate specified '%s' %s: invalid bit clock period specified '%s' %s: invalid isp clock delay specified '%s' %s: error parsing update operation '%s' %s: invalid cycle count '%s' %s: invalid option -%c 00:30:58Jun 20 2007 %s: Version %s, compiled on %s at %s %sCopyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ %sSystem wide configuration file is "%s" %s: error reading system wide configuration file "%s" %sUser configuration file is "%s" %sUser configuration file does not exist or is not a regular file, skipping %s: error reading user configuration file "%s" ?Valid parts are: Valid programmers are: %s: no programmer has been specified on the command line or the config file %sSpecify a programmer using the -c option and try again %s: Can't find programmer id "%s" Valid programmers are: STK500avr910STK500V2JTAGMKII%s: No AVR part has been specified, use "-p Part" %s: AVR Part "%s" not found. %s: WARNING: -E option not supported by this programmer type %s: no port has been specified on the command line or the config file %sSpecify a port using the -P option and try again %sUsing Port : %s %sUsing Programmer : %s %sOverriding Baud Rate : %d %sSetting bit clk period: %.1f %sSetting isp clock delay: %3i %s: performing RC oscillator calibration %s: calibration value is now stored in EEPROM at address 0 %s: initialization failed, rc=%d %sDouble check connections and try again, or use -F to override %sthis check. %s: AVR device initialized and ready to accept instructions %s: error reading signature data, rc=%d signature%s: WARNING: signature data not defined for device "%s" %s: Device signature = 0x%02x%s: Yikes! Invalid device signature. %s: Expected signature for %s is %02X %02X %02X %sDouble check chip, or use -F to override this check. %s: safemode: To protect your AVR the programming will be aborted %s: NOTE: FLASH memory has been specified, an erase cycle will be performed %sTo disable this feature, specify the -D option. (if being tracked)%s: current erase-rewrite cycle count is %d%s %s: setting erase-rewrite cycle count to %d %s: WARNING: failed to update the erase-rewrite cycle counter %s: erasing chip %s: safemode: Sorry, reading back fuses was unreliable. I have given up and exited programming mode %s: safemode: fuse changed! Was %x, and is now %x Would you like this fuse to be changed back? [y/n] fuse%s: safemode: and is now rescued %s: and COULD NOT be changed %s: safemode: lfuse changed! Was %x, and is now %x lfuse%s: safemode: hfuse changed! Was %x, and is now %x hfuse%s: safemode: efuse changed! Was %x, and is now %x efuse%s: safemode: Fuses OK Fuses not recovered, sorry %s done. Thank you. 躓動>QAbAbAA+AVAnA{AbAbAbAbAbAbAbAbAA翁AbAbAbAbAA烏AbAbA岬AbAbAbAbAbAbAbAbAAAbAbAbAbAbAAbAbAbAbAAbA▼A色AbA払A礑A錻AΘAbAbA秀A%d,%s: failed to open parallel port "%s" %s: error reading status of ppi data port %s: error reading status of ppi ctrl port %s (not used)%s VCC = %s %s BUFF = %s %s RESET = %d %s SCK = %d %s MOSI = %d %s MISO = %d %s ERR LED = %d %s RDY LED = %d %s PGM LED = %d %s VFY LED = %d resetnoresetvccnovccPPI %s: Fatal error: Programmer does not support open()%s: out of memory allocating programmer structure %s: programmer operation not supported lpt1lpt2lpt3pCxpCxpC%s: can't open device "giveio" %s: can't open device "%s" \\.\giveioavrdude%s: safemode: Wrote %s to %x, read as %x. %d attempts left fuse%s: safemode: Verify error - unable to read fuse properly. Programmer may not be reliable. %s: safemode: fuse reads as %X lfuse%s: safemode: Verify error - unable to read lfuse properly. Programmer may not be reliable. %s: safemode: lfuse reads as %X hfuse%s: safemode: Verify error - unable to read hfuse properly. Programmer may not be reliable. %s: safemode: hfuse reads as %X efuse%s: safemode: Verify error - unable to read efuse properly. Programmer may not be reliable. %s: safemode: efuse reads as %X SETBREAKCLRBREAKSETDTRCLRDTRSETRTSCLRRTS%s: serbb_setpin(): unknown pin %d %s: serbb_setpin(): EscapeCommFunction(%s) %s: serbb_setpin(): SetCommState() failed: %s %s: serbb_setpin(): GetCommModemStatus() failed: %s %s: serbb_getpin(): GetCommState() => 0x%lx TXDDTRRTS%s: serbb_getpin(): unknown pin %d %s: serbb_getpin(): return cached state for %s %s: ser_open(): can't open device "%s": %s %s: ser_open(): can't set buffers for "%s" %s: ser_open(): can't set com-state for "%s" %s: ser_open(): opened comm port "%s", handle 0x%x %s: ser_close(): closed comm port handle 0x%x SERBB%s: %d bytes: %02x "" %s: %d bytes: "Success.Access denied.Device not found.Device is busy.I/O Error.Unknown error %d.粲A迪AAAAAAAAAAAAAAAAobdev.atAVR-Doper%s: avrdoper_open(): %s SendSending %d bytes data chunk %s: avrdoper_send(): %s %s: avrdoperFillBuffer(): %s Received %d bytes data chunk of total %d %s: avrdoperFillBuffer(): internal error: buffer overflow Receive%s: serial_baud_lookup(): unknown baud rate: %ldnet:%s: ser_open(): network connects are currently notimplemented for Win32 environments %s: ser_open(): can't open device "%s": %s %s: ser_open(): can't set buffers for "%s" %s: ser_open(): can't set com-state for "%s" %s: ser_open(): can't set initial timeout for "%s" %s: ser_send(): port not open %s: Send: %c . [%02x] sorry no info avail%s: ser_send(): write error: %s %s: ser_send(): size/send mismatch %s: ser_read(): port not open %s: ser_recv(): read error: %s %s: Recv: %s: ser_drain(): port not open drain>%s: ser_drain(): read error: %s %02x o@?躓動> %s: stk500_getparm(): can't get into sync %s: stk500_getparm(): (a) protocol error, expect=0x%02x, resp=0x%02x %s: stk500_getparm(): parameter 0x%02x failed %s: stk500_setparm(): can't get into sync %s: stk500_setparm(): (a) protocol error, expect=0x%02x, resp=0x%02x %s: stk500_setparm(): parameter 0x%02x failed %sHardware Version: %d %sFirmware Version: %d.%d UnknownSTK502STK501%sTopcard : %s %sVtarget : %.1f V %sVaref : %.1f V %sOscillator : Off %.3f %s %sSCK period : %.1f us $@ LA.A@@^A \A?BBBBBBBBSTK500unknownSTK500AVRISPAVRISP mkIIJTAG ICE mkII%s: stk500_send_mk2(): failed to send command to serial port %s: unsupported encapsulated ISP command: %#x %s: out of memory for command packet %s: stk500_send(): failed to send command to serial port %s: stk500v2_recv_mk2: error in USB receive %s: stk500v2_jtagmkII_recv(): error in jtagmkII_recv() %s: stk500v2_jtagmkII_recv(): got %u bytes, have only room for %u bytes %s: stk500v2_jtagmkII_recv(): failed %s: stk500v2_jtagmkII_recv(): illegal MCU state %s: stk500v2_jtagmkII_recv(): unknown status %d %s: stk500v2_recv(): buffer too small, received %d byte into %zd byte buffer %s: stk500v2_recv(): previous packet sent with wrong checksum %s: stk500v2_recv(): checksum error %s: stk500v2_recv(): unknown state %s: stk500_2_ReceiveMessage(): timeout :*B(B(B )B )B5)BS)B)BSTK500_2AVRISP_2AVRISP_MK2%s: stk500v2_getsync(): got response from unknown programmer %s, assuming STK500 %s: stk500v2_getsync(): found %s programmer %s: stk500v2_getsync(): can't communicate with device: resp=0x%02x %s: stk500v2_getsync(): timeout communicating with programmer %s: stk500v2_getsync(): error communicating with programmer: (%d) %s: stk500v2_command(): short reply %s: stk500v2_command(): command failed %s: stk500v2_command(): unknown status 0x%02x %s: stk500v2_command(): failed miserably to execute command 0x%02x %s: stk500v2_cmd(): failed to send command %s: stk500v2_cmd(): short reply, len = %d %s: stk500v2_chip_erase: chip erase instruction not defined for part "%s" %s: stk500v2_program_enable(): program enable instruction not defined for part "%s" parallelhigh-voltage serial%s: stk500hv_initialize(): %s programming control stack not defined for part "%s" %s: stk500pp_initalize(): failed to set control stack flasheeprom%s: stk500pp_initialize(): Out of memory %s: stk500v2_disable(): failed to leave programming mode %s: stk500hv_disable(): failed to leave programming mode avrdoperusbavrdude was compiled without usb support. %s: stk500v2_loadaddr(): failed to set load address %s: stk500hv_read_byte(.., %s, 0x%lx, ...) lfusefusehfuseefuselockcalibrationsignature%s: stk500hv_read_byte(): Sending read memory command: %s: stk500hv_read_byte(): timeout/error communicating with programmer %s: stk500hv_write_byte(.., %s, 0x%lx, ...) %s: stk500hv_write_byte(): unsupported memory type: %s %s: stk500hv_write_byte(): Sending write memory command: %s: stk500hv_write_byte(): timeout/error communicating with programmer %s: stk500v2_paged_write: loadpage instruction not defined for part "%s" %s: stk500v2_paged_write: write page instruction not defined for part "%s" %s: stk500v2_paged_write: write instruction not defined for part "%s" %s: stk500v2_paged_write: read instruction not defined for part "%s" %s: stk500v2_paged_write: write command failed %s: stk500hv_paged_write: write command failed %s: stk500v2_paged_load: read instruction not defined for part "%s" %s: stk500v2_paged_load: read command failed %s: stk500hv_paged_load: read command failed %s: stk500v2_set_vtarget(): cannot obtain V[aref] %s: stk500v2_set_vtarget(): reducing V[aref] from %.1f to %.1f J +?$@%s: stk500v2_set_varef(): cannot obtain V[target] %s: stk500v2_set_varef(): V[aref] must not be greater than V[target] = %.1f J +?$@MHzkHzHz%s: stk500v2_set_fosc(): f = %.3f %s too high, using %.3f MHz %s: stk500v2_set_fosc(): f = %u Hz too low, %u Hz min LA.A@@H} @Using p = %.2f us for SCK (param = %d) .A%s: stk500v2_mode_for_pagesize(): invalid pagesize: %u %s: stk500v2_set_sck_period(): p = %.1f us too small, using %.1f us %s: stk500v2_set_sck_period(): p = %.1f us too large, using %.1f us 濕xV4>o@?躓動>%s: stk500v2_getparm(): failed to get parameter 0x%02x %s: stk500v2_setparm(): failed to set parameter 0x%02x %s: Unable to get parameter 0x%02x %s: Skipping paramter write; parameter value already set. UnknownNone%sProgrammer Model: %s %sHardware Version: %d %sFirmware Version: %d.%02d STK501STK502STK503STK504STK505STK520%sTopcard : %s %sVtarget : %.1f V %sVaref : %.1f V %sOscillator : Off %.3f %s %sSCK period : %.2f us %sSCK period : %.1f us @@$@ LA.A^A \A?]B]B]B]B]B]B]B]B%s: stk500v2_perform_osccal(): failed %s: stk500v2_jtagmkII_open() %s: failed to sync with the JTAG ICE mkII in ISP mode %s: stk500v2_dragon_isp_open() %s: stk500v2_dragon_hv_open() %s: failed to sync with the JTAG ICE mkII in HV mode STK500V2STK500PPSTK500HVSPJTAGMKII_ISPDRAGON_ISPDRAGON_PPDRAGON_HVSP%s: successfully opened stk500v1 device -- please use -c stk500v1 %s: successfully opened stk500v2 device -- please use -c stk500v2 %s: cannot open either stk500v1 or stk500v2 programmer STK500GENERICdumpdump memory : %s readalias for dumpwritewrite memory : %s ... eraseperform a chip erasesigdisplay device signature bytespartdisplay the current part informationsendsend a raw command : %s parmsdisplay adjustable parameters (STK500 only)vtargset (STK500 only)varefset (STK500 only)foscset (STK500 only)sckset (STK500 only)help?quit0123456789abcdef%04x %s |%s| Usage: dump [ ] "%s" memory type not defined for part "%s" %s (dump): can't parse address "%s" %s (dump): can't parse length "%s" %s (dump): address 0x%05lx is out of range for %s memory %s (dump): out of memory error reading %s address 0x%05lx of part %s read operation not supported on memory type "%s" Usage: write ... byteN> %s (write): can't parse address "%s" %s (write): address 0x%05lx is out of range for %s memory %s (write): selected address and # bytes exceed range for %s memory %s (write): out of memory %s (write): can't parse byte "%s" %s (write): error writing 0x%02x at 0x%05lx, rc=%d write operation not supported on memory type "%s" %s (write): error writing 0x%02x at 0x%05lx cell=0x%02x The %s programmer does not support direct ISP commands. Usage: send %s (send): can't parse byte "%s" results: %02x%s: erasing chip error reading signature data, rc=%d signaturesignature data not defined for device "%s" Device signature = 0x%02x %s (parms): the %s programmer does not support adjustable parameters Usage: vtarg %s (vtarg): can't parse voltage "%s" %s (vtarg): the %s programmer cannot set V[target] %s (vtarg): failed to set V[target] (rc = %d) Usage: fosc [M|k] | off off%s (fosc): can't parse frequency "%s" %s (fosc): the %s programmer cannot set oscillator frequency %s (fosc): failed to set oscillator_frequency (rc = %d) .A@@Usage: sck %s (sck): can't parse period "%s" %s (sck): the %s programmer cannot set SCK period %s (sck): failed to set SCK period (rc = %d) 躓動>Usage: varef %s (varef): can't parse voltage "%s" %s (varef): the %s programmer cannot set V[aref] %s (varef): failed to set V[aref] (rc = %d) Valid commands: %-6s : Use the 'part' command to display valid memory types for use with the 'dump' and 'write' commands. %s: command "%s" is ambiguous %s: invalid command "%s" %savrdude> >>> %s %s: error: no usb support. please compile again with libusb installed. usbasp-LIBGCCW32-EH-2-SJLJ-GTHR-MINGW32w32_sharedptr->size == sizeof(W32_EH_SHARED)%s:%u: failed assertion `%s' ../../gcc/gcc/config/i386/w32-shared-ptr.cGetAtomNameA (atom, s, sizeof(s)) != 0unknown option -- %soption requires an argument -- %soption doesn't take an argument -- %.*sambiguous option -- %.*soption requires an argument -- %cunknown option -- %c%s: POSIXLY_CORRECTh槻`簧坪頒H獵,\@pTt還墺贅 ,DT`t晩慱簽(8H\|慰車網榜贇  ,8@LXdp|閑遮鍔俔榕籃贏$,8DP\htへ椅蛇磐俟榴葷 $0<HT`lx陥碩儲贐 $t還墺贅 ,DT`t晩慱簽(8H\|慰車網榜贇  ,8@LXdp|閑遮鍔俔榕籃贏$,8DP\htへ椅蛇磐俟榴葷 $0<HT`lx陥碩儲贐 $FTD2XX.dllHidD_GetAttributesHidD_GetFeatureHidD_GetHidGuidHidD_GetManufacturerString HidD_GetProductStringHidD_SetFeatureAddAtomA&CloseHandleDCreateFileAEscapeCommFunctionExitProcessFindAtomAFormatMessageAGetAtomNameAGetCommModemStatusCGetLastErrorGetSystemTimeAsFileTimeGetVersionExALocalFreeSQueryPerformanceCounterTQueryPerformanceFrequencyeReadFileSearchPathASetCommStateSetCommTimeoutsSetUnhandledExceptionFilterSetupCommSleep8WriteFile*_isattyO_statQ_strdup'__getmainargs0__mb_cur_max2__p___argv<__p__environ>__p__fmodeP__set_app_typey_cexit_errno_iob_isctype^_onexitg_pctype_setmode_stricmp_strnicmp_vsnprintfabortatexitatof)div*exit-fclose0fflush3fgets8fopen9fprintf:fputc;fputs>fread?freeGfwriteIgetcKgetenvRisalphaTisdigitXisprintYispunctZisspaceiisxdigitrmallocwmemcmpxmemcpyymemmovezmemsetprintfputcputcharreallocsetvbufsignalsprintfstrcatstrchrstrcmpstrcpystrerrorstrlenstrncmpstrncpystrrchrstrtodstrtokstrtolstrtoultolowertouppervfprintfSetupDiDestroyDeviceInfoListSetupDiEnumDeviceInterfacesSetupDiGetClassDevsASetupDiGetDeviceInterfaceDetailAhid.dll(((((((((((((((((((((((KERNEL32.dll<<<msvcrt.dllPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPmsvcrt.dllddddsetupapi.dll.filegcrt1.c P 2 B _atexit __onexit .text).data.bss.filegcrtstuff.cU .text .data.bss.file1gconfig_gram.ce_yyr1 _yyr2`r|_yypact_yypgoto _yytable _yycheck_yyparse M/ / 0 .text3 .data.bss.rdataD.file_glexer.c(_yy_init8`_yy_ec_yy_meta#_yy_base#_yy_def*_yy_nxt`1_yy_chk9_yylex6 Hx #X/hLxI `L wM _inputUN O P Q R VS S S S R YQ .P >VO IO _6P .text6.data.bss.rdata`;-.filevgavr.cqS U  V X zZ ` a d e ;g ,h *h .textS.data.bss.rdataE.filegavr910.c_is_usb:i Gi TCj bhj wj  k Ck yk _can_cmdk 9o >o Co #p 0p >p Np _ q cached.0cvalue.1caddr.2rq r r s v w  ?x qz 3{ .textiA.data.bssp.rdataKe.filegavrpart.cC| S_| aE} o9~ ~: : _bittype  ~ %  a   4  .. : J TB .text|u.data.bss.rdataN.filegserjtag.ca o }  f    ! 0T A Q ^P l {   -      @"0, 6 B \ p .textu.data.bss@.rdataS_.filegft245r.cp _handleP未 @ `  陸   N  芥 1 遘 D  T  c  o ( }     p H _setbitl  ク  侵  眺  薫 ",6v  v    概 5 ? N  a  .textp.data 0.bssP.rdata@U.file6gbitbang.cq      換    郎    A  z    w 5 ! I  ^ 膺 .text4.data`.bss.rdata0W?.filecgbutterfly.c{    明  3  X  漢  樵  帆  卅  楞 2  M M h        @ 枡  酘  麁  j  断  版 -  cached.0cvalue.1 caddr.20C  ^ 塢 z (  ヒ    H   .texti.data`.bssP.rdatapX .file|gconfig.c  _yywrap覚 _yyerror出   g  委 _number睹  _string岱 _idM _keyword慯 %駻 _pyytext駸 2 .text)H.data`.bssP.rdata[.filegconfwin.c>@ R`\ .text@.data`.bss`.rdata`\.filegcrc16.c_crcsum侖 p& { .text侖.data`.bssp.rdata\.filegfileio.c_fmtstr獪 _b2ihex6  _ihex2b _b2srec  _srec2b   溲  R   汨  _fileio苳 .text獪!.data`.bssp.rdata^p.filegjtagmkI.c_baudtabe 曝 %踐 4苞 B P _亨 oW I O     $ 7A I ]po  T  Y       -8 A YR j  {&" " $ 5$ .textv,t.data`.bssp.rdataea .file(gjtagmkII.c` % k% % % msg.0% Q& '' .,- =0O. _. tE3 4 _serno< = = `4A `C "jC ;R V %xZ 9` N-e gg y9j k ]m xm Yn 7o p e &O .text %K:.data`.bss.rdatapuv.filePglists.c6q D_r R3s _lcreates aXt _laddt _laddou _laddu$v _lfirstv _llastv _lnextv _lprevv _ldatav _lsizev _lcatv _lget4w _lget_nfw _lget_lnw n * A ? '萃Et V疲8.3u _^[t!P契VE_^[V E_^[面面面面面面面UVt$ V3辷鴣u ^]S\$u [^]W|$u _[^3]~h4u蔕Dt V疲\&萵Dt V疲V-3u _[^]uV CD_[^]D$ PWS玲#V#D_[^]面面面面面面T$jD$PjjjL$Qhp"R菴面面面面面面L$T$jD$ PjQjjht"R面面面面面面D$L$ jT$RjjjD$D$PL$!L$hx"QO 面面面面面面L$T$jD$ PjQjjh|"R面面面面面面D$L$jT$RjjjD$D$PL$L$$h"Q蒂 面面面T$jD$PjjjL$Qh"R莚面面面面面面pd3D$l$$S\$xU$V$W$j`T$ jRD$ L$莟8 jD$Pj`L$(Qj`Rh"SD$<(D$tPL$ 6@u@6@u06@u 6@u3 78@tL$$MtL$,+ut$tL$<+uL$tT$(L$|_^][3匁;p面面面面面面面L$jD$Pjjjjh"Q2面面面面面面面L$jD$Pjjjjh"Q面面面面面面面T$jD$PjjjL$Qh"R莽面面面面面面L$jD$Pjjjjh"Q茴面面面面面面面L$jD$Pjjjjh@"Qr面面面面面面面,d3D$(D$jD$PUVL$,QWuPVA?][_3^L$(3匁(:,,=t%V?W][_3^L$(3匁9,WtT$l$TD$PL$RT$LUPD$PQRPNQ(rxcjjjjT$ RW_o wG`KuD$]G[_^L$(3匁f9,jjjjL$ QWGauT$WL$8][_^3匁,9,談td3D$p$$VD$ $W3L$t D$ "t D$ "D$ "Ujjj璋h$tu]_^L$p3匁8tSxT$$RjhjUD$8tID$$PVhjUuU\$33$ $L$$D$Q$R$VPQRUj@D$DjP茗3\$ jL$$Qj@T$LRj@W冒POPQtK"t6$L$@:utP:Quu3宣宣 $;T$@tW莟\$3; u[]_^L$p3匁/7ttjjjjD$ PW蒭uL$O[]_^L$p3匁6tL$x_^3萬6t面Vt$Vuu3^FPFt P茘;V荐^面面面面面Vt$V%u3^L$D$T$QPD$NRPQ ^Vt$V蒹u3^L$D$T$QPD$NRPQ$^Vt$V茱u3^D$L$T$ PFQRP0^面面面面面D$HL$%4面面面面面面面jD$PD$ H@jjjjRP面面面jD$PD$jL$ QjH@RRPt!L$$L$T$T$QT$ Q 面面面D$箭$|*jD$PD$ H$@jjjjRPD$PjL$Q(PjjjjQRjD$PD$ H0@jjjjRPD$PjL$Q4PjjjjQRjD$PD$ H@jjjjRPD$PjL$QPjjjjQRD$))w))s**I*面面面面L$jD$ PD$ PjQhPjjQR面S\$(VWjD$4PD$4Pj|$鵐L$QPjjQRt t$ 鵐_^[面面L$jD$ PD$ PjQ PjjQR面,面面面QD$ $t$t $jD$PD$PjjjL$QLPQRY面jD$PD$ H@jjjjRP面面面jD$PD$ PjjjL$QPQR面Vt$(WjD$0PD$0Pjj|$鵐jL$QPQR_^面面面面面Vt$V茱u3^L$ VjD$ PjjjQNPQ^面面面面面面面D$PV染愨 面面面面面D$ T$PD$L$QH@jRjjRP utL$I9tu鮹漫utP=6u3寸u談面面面面面uUl$ u ]S\$ t.t*39uv VW鵐dd;ur_^;uE[3]面 uD$;uskdL$tL$ tPL$tPL$tPPQPQPQ W|$ t Vp 鵐^L$$_tP`L$t@ 3逝  面面面面面面面L$標tjD$ PjQL$jjh"QF面L$標t3逝面面面面|$ud 面面面面面面讎d3$$VWj3WWhD$|$t;u 蚶$SUL$QRhWVD$,xtU|WD$PWWL$(QVD$P蓙I3jT$RUWD$(PVu:W蒿3U,=tW萋3V.$$QRV$p蔟#$VtjjjjjhGP(uWR3藾uW43蕋jL$XQst$T$LR{D$HPL$ C`QR茣t%jD$XPL$LQT$HRD$ CaPQD$T$N"W?V#G@F$OAN%WBV&GCF'UB倡w-t V疲蓚3l$4j +9OWVFGGFOHNWDV GEF OFNWIVGJFOKNWLVGMFONNWOVGPFOQNWRVGSFOTNWUVGVF蚫U!,r,t V疲蓚3l$t3j*t9utHjX*uU菎+蕾j$K WQCC& WGFFO(N W)V G*FO+NW,VG-FfO.fNUB VV茘*OyI復AWQRL$,莚 D$PL$PQL$,茗Ot>pu+t,T$LuD$LPu+L$L$3~" $d$fTLfD;|l$ $Qf$蓍$R庸D$f$u A3f9G"P9O Q来}WR来f$D$tD$f&tL$ D$P来G f=契r侯P来L$V;tL$ I:uT$ R莇V;tL$ :uD$ P菫V;tL$ :u[fF 莪ffF" 叛f均fV$先$f鏡fF&^(^)^*^+^,^-f^.F0G叛N:仭 V;N<佩V=叛N>仞V?N@仭 帆 VA争 NB$FCG仞V5叛仞N6V7N1叛倩先$N2L$LF4V3fW[_fV8^33先D面面面QVW~惑D$yhhD$Pj菠f|$u f"FhL$Qj@荐f|$u_f"V0^YT$Rhwf|$u_0f"f^Yf"_ @0~^Y談面面V"f=Vtf=fuMW~;sSIff;r[;s+刮3積蜩f鵯_^蜊^談面面面面面"f=Vt f=ft虍f 談面"f=Vt f=ft蚰f@談面V驤8u^Ff=Vf"tf=ft @^淡$(,0^談P匕談面V驤8H0~^談面D$VP驤CH0~^面面面面面面D$VP驤CH0~^面面面面面面 D$PSX UhVL$H T$PL$HWT$PL$Hh~jWT$L$菁 |$ FFL FVF `F N F F -FtV|$tN|$tF|$tN|$tNFFFfnl$兎FHu|$+FFHu+NFNHu+UVRF蓁FL0WQ玲橢VhD2P玲箔F照$N粧(V 醸FD$ NP,VD$$蓆j玲5h玲yh`玲玲幟_^][ 面Dd3D$@SUVt$TW33o契f;u_^][L$@3匁Df=u_^][L$@3匁DfF 2fFD$P"V;tL$$:uL$QV;tL$:uT$RV;tL$:uD$PV;tL$:u荀fF 蕀ffF"X叛先$f均f鏡fV$fF&F(F)F*莇F+莠F,菻F-蓙_fF.^0^:^;^<^=^>^?^@^A^B^C^5^6^7f^8^][L$@3匁| DL$P_^][3霧 b D面面f"F談面面銘面面面面面面面V驤h0~^談面D$VP驤mh0~^面面面面面面D$VP驤mh0~^面面面面面面Dd3D$@SUVt$TW33菴契f;u_^][L$@3匁j Df=u_^][L$@3匁J DfF fFD$PrV;tL$$:uL$Q蕚V;tL$:uT$RQV;tL$:uD$PVV;tL$:u蔬fF KffF"荐叛先$f均f鏡fV$fF&葢F(蒻F)蒡F*F+ F,"F-8fF.^0^:^;^<^=^>^?^@^A^B^C^5^6^7f^8O刮NDW相VEG争$FVONFW相VGG争$FHONIW刳VJG争$FKO痩NLW相VMG争$FNO痩NOW相VPG$FQO煎NRWVSG潜$FTO_NU^][L$@3匁 DL$P_^][3霧 葷 D面面面面面f"F談面面銘面面面面面面面Q$PjB蔆t $T$ 3Y Y面面VD$qPjC玲t0L$QjD玲tT$D$L$曹 3^ ^面面面面面 SUVW|$ Oh3nSUD$L$ 莎 T$ R]\$$/uD$ t =tM8_ tM8_ tE8_tMWVFFFF `^ F F F -^8_tF8_tN^8_tF8_tN8_tF8_tN8_tN8_tN 8_tN@8_tND$fFFP:ul$+FFH:u+NFNH:uT$+FRFP玲NT1UR玲uFL0hQ玲`FN笑$粧(V剰N V,FGFO節 NGFW説 VGL$QFD$\S玲ら玲]_^][ 面面面面面面P談面面P2談面面Vt$+$uP^uL$+面面礎面面面面面面0d3D$,SUVWj揶D$D$PT$Cぢ操Ac A 漕 A 漕 A 漕 A 漕  +劍j$L$$ Q漕 WVt$0|$4wP茲D$Pu+~ Pu+D$pu+snIGuffPd$uL$+qu+r蛾D$PIu+vL$_^D$]+[ uL$,3匁0談面D$VWw+u+ ufD$fG$_^%%|%x%t%p%%% %$%(%,%0%4面面面面面面面T$ L$ti3D$ur=tWr1t +u帆帆痩t鵯t uD$_D$SVt$ W3;uWWWWWBF t7ViV懈5VP/}F;t P\Y~~ _^[j h0=M3u3;;uWWWWW F @t ~ E粫VY}V.YE簀E誥uV<YUQQEEE ESEVufF tNMEWEN t0~t);sWu6})~> +};]rZt V(Yu?}t 3苧u+WuV莚YP1# t;wM+;s9N E+3哇u 4EVP萼YYtEFKEE2E_^[秒N 觚j hP=iE Eu3宣b339u;u蕀0VVVVVw誣39u;tu{Yuuuu u~E簀E E粫8uYj hp=蒂3]3};;uxSSSSS蒡3宣y3u ;;t38;t毎a%E;u 7詈]8u #jEPhdQ& 襭PuVWy"E簀E E粫tu蔆Yj@t$ t$ - VW|$ 3;u茣j_VVVVV8-萩&ht$t$蒡 ;t3宣z_^; du鹵蝮&面面面面面UWVu M};v;r=tWV;^_u^_]7(u痩r*鵐$`悩r $_$`$_(_T_x_#FGF痩Gr約$`I#F痩Gr鵐$`#痩r鵐$`I________DDDDDDDDDDDDDD$```(`<`E^_秒E^_秒FGE^_秒IFGFGE^_秒t1|9u$痩r 鵐$a$PaI悩r +$`$a``aF#G痩r拐鵐$aIF#GF痩Gr鵐$aF#GFGF痩GV鵐$aITa\adalata|aaaDDDDDDDDD D DDDD$aaaaaE^_秒FGE^_秒IFGFGE^_秒FGFGFGE^_秒j h=7eu;5w"jh'YeV茲4YE簀E E粫CjM&Y=Tzup>j荅<h菴8YY仝uD$u@Pj5Tz8Vt$u V]YuuF胛Vj5Tz8^Ul$S8VW395Tzu葹=j<h08YY仝u;t搭3@Pu U葆;Yu;u3G苣WV5Tzu&9}j _t U>Yu88_^[]U葯=Yz 3]j h=莪utu=uCj葯%YeV蔡&YEt VP 'YYE }u7u j莇$YVj5Tz<u蔔,P莪Yt忠mVjhd驤=^断`>V馭R>D$tV莠Y^Vt$驤=^U u莽<Ytu/Yt翩猪u宵uu u玲bhL@YVM$=h=EPE?@t$Q蓆@YYQm@YV驤D$tVY^t$QKBYYQAYD$ Q PxCYY@D$ Q P]CYY愨D$ Q PACYY3疎A素疎5}EYtjX9jjxD }CV5}蓆Dt$ 韆wDYY}^5}萢DYU}tuuuuu 9 ]UVuW3;}}}u菫 j^WWWWW0: 鍋lSj$hV蓆] ;t*C; |;s | j^0&|(o@va j^WWWWW0蒭 鍋 蒿QEPUYt WWWWW EPUYt WWWWWd EP7UYt WWWWWI E H;|nvdE+EPV]M韆/R;YY}9}rV萼QYcE)EEPUV蔔Q;YYGF 9PV蒂Q;YY*9}t3VQYt(MEE+MU霰F E+MWjLVju P<諳F~ E FEFEP<E tM\zE仭jdzhz lz=`z茗.Ys;Cu 蓖.`^Hl莨\u蓿V}蓊?詭蓚[| eY|j_1Yu u薔蔔X詆3;u59=u u9=zu茱29}u{菷X}?W.juY)?hjgU;YYV5j5}x>YtWVq?YYDNVYmuW荳AY3@_^[病 j h >莚 ]3@Eu 9ue;tu.゜tWVSE}WVS萠EWVS蒄Eu$u WPS菽WjS゜tWjStu&WVS~u!E}t゜tWVSE簀EE粳E PQ^YYe菁E3先 |$u^t$L$T$ 蓁Y U}}M 痩f鐇$ffGfG fG0fG@fGPfG`fGpIu}]U}E3+3+u蔬Eu莪  3;|;r!8m WWWWW蒹詆帆k( L1tP^Y}D0tu葭YE粳 ME E粫u葯^YD$V3;u葫VVVVVQ^@^Vt$F ttv4f 3YFF^SVt$ F 3u?ft9FW>+~,WPVxYP蓼 ;uF y瓔F N _Ff^[Vt$u V3Y^VYt^fF @tVP菽`YY^3^jh`>,3}}jdY}3u;5+98t^@ tVPVuYY3BU+H t/9UuPPYtE粳9}utP5Yu E}F3u燹4VbYY断E}EtE樊j莊Yj h>R39uu V Y'uYuu茣YE簀E E粫[u荼Yj萍YD$PuU$X(d3V]|ux}tfff]pfElfehfmd規E@jPEjPoEEE E uEdj`EP\u uj_Yh XPT3^C敵秒V5um7t$ 韆6YYPu^5uL7YU]虧U5u37Yt]j_Y]薑3PPPPP萸U]蘆D$3;hdtA-|Hw j XldDjY;#宙8u湖e宙l8u股e V蒟L$QY韆0^宙;8uj X宙L$3醒Vt$3;uPPPPPjX^宙3^宙7uj X宙xL$3醒Vt$3;uPPPPP莽jX^宙M3^淡e叩Vj^u;}藤jPLYYujV5LYYujX^3匚e+  Xh|j^3匚eWk(汰t;tu1 BHf|_3^宙懸=zt]5蓁YD$購e;r=8hw+疏P萍Y PhD$} P茘YD$ PhD$購e;r=8hw+疏PY PlD$} PkYD$ Pl談面hvd5D$l$l$+SVWd1E3PeuEEEEdMd Y__^[]Q談面面面面面面面t O3 0菽O G3 0薐面面面面面面S\$ UVs35dWD$D${t N3 8oN F3 8_D$(@fk L$0T$D$L$ St^DmL\D$t怦 斉D$|DLD$u|$t$t N3 8蓙N F3 8葷D$_^][断D$詁L$(9csmu*=t!h葆[tT$(jRL$,^ D$,9h thdW疲` D$,L$H t N3 8LN V3 :HN+I;N~WPu V EM F yM ttk(兪pk@ tjSSQ [#t%FM3GWEPu 蒟 E9}t N E%_[^秒U$蓼d3$V39(Euuu3千t;u'蔗0蒭VVVVVRI Sk(徳W<H$賓}Mtu3(剿u&30mVVVVV蒹蚯@ tjjjVuYVL[YD&2@l39HEP4xt }te(uEueuE3< 樟PM茯^YujEVPL^ 0E+(jEVP^ FE3PPj QjMQPuFEupOjEPV P4$%EE; }jEPj P  4$}EEd<t<u3f FFEMuU<t<u9u蒡Yf;EYE}tj XPE萸Yf;EYtEE(9Eyc猪@%E3}u9(EeMe+ME;(s'UEA u E @E@E}rE+jEPVEP4$EE;E+E;(r蕾}9(EM3+ME;(s1UEAAf u Ef @@FF}f@@FFrE+jEPVEP4$'EE;"E+E;(w 9(E-Me+Mj^;(s,Uuf u f uuf}Rr3VVhQ++耐PPVh蝮p;tyjEP+P5PE4$t u;夐 ,E;GE+E;(E60jMQ(u0$t EeE ,EEuV}39ut j^9uu 荳 +u萸Y'D@t E8u3宣0+E_[3^蓴秒jh>EuZ ? 3;|;r!18 WWWWW詆帆k( L1tP1NY}D0tuu u E粳茣 莠8ME E粫 u{NYU゜S3Vu E]]]韜F> t tjVhe udhV蔕cYYu M ;hV葮cYYu M hV莨cYYuM F> t8t>SSSSS莇huEu uP9at3宣 EuMH MXXXH_^[秒jh>"33}j[Y]3u;5+9tP@ uAFwFP^Y+4VKYY+咽@ t PVYYFb漕j8茹=Y +9tFh P4dYY澄u4茱Y+ Ph+<};t__ __OE 蝿Z}jaYSVWT$D$L$URPQQhd5d3D$d%D$0XL$,3p t;T$4t;v.4v\ H {uhC2eCDe覦d_^[L$At3D$H3疲Uhp pp> ]D$T$UL$)qqq( ]UVWS33333[_^]jd33333USVWjjhgQ|_^[]Ul$RQt$茣 ]U(v vvv5v=vfvf vfvfvf%vf-vvEdvEhvEtv瓏0v∴vduu 税ud戌d檄d(vjJLYj`h\=(vuj&LYh XPT秒U}uu }M痩fofoNfoV fo^0ffOfW f_0fof@fonPfov`fo~pfg@foPfw`fpIuu}]U}u]] E3+3+3+3+ uJuM;t+VSP' EMtw]U +U+]u}M蓴ES;u5Mu }M糂MMU UE+EPRQL Eu }M兪鵐鵑E]u}]VW3y<\huXh8h0蒂_YYt F$|3@_^$Xh3宣SVXhW>t~t WW&Yxi|楙Xh_t ~uPxi|^[UE4Xhl]t$jhhYj h>p3G}39Tzu蒹jh4YYu4Xh9t萩nj=8Y;u蒄 3宣Qj YY]9u,hW菴^YYuW7Y茵 ]粳 >WYE E粫j YUEV4Xh>uP$Yuj4Y6h^]=Tzu3醒仝染#D$HVv 3VVVVVjX^395Tzu葯誚xi3^D$V3;u菘VVVVV=jX^95Tzt xi3^h@j5Tz8寸uL$%Pz%L3 @ …k秘T$+P r ;r3醒UMAVu W+y 日聡iDMIMS1UVUU] ut霜J?vj?ZK;KuB s篇L!\D u#M!J獏L!個 uM!Y] S[MMZU ZRSM兪J?vj?Z]]+u]騒j?u K^;vM兪J;Mv;t^M q;qu; s睦鋏!tDLu!M!1K獏鋏!憾LuM!qM qINM qINu ]}u;M YN^qNqN;Nu`LM Ls%}u併嚥M 篇DD )}uJ犹嚥M YJ犧嚏個 ED0EPz 5h@早H SQ Pz嚏 PPz@ Pz@HCPzHyCu `PzxueSjp 屐Pzpj5Tz< Pzk+LQHQP[\E ;Pzvm…LEPz=[_^秒{V5W3;u4kP5W5Tz;u3宣x5Dk5hAj5Tz8;Ftjh hW;F uvW5Tz<N>~F_^UQQMASVqW3梛C}i0Dj?EZ@@Jujh燥y hWup;UwC+倭 GAH@PIuUEO HAJ HAdD3GFC美ENCu x睦襄!P_^[秒U MASVuW} +Q 相iDMO胛I;|9M]UE;;M鎗I?Mvj?YM_;_uC s嚥ML!\D u&M!操嚥ML! uM!YO_YOyM+M}・}M O?L1vj?_]][Y]YKYKY;YuWLM Ls}u六嚥M DD }uO犹嚥M YO犧嚏 U MD2LU FBD2<3千8/] )uNK\3u憎N?] Kvj?^Eu憎N?vj?^O;OuB s林t!\Du#M!N獏L! uM!Y] OwqwOquuu憎N?vj?^M yK{YKYK;KuWLM Ls}u凌囂M 9DD鈴 }uN狄囂M yN犧嚏 ED3@_^[秒Pz h@早H hQ Pz嚏 PPz@ Pz@HCPzHyCu `PzxuH=~?pj5Tz< Pzk+LQHQP萼V %PzU譟8S3;u9VWU]kB;gJ MDMJ按M]]]uj@39]Y夙]]]鵯9]U凧 :tIE疏H?~j?X美19x;rClE}93e_C;}]M;吉tM;d;V ;1;t筐;]u;鎗I?~j?Y;M9HEE@;u}t! } 林 E E韜 N獏 E EE9xM;吉9F@uU3E;FE;EEeE} u鍄E;u_E;BuWEE;U3_^[秒j6j2j.j*j&j"jjjj鼡jj驪 j鳬j韜jX訃V395Tzu3^叩u/D$=v茱VVVVV詬H3@^W|$ ;tBuBw W蔆Yu`VVVVV葷 =3@ 13_^U\Mk瘰M霑SI VW} 嚴M 操3嚏U 搴S;#U# u ;]r;uS;#U# u ;]r;u[ {u ];r;u1 {u ;]r;uO]u3千 S蓍YKC8tCUt|D#M# u)eHD9#U# uE諛UiDMLD3#u#Mj _G}MT +M饒N?M~j?^;J;Ju\ }&腕M|8]#\D\Du3M]! ,O獏M|8!]u ]M!K]}JzyJzyM yJzQJQJ;Ju^LM L}#} u 林 ;凌囂M |D)} u N狄囂 {MN狆嚴 7Mt LMuN L2uy>u;PzuM; u%PzMB_^[秒UQQVE3Puu菫Yt VVVVVqEPUYt VVVVVV}^u }r3@秒jX秒39D$jhP寸Tzu3醒}8u$hYu5Tz%Tz詈3@U3=uTS<W39-~1V5hUv6U5TzG;=|^5U5Tz_[5Tz-Tz]叩Tz宙t$5|i萃h hthPtt$价t$蔆Yt$jAYjHYV韜 t;t$r^Vt$3宣ut;t$ r^L$V3;u[VVVVV葭jX^叩\z;t3^D$V3;u$VVVVVjX^95\zt `z3^D$V3;u蓙VVVVV`jX^95\zt dz3^D$V3;u茗VVVVV$jX^95\zt hz3^D$V3;upVVVVV蓙jX^95\zt lz3^L$V3;u4VVVVV茗jX^叩z;t3^L$V3;u蕘VVVVVujX^叩z;t3^=th6Yt t$Y'PhhYYuTVWh茲匿;Yst;r=_^th6Yt jjj3醒j h?j萃Ye3F95ztk5zEz} uG5菲 5莨 YYEtm9}r Et倬h鍵$Yh言YE}u(5zj:Yu萃3F}tj!Y宙jjt$ % jjt$  jjj jjj蔬 V蒡 V7VIVfV荅V0TV6OV蒂*VOhQ $|i^QS\$ VW33;itG|wUj茴XY1jXYu =u?hSzU蔕W t VVVVV莠h捷zVj{u&hhV莇W t3PPPPPxVW@t$荵染YHU EVWjY}瑰EE _E^t tE@EPuuu病j hH?萢j YeuNt/\}瑳}Et9u,HJP蒭Yv蔆YfE 莠倬j菎Yj hh?]}39_h(h|chbSG PS蕈E;u3千P萋PY韜 NE8 u;wNjGY]9_uYjqYtKVaYGt3uVPQ 3;t QQQQQ菽GE HKXS蓊Yu粫攫YE G萋}j萢Yj h?hj荐YeuNt/\}瑳}Et9u,HJPuYvlYfE W倬j]YUf}uE(uh|chbuu u茵]j h?菁}39_h(SG PS茱E;u3千P:OY韜 NE8 u;wNj荵Y]9_uYj蒹YtKV萼YGt3uVPuO 3;t QQQQQ7GE HKXSWYu粫NYE G:}jAYjh?蒂jYeEpt~6V蓼YY諞E葢j蓆Y談面面面面面面T$L$u<:u. t&:au% t争:Au t:au u3醒積苧t:u t樸tf:u t:au tU$X(d3jVtj YEtj蒟GYj]|ux}tfff]pfElfehfmd規E@jPEjPHE EEjE@uE`EP\j]L$^jT$#T$# jV5j5t!ヾjtP5jth8th(Pt t$D$D$^jYV5j5t!ヾjtP5jth8thHPt t$D$D$^t$5j仟ヾj5ju5}^YP5jt$t$5}YW_仝jt jP%D%Wh8u 菁3_V5hxWhlWD}h`WH}hXWL}=}5P}t=}t =}tu$ヾH}}5}P}8j5}PL5}萪5}D}萃5}H}茣5}L}茲P}?teh 5}蓖Y4jtHhj茹YYt4V5j5}莠YtjV茣YYDN3@_3^_Ul$d3E`ElSVu|3}pWEuSh}Qux]utPz;uW,zukSSSuxutu懈U;EtP3FVP葩;YYt>SuuWuxutu懈#;tjV莅;YYMu!9]tWイYM`_^3[xd秒NQWVPEt SSSSS9]tWMY3宣9]puSj尽}WuxutP$t驚PYt ,0GG}|晞D$}宙g L$宙a L$宙[ L$j,h0@3]]]]]]j茫Y]* EEP6 Y;t SSSSSHEP莖 Y;t SSSSS-EP萍 Y;t SSSSSE~=j=jh#Yu;t|8tx~;t!PV:YYI~;tP蓁YVJD@P荅YY~;VV-DY@P5~茯D ;SSSSSj蜥~;t PY~h};3A ~÷}k-uEFV蓍YiE<+t<0|<9F謠3uj,Y>:u8FV茣Yk<E粳<9F<0}>:uFVYE粳<9F<0}9]t]E;t#jVj@whAtSSSSSnGu粫0U e} SVW}%yH琵@Eu jd[ult 徳8s 徳sE +_jd_FjEU}+G汰im%[Ek+E;Ut}}u jd[ult E 3[_^秒Vu^t$V茗YY#^D$V3;u%VVVVVjX^ j3^D$V3;u蔡VVVVVijX^ j3^D$V3;u莉VVVVV5jX^ j3^UE S3;Vt:9]v:;tW};t E;t@t;gj^SSSSS0葯馴U9]t捺Gj^SSSSS0萓馴64hk6:@9] Yu3宣;Evj"X6uu ~: _^[]淡j淡j淡j淡hk談面WVS3D$ }GT$懾D$T$D$ }GT$懾D$T$ uL$D$3哇D$嚥AL$T$D$刹凅刳冽 u頷d$D$r;T$wr;D$vN3Ou暄[^_面面面SW3D$ }GT$ 懾D$T$ D$ }T$懾D$T$ uL$D$3哇D$ 3OyNSL$T$D$ 刹凅刳冽 u備d$d$r;T$wr;D$ v+D$T$+D$ T$Oy暄_[UQSVu3;]ucj^SSSSS0蒂鍋j$hVE ;t;} (j^0誂WiyF3;|+B;|+噺B;|B+秘EVQsFi9]u u-9D$t'9~vV;~vu_^Q蒄YRQYYRQLYYjTh@茹3}EPEj(j ^V萪YY;5)@@ x@$@% @& ( ;rf9}E;8X;E筝;|3FRj(j QYYtM  &@@ ``$@% @& (;rF9=|=e~mEtVtQtKu Qt%uN@ uNhF Py#YYt7F N@Cg53宣3@e菁E莵VW>t1t G P(;r6}&Y|_^S39VWu蔘5u3;u<=tGV1Yt:ujGW0;YY=|zt5uU@Vm1E>=Yt/jU;YYtJVUP蒄1 t SSSSS8u5u萓u3Y]_^[5|z|z諢D$zUQMS39EVU t ]EE>"u39E"FE<tBU 驚PF#Yt} t M E FU Mt2}u t utBe>< t< uF謫N諠>}t EE3C3赴FA>\t>"u&u}t F8"u韜 339EE刮tIt\BuU tU}u< tK< tGt=樟Pt#>Yt M E FM E  YtFU FVtBU ME^[t 秒U S39VWurh~VS′;5zt8EuuUEPSS}E =?sJMsB燥;r6P7;Yt)UEPWV}萢E Hpz5tz3宣_^[秒QQ;SUVW=33;j]u-;t ",xu 釘;;u;u3千f9tf9uf9u=pSSS+S劍@PVSSD$4;t2U`;YD$t#SSUPt$$VSSut$sY\$\$V昼X;t;u;p8t @8u@8u+@U蔕;Yu VDUVW' V_^][YYVW = =;st;r_^VW(=(=;st;r_^鍛D$ lV9tk t$ ;rk L$^;s9t3醒UQQVnuu \MV\lW}S99tk ;rk ;s99u窓3t X]uu \蝗u `3@蜉N`MM N`H l=l;}$k ~\d9=llB ;|]=~du Fd^=u FdN=u Fd>=u Fd.=u Fd=u Fd=uFdvdjY~d`QEYF`[_^秒csm9D$u t$P|YY3醒UdeeSWN@;濃t t 丕d`VEP@u3u3D33EPE3E3;uO@視 u徳 5d5d^_[秒j h@ef(素E#E=t =t3醒3@eeEE粫U3SEEESX5 PZ+tQ3E]UM雜UE[Et^t3@3[秒h3醒D$VW|Z;sRk(帆<<u6=uS\$utHtHuSjSjSj3[莟 莵 _^L$S3;VW|[; sSk(疏<迩@t58t0=uu+tItIuSjSjSj 3宣0 8_^[D$u!  V3;|";sk(鎗 走@u$葹0菁VVVVV ?^^j h@蓚}覗k(4E39^u6j Y]9^uhF PhYYu]FE09]t覗k(D8 PhE粫3}j 莪YD$k(鎗 D PljhA)M3}j Yugj LY}}@A4u;Fu\~u9j Y3C]~uhF PaYYu]樣Fe(}u^ ShFtSl(}uj 莢Y}u翔F+j(Y倭E}uyG&j(j lYYEta  ;s@@ `(E琺歔}覗k(DW萋YuME E粫絅j 蓖Yj h8A3}2椁E t fE @tE tu;u,P'Yu@u蔟u u蔆葫8訛}uVYY徳 k(\T$" D$ EE9}i鍋eu 39}u徳k(D V,YjhXAuEu 薨3;|;r蕀 SSSSSs誂帆<k(LtPY]Dt1uYPu ,E粳]9]tM} ME E粫陦uKY%jhxA3]j菁Y]j_};=}W漕+9tD@ tPEYtE|(+ P+4gY+GE E粫HjRY談L$f9MZt3醒A<8PEu3fx 礎面面面D$H<ASVq3WDv|$H ;r X;r (;r3_^[jhAzeRsYt=E+PRYYt+@$争E E3=礎e菁E3先`UQQE VuEEWVE;Yu茱 恚JuMQuP ;Eu,t PY誅k(遭D0 EU_^秒jhAuuEu< ! 帷3;|;r!8蔕 WWWWWp詒帆k( L1u&蔆8莊 WWWWW/鷹[P蓐Y}D0tuuu u茫EU琺i q8MME EU琥u)Yuh|YL$At I AI AAAAaD$u葯 3醒V3;|;r菽VVVVV ;3^k(鎗 D@^Ud3EV395 ltN=tsu茹tsuf pVMQjMQPug= lu,xu5 lVVjEPjEPVPp tstVURPEPQtfEM3^g秒 l諠jhA3u39u;u$菴0茱VVVVVKuEjYYuEMtEP萸YEf=uME E琥j葷Yj hAsj莖YeuY契E簀E fE粫jYD$V馥F uc葯FHlHhN; mt xsHpuwF;rtF xsHpuFF@puHpF  @F^y tA`p礎USVu 3;t9]t8uE;tf3^[秒uM韆8E9XuE;tff8]tE`p3@詈EPP菫YYt}E~%9M| 39]RuQVj pEuM;r 8^t8]eMapY*8]tE`p:39]PuEjVj p:觝jt$t$t$蒭Uu M韆2EMA%}tMap秒jt$菴YYt$ht$ | ht$蓐YYt$jt$ X jt$菲YYt$jt$ 7 jt$茯YYt$jt$  jt$YYt$ht$ 蓿 ht$bYYt$jt$ 萠 jt$AYYt$jt$ 茘 jt$ YYt$ht$ ht$蔔YYt$hWt$ b hWt$菻YYt$ht$ ; ht$茫YYt$j t$  j t$YYf|$染愧t$ht$ 蒟 u f|$_t3@ht$GYYu f|$_t3@t$ht$ u f|$_t3@ht$YYu f|$_t3@U(SV3椁EWj]]]E ]_t ]狷E E]EP茴Yt SSSSS萇EP蕈Yt SSSSS莅EuE@u9EtMEjZ#+湛t>Ht2Ht&2j^SSSSS0E宣 E@ME+t5+t(+t+t@u39MEUE E]E#孫;>t3;t/=t==PE/E&E=t=td;EM反tXz#Ux3G@tM}uMft tE襤t蒹u萼荼PESWu霰EPuuu (u46k(遭D0 ,PY[蘢W;u$6k(遭D0 W觚uM@ uMW6蓖k(霜YYMLk(霜D$ MeHMEtqjW6p ;Eu荀8tM6:jEP6]菴 u}uERP6蓐 ;tSS6 ;t竃E0@M@uE#u } EE#;tD=t)=@t"=t)=@t"=t=@uEM#;u E]EE@]E#=@=tw;E;yvv0fE3H&HREEjSS6j tSSS6Y#jEP6\ utk}鏤uYE蛔E;bPjSS6蒻 CSSS6萼#E%=u60Ytj^0鍋=uSj6% 箭EASS6 E鏤EE+PD=P6莊 9}k(鎗 D$2M0k(鎗 D$M痩節 8]u!Et6k(遭D0 _^[秒jhB菲M3u39u;ueVVVVV葩ruuj@u uEPE粫jE槐E};t<8訖39ut+9utE篩Mk(D u粫寞YE粫gjh8B3u3};;u莟j_8VVVVV*萩Y39u;t9utE%@tuuuu uEP蝿E倏EE;t萠3}9ut(9ut帆k( D 7YUQMjEPuuu ut秒E秒Ujuuuuu 蓚]UVuM跏首U3;u/VVVVV}tE`p虱S] ;u/dVVVVV蒂}tE`pE9pu$EPSR茲 }uMapiWf 敬具BDUtY:u3ljpMjQjJRWp EP葭$ufEfEfMf操fE倹E韜継 At f倦健f 敬均CDtU;u3赴hjpMjQjKQWp EPJ$ufEuHfEfMf操f携EC継 At f敬景f;u,ft=u5jh1$3A;u 莚,Eu +trt tHt#Hu5.YE;tlV茣^5YE;tLV>5蓆YE;t,VtD5萠YE;t VT8YE}uU鷹B]jqYt.t) t$~~莅3PPPPP$"j hB萸3}}] LtjY+t"+t+td+uD蒂}ua掌仝`w\嚠Zt<t+Ht3PPPPP覡樟\昭ー 渉…EPEY3}9EujM9EtP:Y3Et tuO`MG`u@OdM佛Gdu. lM ll9M}Mk W\DE樣梭EuwdSUY]}}tj莢YSUYt tuEG`uEGd3先rD$LUVW5l$3;Yu莇j_VVVVV8/秤;Suh0;u{j_VVVVV8蔗秤hS;u/K=,PVVVVV莊P蓍YJWxY韆啅VhD$,;D$tS(jUu蓙 葩3[_^]U SVW39E]]]h0;u3千Y5h|W;tP蒄$lWPP菎$XWTP茘XEP蒄YYt SSSSS}}u,h<WPx;Yth$WP`Y+u;tm95teP茗Y;t%MQj MQjP5YtEu3EP蓿Yt SSSSS蓴|}r M :M1《;t(P>Y;Et『;tuP"YEuu uu5Y_^[秒D$S3;VWt|$;w~j^0SSSSS}馴=t$;u諄8tBOu;t BF:tOu;u菻}j"Y驪3_^[USVu39]Wu;u9] u3_^[];t} ;w}j^0SSSSS }馴9]u詈U;u誄}u @B:tOu鼡 @B:tOtMu9]u;u}uE jP\Xx}j"Y驪面面L$t$tNu$$~3tAt2t$tt詬AL$+礎AL$+礎AL$+礎AL$+礎L$S3;VWt|$;wg|j^0SSSSS葯{馴1t$;u諄BF:tOu;u+|j"Y驪3_^[L$V3;|~ u“u^叩u u^宙{VVVVVf{^D$Lu叩ujhC~3]3;;u茱{WWWWW{S=u8jY}S"YE;t s u粳u簀E%9}uSW5Tz4捺}3]uj菷YW|$8csmu*xu$@= t=!t="t=@u=Vt"5YtVIYtW幃3^_h葺`PdY3醒=t5KYP` D$D$A3AAA V~tF v FVYFF u^ u3醒0|9沼/A 3宣!tA|+P&紹操AD @uA@ t SUVW@39_u A A|Z~o$2A B$,Q:PuA 尊 kh$\A uAA 迩 t %i道t# 萩#t@t!t 3t%?3%,t 狄 % t %@# JJt&JJtJJu% 蚓% 蘓t% 薔#忠/_5AM% 5A <0|<9樟D傳 ( O向蝠 蜍CJJ 奩A  0峠t# 萩%t %  % t %t8JJtJJft%?R%Kt 狄 =% 1t %@## 萩% %  |A :08A紹 J%練$tt % %t %@蛉% 虔t % %t 狄 % t % %t%?k%d% 馴[% `O% C% h7% p+% x9uA 口 3_^][恢暹Q統髱*叩刪叩争叩争叩争叩争叩`3<`礎争叩争叩争 叩%叩% 叩%@叩争叩%叩争叩丿D$0 u@@VW|$ 苻|$tWYdwj_F;SsE;w8jh轟莠t 3tN tF+F ^ 3宣+FF ND[_^ `L$`L$Q曹霜3PV1PQp33Pq3 3pQ3@3Pq33p3Q1PQp33Pq33pI33H^A操遭a霖HA争IA争A争IA争 IA争 IA争 IVp料鎗tubL$Q曹霜33Pq33pQ3 3Pq3@3pQ33Pq33p ^39 醒T$ wt ;DA4A,`!AL$tPtVruJ^HL$`!H3@AD$t|$tI3逝A T$`卩!tJ早鎗tu3PL$`!HujY3H A y線 38t@A9u|$L$ttABL$uD$|$u3醒t :uABL$u +礎U3標!E!EQEPQEPuMM韆);E秒U!E!Ej3EPQEPuMM韆:E秒t$ 轟t$蔬|$Vt8jj 轟葩t t$疲3瓔3F1Ff&f^VW|$ t t3宣N31Njj轟nt W疲j3fNu 癈N_^A操遭tt3醒3@9t 萬t3醒3@宙uA t@3醒菻uI 宙uA@t@3醒W3茘uV1 vu^_VW3u&1t tvut _^`_2^UVWLul9EujFV轟UEtWu ES7E /~/t+yWu Pt+} vuE [ }tEE_^]Vr<t L$uA操遭33B^VW|$ tQtLF帆鎗tuVj%j轟Ft W疲{3u*F瑰FF&t 33N_^VjN,jN4^V> t9L$萵u,Pj轟蔕t t$疲3tD^SVWj場j 玲蒸t&jj玲t `83P毎m3_^[S\$VW|$3;F!u;t738tG8u;t';t#PW轟LF~ tWP嚠YYFF _^[A tID2醒A T$;~I3;t9D$t;tRt$刪5YYIt蝨3醒It2醒I3;t9D$t 9D$t-A T$;~3yu9D$t;tRt$"菁YYUVW驤2~<(E  E3;tUJ  EE= _5 $^]U譟 8@u uM 蒡 uOCYYE]t$\D$YVW驤|$ u[tVtQjj轟t W疲3t茗tW疲鬻&>uF瑰FW_^VF帆鎗tuM|$t=j%j 轟Ft t$疲鬻3uF瑰F j玲1^VF帆鎗S39t j玲oW|$;t\L$;tT+t-IS轟t,j;tt$W蔡3;u/F瑰!j a;tX!H誑瑜F_[^V&f|$t jD$ P:^D$Vf3;t38tA8uQP玲 ^USVfF3W};8:E tK<_t<<$t8<t0<-t,u F瑰F_^VjD$ fP^D$Vf38tA<uQP玲戍^UQQ 樟A  wn ee刮剿tF珱t+jY+t!+t+t+t u&jj j jQj$PMQMEP菷jjMvE秒U譟 MtQMuFE"5 :uMj菴<0|I<9E/F9MR5 PtMPuEP M粫MP茣藉SW39t^j謦M葆'9EtM粫fPuEP_ MLMP蕘_[E^秒U ee樟石wt$h\"hT" hL"hD"M  1t HHtHHtHHuEPEh8"P莠 PMzMEPXjjME秒eellszzU譟 XHHtpEP蕚EYu[ tP<@tFEPM莉PM\ 8$u j^EPMPM3M MEPEBE %+Ej>MH}uE 8&憎畴^E  !p^秒U譟 (8W 9}3u5Ej]PEjPj[M蓙疲助疲滲Pu0YYE_秒eeVu Ft hM茯j]EPEjPO蔘PEj[P'疲PMu玲7u:FEPEPuj)EPVEj(P蒹 疲A疲PPM葫EPEPI3MYYMEP茵^6M 萇Ej]PEjPh"EPQEj(Pr 疲蛞Uj'uEjPPEj`PA疲E秒jt$蓍D$ YYjt$蒄D$ YYjt$菘D$ YYUVuu 玲瑯玲 8EP荐YVEPj EPM疲#P玲玲 8@h"c th<@tdj'EPEP菲PEj`PQ疲P玲 :@uB 玲=t:@t h"x玲#u玲t 8uj|j}玲灌 8@u(  蓊tVEjP葆 P玲睡^秒Uu M葷  <@uo  <_u^ EjP*EjP t@t @ u8u H jM@ EP jM菁E秒UQQ u Mj荐/秒Ul$ S3杞!Mh!MXV3@A]d]T _;</:1~[9,@4Md`MduPELhP PMd萸EdMtP莅Et^[l秒!MX8]x]Tt_EPPEju j MTej>MT[E|;t 8uET@ E4SPYYPMd9Md5 Ku ~1uPEj~P PMdMT'PMdJH jMtBZ_@O DD9gtC;t/「6~!8@48 Mt@48 K@48 M\hM`E\]?t/@~@BナCu2jhE\PH M`訥@;烹 0tj蝴Sh"詁TSmPRI屑Iu@4 Md 4MT蓍  01t'昔wETPutMd莉 ^ETPE\PMdj,E$PEPY疲pPM\mj,EDPEP蒿Y疲PPM\Mj,EPEu j Md葯j>Md蕚}|t MxEdP5=荅_^[ MxjXExp秒U8d3E 省Vu0 uw!@Q  蔡P玲O鍋ee?uHEjPHYYPM粫8 @@ .H3稗 8AQM粫SW#j[t :uFGKu7+u,#j [t :uFGKu7+ EP驤f@YtKjEPM樊LEPbFP YYMtP萍mh"萓h"EPEPE倬h"M粫≦h"EPEPEVPY 疲PM粫nj@h M俶_PM粫_[} t 9 t EPMEP荼EM3^蔔5秒UVu&fWEjP蔬YYP玲F$#u9 t.<@t5VEPWEPEP菁Y疲繹疲薙P玲P <@u ]tF&tI瑜F>玲7t j*VEPWEPjM疲u疲VP玲獨_^秒t$D$YU譟S帆3棊C#Vtft3曄 e!u TtSHtIHt?HtHt HuQhd#BhX#;EP揶MPEhP#PPM=hH# h@#h8#Me!ut EPM韆 EPBYEPM韆QMEP蔆M h*#E^[秒U譟 8?u(@8$u ju莖 jju 1 ju葢YYE]Uj荀PM 8tG@0 t*IItu:Mj蓍GEPxYPMhd"Mt jMht#M[MEP萵E秒UleV!uW萓M EuMjc蝙 uu ju莎 蛛 uu Mp乕 }eSs3}e}3E;t%#;t #;99Ut%#;t#== f@tQ煩蝸剿t,争丿t#EPPPEj P荵PM樊峻EP-YPM樊3M;t%#;}EjP(YYM EPEPj{EP茣疲秩PM樊EPzYu+h$EPEPEj,P 疲PM樊mh|$M樊YEPY煩蝸剿I帆剿91EPEPj EPEPEj P茵 疲疲 蝠!u!u!u!u!u;UUUUUt%#;;tm%=u4EjP蕀YYEPM呈9EjP萵YYEPM匁 ;t'%=uEjP莎YYEPM跏麭EjPYYEPM取斷39Ut>%=t0`<`EPt荵YPM壽σ茯YPM壽釀煩蝸剿t-争丿t$EPEPEP蕣Y疲凭PM樊ZEP葯YPM樊M ]u;M樊Qu$uu Ej P PM樊i u M樊!u39]]St4EP+PEhx$PPM樊*ft5蝸j轟蔟t !!p憺3ESP葮YYPM頑ut%%%=uUj,EPEPEPj,EPEPEPj,EPEPEhh$P[ 疲s疲疲e疲t-t;%=u-j,EPEPEh\$P 疲(PM樊% hP$M樊h$EPM取-PM樊j)EPEPXPEj(Pu疲凰PM樊麟t%=t EPM樊異争丿EPt菷YPM樊莊YPM樊y争丿skEP毎E顔Ou M樊FE盛|#huEPu莇YYuw#ptug#`u=PEPCYYh|$uEPEPj{EPM樊梅疲巓疲艤蕋u#;uEPu蒟t%-%`@t%#西t E#+囓Bt h,$蘂}t %-%`@t%#t!E#Bth#P}t %-%`@t%#t)E#Bth#M樊}u#=xf}t%-%`@t%#tEM#3=託uM3=託tEPEhx$P蓆 EPEPYYPM樊39U脳`t#+昼#送@;/争 丿49Ut#+昼#送@;tB9Ut%-@3@;t#EPEh#PI PM樊`Ut%=t#+昼#送@t%%t#+昼#送@t%=tJt#+昼#送@t%=t%t#+昼#送@t1%=u#EPEh#Po PM樊-`争丿Ut#+昼#送@t(t $,@宣#+苧@t EPh#{t#+昼#送@t+t $,宣 #-@t EPh#9t#+昼#送@t玲vt j葫*VE\PWETPjMd葩疲間疲P玲_^[t秒U譟 0uu ju 6|9~_tMj~蝌S訟6@) u1t訟=@ |#u ju茯 藉|~uMjeVWu !uM?EPEh$#Pn PM, 8EPt%EPEPqPEj P蔟疲iEjP PM萵 <@u~ `<`EPtW菴YPM韆刪丿t`EPEPEP蕈PEj Pi疲柝PMdAhYPM韆襷jfEPjuP XEP荀YPMz刪丿t$EPEPEPY疲iPM蓿EPxYPM6M 蔘u(j)EPEPEj(P莅 疲 PM荅jj轟萵t !p韜3EVP菘YYj)EPEP9PEj(PV疲禾PM莚`<`tt EPM争丿EPt茫YPMrYPM\tEP玲MEP菻 jM_^[E秒UT SV!uW3}榮E<<$u3uEPEPEPM粫uMPc| 3 <@X刪丿t4 < uG9}9EPEPEP蔟Y疲睫PMk < uEP萪YPM荐tEPEh$Pn PM,tEPEh$PK PM 9}u|U 墓uKZu4Mu(REPVEPQEVP菴 疲疲*)RyM茘#M菽uQEVP PM蒿M}tME蜊9}uhU 墓uKBu5Mnu)RuEj PQEjPH 疲疲)Rju* M)uQ謔jME_^[秒U ee!E!E堯tt8?u\@<@u$ EPPEh$P葫;<$u-EjPYYPME$<u!e陦 EP莖YPMZE操遭u3隻t#fu 8uEPM韆"5M韆yu%M韆l@璋PYt>5MP倬 u@ B@8 t B@u秒UQQ <6|<9~<_u_VuMM uu玲uFu u M茫玲fu VMEPuYY^ju EuuP=3}*PEPu蓐 cjMuM萠M 蔔u QM*M葢u!M 葷u j MuM蕘MEP}E秒j*t$t$t$蒄D$jt$t$t$莠D$j&t$t$t$茵D$hh8C(0}3;u3宣xjBYtjOCYu=Ep555EPVuu ul茵l萼E箙E E粫/j蓁AYhhXC/}3;u3宣xj蔘AYtj茗BYu=Ep555u uuu ul蕈l2E箙rE E粫@/jJAYU譟 $SVW  e遇!uMGt;C$Jh8%薔h0%蘂h,%h$%h%NO}Sm_k  E鏡ML}tGLF}=$t声h%u EPPh %u%8h%蛻H|}I~Ksh$蚣h$蘚h$藥NOtUWtI凄w:E P荵YPM|MEMPJ薔h$_h$Xj[u e!uM跏"MjEPEPEPqEu hM粫VE粳h$MT2"E樒JhD"M6h$MoCtMjY+t8+t4+t0+t,uSEEt+t +t+t+u:EPh8"E樣EPh8"E粳 EPh$EP PMGM _満QEj P PM}藪M 2t8t!h$Mct!h$MAt h$M=j*EPEPu u ju萋 E_^[秒GGGGGGGGGUV5 3匚!M+U$tlt8Htu uOYY蜚h$MM Ju j M u M韆 Mj&EPEPuQ蘂F<$t:Mj|FF5 +teAtIHt0Hu!MREPRu EFP5 U韆択Pu=ju Fu5 e$u Fu5 Ku jub E^秒Uu M 3:t}YumtVTY^3醒j hxC^&]陝xsFpt"~lt蕘\pluj 萪JY捺q&j k9YeFl=miE簀E訌j P8Yu簔VW荐\HpBBT$ t:3;t;t'ts#VVVVV蓚"癬Hp xs_^叩mH DH H m @u xu t|ujhC/%u3;toF;tPuF=mtPHY9>t7j ?8Y}6Y;t98u=mtP莊YE 隲FV蕣Y蔟$uj 蕈6Y忠ej hC$J[jj菻oYYuu(" 3宣@蕀茵GlGhFj 7Ye6dYEv捺j$uj q6Y忠s3醒SW|$3;~/Vt$6t$t$m t SSSSS葢Ou^_[USVW}h3SW菽u  u3千<.u4F8t-jPjP}t SSSSS訌hH&V] \;忠} <0u@.PVj@u=} u@sy_ttPEVj@@ } ubs]t,uTPEVjP葢t3PPPPP蓙,%E whH&Vs[YYV_^[]USVuVu u菷 3t SSSSSF@8tPhP&ju uU8^[tPhL&ju u3]S3ChU\$7mYD$JUWxn\$]H3h5%jhQW葆D$ %hT&hQWS t3PPPPP菷uX3+TYYtd$D$D$D$ 操,0D$ ]H3h0jhQWh|$ %|39l$uBFP;tPu vPYFT;tPu vTtYD$FP~H萩Gt$\FP;=YtPu vP?YFT;tPu vT(YFhnPnH_nLnT][Ul$豐d3E\ElSVuhW}tEEx}E先VWH(MH,X MEj}`}pV>CuL~uFhX&upu呈{ 3t VVVVV=;t f7fwfwE;t0E堤V茣;YEs"Vu疲nRYYVu梧[RYYteEVP蕘YYEPSPr^ CMEPWu疲顫 >tE;rE@PVWu梧gt3VVVVVk39utjSu取 9utjuu先 uupu呈Y t VVVVVE秘3M\_^3[=`秒Ul$貭d3EpSW揶Uu|檣P逓PhEPS俳蒿u3千E|操0sHEPQYYoEP%P蕈|iYY紆tCHM|傲D k珱癒1jP戛蔭P~FMQ蕈線紆像QP3t3PPPPP蔘紆珱CH逓j逓P仇 }|檣ヨFG$O 戛V;t6蕈戛向PH向処戛|搭"蕈tPW戛H処uejv蹊vPjh%jjN t63fE蹊@rh5l蹊P蒿r @GgFG}|u 檣FE|k V%Yt1傲灸CH萇 癒Y珱線F藜出lt-E|操<07u7 sTy cLYYM|紆早1CHMp_3[Gt秒Ul$d3EpE|SV3;Wut;t P蒭Y操D0Hz;貿E]c9LyCy_h\&W YY+E;;E%EPW65 u 6蒹9EYtE %~ChT&S萼S3;YYu;;ub}?WSEhP蓍t VVVVV蓖uuM貽D=葷YtE?t G?(39Etju樣`3宣aSSShEPQ萇;tH~Ht'7EP蔘LYYtSM跏uYu!E粳EC~39Eu9Et Mp_^3[yt秒|$VWw%|$t3GWjheYYu菫 3_^WhEeYYu V-Y誑Wh )eYYFu6V Y諄m蒻t$ L$茲Yu6C6vV菻 2vp葮YYt#v莢66BV3 F8F8鍋=jhC13]}v萼SSSSSM3千,莉Ou粫Np]jh3dYY};j ,YENl蝿髑]荀uM 怦YE;9] thlu KYYt (j 荳+YE^l宙国WYFpu2xsu);誇mj『m Ph, e-}u3j _*Yuj S*Y昼WW萠YYE E琥ufp鐫-t"t t Ht3醒淡淡淡SUVWU3^WS~~~ 3~梧m +  CMuANu_^][U$dd3SWEPv8誠3@;rE斉 t+]業;w+@P j R葆 CCujv EvPWPjj蓴3SvWPWPWv SG/DSvWPWPhv S"/$3LEtLtL @;r窓ME3)EUZ w L wL A;r_3[秒j hD莖iLxsGptltwhuj .:Y捺j 菘(Yewhu;5rt6tVumtVYrGh5ruVEuj t'YUS3SM韆vLuL@8]tEMap鏡ErD;FG;v}FF>uuE}ur{C莟jC CrZf1Af0A@@Ju鼈蜈L@;vFF~4C込@IuC\C Ss3{覯95LM_^3[7秒UjM韆tExt}@tMap秒}tE`p3隻jh0D莅M`I}樊檄_huuE;CWh ]YFwh鵐#Su莇YYEuvhuFh=mtPnY^hS=恂Fpxsj F%YeC\C`C d3E}fLCf EP@謌3E=} Lp@謇3E=}q@諞5rur=mtP莎YrS彷E0j 荅#Y昼%u mtSY蓍eE琥f=ujVY3醒Uu M韆rE謙~EPhu MH%}tMap秒=(uD$ mA%jt$YYUu M韆9rE謙~EPju  MH}tMap秒=(uD$ mAjt$YYUu M韆qE謙~EPju荐~ MH}tMap秒=(uD$ mAjt$YYUu M韆IqE謙~EPju0~ MH}tMap秒=(uD$ mAjt$YYUu M韆pE謙~EPhu莎} MH%}tMap秒=(uD$ mA%jt$YYUu M韆RpE謙~EPju9} MH}tMap秒=(uD$ mAjt$YYUu M韆oE謙~EPju菫| MH}tMap秒=(uD$ mAjt$YYUu M韆boE謙~EPhuF| MH%}tMap秒=(uD$ mA%jt$YYUu M韆nE謙~EPhWu菁{ MH%W}tMap秒=(uD$ mA%Wjt$YYUu M韆dnE謙~EPhuH{ MH%}tMap秒=(uD$ mA%jt$YYUu M韆mE謙~EPj u萍z MH }tMap秒=(uD$ mA jt$YY|$染愧D$t$t$YYu|$_t3@t$萍Yu|$_t3@t$t$莪YYu|$_t3@D$P蒟Yu|$_t3@D$t L$D$t8毫uPGYUQQd3EhSV5HW3;u/WW3CSWth,xu jXhhuuuuu 帷t;u)9}}u E@EWWu=Du u3千~Dj3Xr8C=w蔔yt崘面P茫Yt 毫韜3tSVuu t"39EuPPuujVjuEV萓EYe_^[M3来鵈秒UuM韆|kuEuuuu P}tMap秒UQQd3ElSHVW33G;u,VVWVt=l/,xu jXll;;u#9uu E@EVVuu ;Mu3千~Ej3Xr9D =wx;t嫻面PF;Yt 毫3;tuWuu t 9uVVuVVuujWVupW[Y馴uuuu De_^[M3来顰秒UuM韆juEuuuu P}tMap秒j jt$ z t$j jt$)z忠蛛j jt$ } t$j jt$}=V5|zu3^SWu95ztQN~uH5|zt>\$t6S"Y%P;Yv<8=uWSP蕀} tu3_[^D8謾USV3;u葆j^SSSSS0W馴gE;t9] w誥9] u;tWu3;Yt9W@9] Yt*;E vj"X"Wu u蔟 t SSSSS荵3_^[]UQVW3;uLj^WWWWW0菘馴wE;;t89} tu 茘;YEtUPFjV+ ;u蔟 蓐)uVP] t WWWWW!E;t03_^秒jhPD蕀339u;uVVVVV3宣>Wu}YY;染tj蔔Yuu蓍YE簀E E粫j葩Yj hpDxj荼Y3]3};;u j^0SSSSSu粳wM ;t 9]w ;u 9]u3@3;t;tuTY;t=V茗Y@9]t.;Ev E"#Vuu  ;t SSSSS葷]簀E E粫jYjhDj葯Y3u3];;u4j_8VVVVV茘}粡3E ;t039u;tuYE;tXP葹GjW ;u萪 萇E粳*uWP7 ;t VVVVV蕀E ;t8u簀E E粫jYUHd3ES3Vu9^W]]]]]u] F9u PF0hPESPa=jpNjWE壽NjWE樊NjWE粫NjhE懈{N$9]Eq9]h;`9]W9]NE3M@=|EPv8$}EE~-8]t(E:tx局 M狷 G;~@@8XuESSvPhuEjS莢p MESvWQW@PhvS蓴$ESvWPEW@PhvS萋$U}E}UfM_ZMM~J8]tEMM:t9I巾;!HUfABBUU;~MAA8YMuhQP菁蝙jPW荼蝙EjQP荀蝙$;tKPu@-Pi錮+PV錮+PH錮鏡=錮E塲EEEEEu琥迸Y昼mu壽蜊u樊瘢u粫搓u懈剄3C詼樟;tPx',-3M_^3[r蕈秒蒟6Al;mtxsQpu茱D$u虔宙6Al;mtxsQpuf@宙6Al;mtxsQpu@@宙\6Al;mtxsQpu 談面面面D$L$ L$ u D$畭SD$d$D$[j hD8M3;v.jX3哇;E @u莽 WWWWWG3千M u;u3F3]wi=uK胛u E;w7j Y}uEYE簀E_];tuWS磬 ;uaVj5Tz8;uL9=}t3V)YrE;P E3u jY;u E;t 宙lUQeWEPu u菠 uVut茗t茖0^_秒jhD葮]uu M襞Y虧u u S蕘襞Y薹=3}j葷Y}S蒻YE;;5wIVSP菽 t]粳5V蒟YE;t'CH;rPSu粫缺SESP荵9}uH;u3Fu 胛u VW5Tz8E;t CH;rPSu粫A缺Su琥nE.}u1uF胛u VSj5Tzu ]j蓴Y}9=}t,V'Y咨'9}ul,P葫Y_9}th quFVSj5TzuV9}t4V,'YtvV'Y莇 3先:宙y|u,PLY萩L$V3;v)j3X;D$scVVVVV 葮3^L$Qt$ 茴YY^UuM韆;]E MUTu}tMA#E3t3@}tMap秒jjt$ t$jjt$ jjjt$ t$vjjt$ jcjjt$ t$Njjt$ j;jht$ t$#jht$ j jht$ t$蔘jht$ j萬jht$ t$菁jht$ j莟jhWt$ t$jhWt$ jjjt$ t$njjt$ j[jjt$ t$Fjjt$ j3jjt$ t$jjt$ j Uu M韆B[Et*xu!jjuu 蒄}tMap秒}tE`p3隻jt$茴YY3PPjPjhh`&(ps3PPjPjh@hh&(ts叩tsV5ttP屐psttP^D$f@@fu+D$劍HUf}uebf}sE tfAf#E 契E@uM跏0ZEppEPjEPEjP蕚qu!E}tE`pEM #蘇UQf}u3隻f}sE tAM #蘇=(u%5mE5mPjEPjhmZqju u 秒USVW3jSSu]]~UE#UtYjSSubU#tAu }+;SjPP8Eu蓍 葆_^[秒hu蒿 YYE| ;r昼Puu t6+xwuuu茴 YYujPP<3梔y8u \ u觸;q|;skSuu ugT#DuNYPL染HE#Uu)蕘龠 ,u#uSuuu蕣S#撼3千撼jhD蔘Eu莚龠 j X藕3;|;r%龠8w龠j ^0WWWWW蒡鵈鍋帆k( L1t9}|9} s@龠8&龠jY驪PlMY}D0tuu u E粳 蓖鵈j ^0u簀E E粫du菴MYD$RPt$  醒UUVujX;EUu茲鵈 鵈 jW3;|;5r'z鵈8`鵈WWWWW 葷髷3k(遭SHu4鵈8鵈 G;}M ;@$石E樟HHu託丿磬UM E<GHtvO tn39Utg @M8UED tN L% tC9Ut> @M}ED% u$ L& t9Ut @MED& jMQuP4 };}}DR}rtyM9 uqo託丿u!蓙顰8萠顰WWWWWF顰;jY刪;MrEu蓼=;YE傲顰 顰c }E;}EM<< t GAMEH;sA8 u AAM uEmEjEPjEP4 u ,uE}t?DHt} t稿 ML%;}u} tjjju蓖O} t GE9EGD@uG+E}EOxG3@局;}rO@st曲su 1陞*zA;u@ 裂AHt$GQ|  T%Gu  T&G+jRPuOE+}刪Pu Wujh蝮Eu4,P蕚錮YME;E tP-滌YE}E韈uE韜tMf9 u }E;}EEff tfGG@@E薺M憎;s!Hf9 uEf MEjEPjEP4 u ,uZ}tTDHt'f} tf MLML%D& );}uf} tjjju菴Mf} tf GGE9E t@uffGG+}}韈,j^;u9迸 A迸0xmhej3[_^秒jhEN陞Eu迸 蓁蹊 3;|;r!萬蹊8菘蹊 WWWWW=蹊詆帆k( L1tP萬FY}D0tuu u菴 E粳b蹊 j蹊8ME E粫霊u)GYVt$V FYu蹊 ^Wt$jt$P u,3t P 蹊Yk(遭D0 _^jh0E錮Eu荳譫 譫 3;|;r!譫8w譫 WWWWW蓖襞詆帆k( L1tPEY}D0tuu u蓖 E粳譫 譫8ME E粫迸u葮EYUU汰k(S] V4 A%EA$樟W@劍;tPtBt&tu=IL$'IL$謌a IL$!}u %_^[]D$=@t,=t%=t 襞3PPPPP蝙jXPh,3醒D$V3;u菻蝙VVVVVJ蝙jX^ 3^jhPE蓆譫E =@t>=t7=t0=t)=t"w蝙3SSSSS蓁蕈Eu M蝙 諠3;|;r 2蝙 觧帆<k(L1tPYCY]D0tu uYYE粳葯蕈 ME E粫S譫u莅CYL$I8t@uID$+HUd3ESV39pWu8SS3GWhp&hSTt=p,xu p9]~"MEI8t@;uE+H;E}@Ep;9] ]u@E 539]$SSuuPu ;~Cj3Xr7D?=w荅Y;t面P^廏;Yt 毫E]9]=Wuuuju 5TSSWuu u;MfE t)9];MuuWuu u帷;~Ej3Xr9D =w蓚X;tj面P屓;Yt 毫韜3;tAuVWuu uTt"9]SSuSSuuuVSu pEV荐YuEYY9]]]u@E9] u@E uSbYEu3千!;E SSMQuPu ob;Et5PSSuPu u;Eu3薹~=w8=w萼W;t歿面P奩;Yt 毫3;tuSW蓐満 uWuuu u;Eu3%uEuPWu u跏au#uW}Yuuuuu uP9]t u莖奩YE;t 9EtP奩Ye_^[M3来秒UuM韆Hu(Mu$u uuuuu - }tMap秒T$Vt$WHFw  yBw t;t_+^USuM韆H39]u.e紆SSSSS葩筐8]tE`pW} ;u+/紆SSSSS茹筐8]tE`pUE9Xu Wu@YY4VEMQP蔔aEMQP蒟aG;t;t+^8]tMap_[秒UV395(u09uu筐VVVVV筐9u t^]藝Vu u蓊 ^]UQeS]u3千Wru{vnM EtR:QuMPt<:Qu7Pt&:Qu!Pt:Qu E9}r鷹?@IF@I<@I2@I(M Et:u@AE9]r3_[秒 +窓j Y3@|$u3醒3@|$u3醒3@|$u3醒t宙nAl;mtxsQpu,UHBPDMUu秒eSWEFPj1Q3CESPBFPj2uESP- F Pj3uESP FPj4uESPP FPj5uESP蓚 FPj6uESP蕚Vj7u ESP萃 F Pj*uESP莚P F$Pj+uESP F(Pj,uESP F,Pj-uESPm F0Pj.uESPXP F4Pj/uESP@ FPj0uESP+ F8PjDuESP FuESP Pj?uESPr Pj@uSEPZ PjAuESPBP PjBuESP' PjCuESP Pj(uESP蔟 Pj)uESP萬P PjuESP萃 Pj uESP茗 PhuESP Ph ]SEjPtP _[秒Vt$v茱璃v璃v 璃v璃v璃v}璃6v璃v n璃v$f璃v(^璃v,V璃v0N璃v4F璃v>璃v86璃v<.璃@v@#璃vD璃vH璃vL 璃vP璃vT蕀癒vX蓴癒v\蓚癒v`蓊癒vd葮癒vh葭癒vl菲癒vp菽癒vt荵癒vx莖癒v|茫癒@癒癒癒|癒q癒f癒[癒P癒E癒兇:癒協/癒,^SUVW|$ tt=3hEU*YYu搭A蝿#tV2V蒿満YY諱敗;t P73_^][28tSV<0|<9 ,0A8u^[<;up8u鼡Vt$t5;HutPk満YF;LutPY満Yv;5PutVG満Y^US]V39sW]uu9suuuEHu:j0j);YY}u3@w骸j Yj鵐莪(3;YEu u萪朋Y誄09sj(;YEu3Fu茗朋u茲朋YY鍋0u{>VjWEjP,EFPjWEjP EFPjWEEjP< Et V萃YE0|9 0@8u蜍7;u~>u鳬 HuE LuH PuuHE3AEt5tPtPu外茫服骸服YYEEE3_^[秒28tSV<0|<9 ,0A8u^[<;up8u鼡Vt$t~F ;TutP/服YF;XutP服YF;\utP 服YF;`utP蔔美YF;dutP蒟美YF ;hutP萼美Yv$;5lutV菽美Y^USVuW39~}u}u9~u}}Hu6j0j&;YYu3@uj9&;YEu Sa美Y諤89~j&;YEuS>美u6美Y誨8v8C PjVEjP萃CPjVEjP莪 CPjVEjP CPjVEjPP CPjVEjPq C PjPVEjP] C$PjQVEjPI C(PjVEjP5P C)PjVjEP C*PjTVEjP  C+PjUVEjP蔬 C,PjVVEjP萵P C-PjWVEjP菲 C.PjRVEjP莊 C/PjSVEjP茖< t$S茲S蒟入u萬入u蒄入QC0|9 0@8u蜍#;u~>u鳬j YHu鵐Eu IK@MC3@39}tM;tP;t#Pu脅(入彊入YYEE3_^[秒3醒USVWuM3梭f:E股]u漕t>,Y4>E!YE}YYM\rCPj#YueE:4EF+DPVcY t3PPPPP%奩V莠XE:tEF+DPV*Yt3PPPPP蓐圉VXE}Yr}_^[tE`pE秒j蕀YUSVWuM3梭_9E股w8uE v0"X6EXuYYMM\uuCP\"YuthE E:wF+DPVVX t3PPPPP圉V莚WE:7F+DPV"Xt3PPPPP葢咨V{WMYuニ}_^[tE`pE秒j蕀YU$SVWuM3X8E惟}]巣t3W43E跏WE}YYM|rF8E霰E ]s0蒟V3E跏VEYYMM|u莨V懈V|V兇|V協|VPE葷 WhVS燦飾eF] )uEESvj [0A~wII@;r[UQSV39UUt597vj [0F ~w7NN@;r鳬.;1s(NVtj [0ENuE)^[秒UQS樟YVWI tptIHt$F3;ja號v3;O FUTh:v3;-$UT%E F3;j Y;PQXIMjY+HHt4HHtHuu hF3;;;tHF3;;yF;l=ma;}3千j^;@蕷3;6;蘿F謇39~FjdYujkd鷹zm=!ZEHHt`Ht,v3;muFj v |~ 蕘璃3ujZM =Yu39}u SVtAjurtsE 98tlu E PSVjuH5CW訃v3;| UT8v3;|~^璃WWWWW蕚癒3千U臥v3;| F/pteHtFHt&Hu争39F EF3;yujdY醍棍u39}u SVtjW F3;@7u3B蕁v3; UE ^3@_^[秒U$d3EE S]V3+WtHt雑擦三M} \uX9qE}蓆満VVVVVf満3千A;| A;|A;|;;|;y |Q曹@s+棄秒HtHtHt HuB?b8Em*HtHt sEHh/W荅YYuh/WYYu}p蚫]];J<'tEu樟P蒭.YYt;vG8 G u渇G蝗HtHtHtH改AUaNEd@hHt%mHHtHH_Yy蝗Ex E;uP蒡-YYt;vG8.  薜;u樟P荅-YYt;vG8茆 G u結eHtHt ES.HtHt wEMHtHt _EIuUuSuc}fU ESu3M]E韆,+E;u+ 麦SSSSS入8]tE`p3千]W} ;u+蒭入SSSSSR入8]tE`p3千)Vu;E;u E;E}:ty<%tAM樟QPA,YYt3A9MvF8tpU EMMEFM/U;tiF3>#u@FPuEPEPM蓙tOF9]w9]vE+}8]tiMap`M9]Eu-9]w(萼到"3菷到&9]v卩E詆茘到SSSSS%到8]tE`p3^_[秒Uujuuu u8]jjt$t$t$t$Ujuuuu u蕘]宙0Hl; mt xsHpu蒡xu談面面面面面UV3PPPPPPPPU I t $鞫uI t $s ^秒U3S3@9] |FVWt>E +E辨<7E0萪YYu M9 }Nu ^;] ~_^3[]N`FFU d3EVt1>t,h7V萬YYth7V萠YYu%jEPj jEPhwDt uVYM3^X秒3fL$f;7t @@r3@3醒V3#,aB<w匝 ,A<w鎗樵漕t u^3 BA|Z~aw@謌U|d3EVW}MjxEPF%PWDu!F@2EPvPYYuW)Yt N~~F争M_3^Y病U|d3EVjxEPE%j PDu3宣.U葆9Et} t6W帶VbEY;_t3@M3^蒹秒U|d3ESVW}DDjxEPF%PWu f3@bEPv?YYjxEPF%PWtEP6 YYu N~RFuOF t,PEP6萪A u6N~oD;F Yu!~VuWYt V~N#;jxEPF%PWEP6dY3Yu/N9^Ft FG9^ t;6葮C;F Yu.j9^u49^ t/EP6YYuSW玲陜YYtN9^u~F争M_^3[病U|d3EVW}u莢jxEPF%PWDu!F@[EP6yYYu 9Fu0j~u0~ t*EP6SYYuPW玲*YYt N~~F争M_3^X病v莎BYj@hFdFuf6Bv@FwBf@~YYFtjX蒹jhF dFft ftuf6%B@YFtjXjhdF dFufSUVW蓼l$3;u N蕷E@;~.t8tWjh6 ;^tK8tG;t 8t蓼X9^u|Vj@h4菷 t_?;t 8t菲N)G?;t.8t*WCAYj@hFdFu^F`FF9^#荼蕘蝮恵PjvhD$tfNffNfHfX|$tkf8-Du%h7j@W蔘@ t"3PPPPP莊時j@Whvt-j@G@Phvtj jWS茖>3@3_^][t 3L 礎 +t 3L 礎ff;t5鏡+t3TuFI+t3L 礎3醒;to鏡+t3TuVFQ+t3Tu9FQ+t3TuFI+t3L 礎3醒VW^;tx駒+t3DqB+t3DqB+t3DqB+t 3D馴3A;Bty駒B+t3DqB+t3DhqB+t3DIqB+t 3D馴3"A;Bty駒B+t3Dq B +t3Dq B +t3Dq B +t 3D馴3A ;B ty駒B +t3Dqq B +t3DRqB+t3D3qB+t 3D馴3 A;Bty駒B+t3DqB+t3DqB+t3DqB+t 3D馴3A;Bty駒B+t3D[qB+t3D<qB+t3DqB+t 3D馴3A;Bty駒B+t3DqB+t3DqB+t3DqB+t 3D馴3kA;Bty駒B+t3DEqB+t3D&qB+t3DqB+t 3D馴3 $重A;BtzBq+t3DqB+t3DtqB+t3DUqB+t 3D馴3.A;Bty駒B+t3DqB+t3DqB+t3DqB+t 3D馴3A;Bty駒B+t3D}qB+t3D^qB+t3D?qB+t 3D馴3A;Bty駒B+t3DqB+t3DqB+t3DqB+t 3D馴3A;Bty駒B+t3DgqB+t3DHqB+t3D)qB+t 3D馴3A;Bty駒B+t3DqB+t3DqB+t3DqB+t 3D馴3u{A;Btk駒B+t3DuYqB+t3Du>qB+t3Du#AJ+t3L 窓3u3_^A;Btm駒B+t3DuqB+t3DuqB+t3DuqB+t 3D馴3uA;BtzBq+t3D[qB+t3D<qB+t3DqB+t 3D馴3A;Bty駒B+t3D傲qB+t3D応qB+t3DqB+t 3D馴3kA;Bty駒B+t3DEqB+t3D&qB+t3DqB+t 3D馴3瓔A;Bty駒B+t3D冊qB+t3DqB+t3D|qB+t 3D馴3UA;Bty駒B+t3D/qB+t3DqB+t3D髴qB+t 3D馴3放A;Bty駒B+t3DqB+t3DqB+t3DfqB+t 3D馴3?AJ+/3L 痩A;Bty駒B+t3DqB+t3D戍qB+t3D惚qB+t 3D馴3A;BtzBq+t3DkqB+t3DLqB+t3D-qB+t 3D馴3A;Bty駒B+t3D璧qB+t3D霜qB+t3DqB+t 3D馴3{A;Bty駒B+t3DUqB+t3D6qB+t3DqB+t 3D馴3顆A;Bty駒B+t3D庖qB+t3DqB+t3DqB+t 3D馴3eA;Bty駒B+t3D?qB+t3D qB+t3DqB+t 3D馴3暘A;Bty駒B+t3D揮qB+t3DqB+t3DvqB+t 3D馴3OfAf;B?蜊A;BtzBq+t3DqB+t3DqB+t3D恬qB+t 3D馴3員A;Bty駒B+t3DqB+t3DkqB+t3DLqB+t 3D馴3%A;Bty駒B+t3DqB+t3D瑶qB+t3D走qB+t 3D馴3A;Bty駒B+t3DtqB+t3DUqB+t3D6qB+t 3D馴3A;Bty駒B+t3D蝠qB+t3D宝qB+t3DqB+t 3D馴3A;Bty駒B+t3D^qB+t3D?qB+t3D qB+t 3D馴3A;Bty駒B+t3D囈qB+t3D岐qB+t3DqB+t 3D馴3nqB+t3DOqB+3D蛻饋潅でx)饐ニof簓杤xYP軣糧甜qaC9崔掲UVW}HHHIHM ESj Zr0;1t|0+t3\ipY+t3\HpY+t3\'pY+t3\鼡3p;qt~pY+t3\pY+t3\pY+t3\pY+t3\鼡3rp;qt~pY+t3\Ip Y +t3\(p Y +t3\p Y +t3\鼡3p ;q t~p Y +t3\p Y +t3\pY+t3\wpY+t3\鼡3Rp;qt~Yp+t3\)pY+t3\pY+t3\pY+t3\鼡3p;qt~pY+t3\pY+t3\xpY+t3\WpY+t3\鼡32p;qt~pY+t3\ pY+t3\pY+t3\pY+t3\鼡3p;qtrpY+t3\u}pY+t3\u`pY+t3\uCpY+t3\鼡3u"+;$E鍋P;Qtq愚Q+t3TupQ+t3TupQ+t3TupQ+t3T鳬3vP;Qt}愚Q+t3TNpQ+t3T-pQ+t3T pQ+t3T鳬3苙P;Qt}愚Q+t3T裾pQ+t3TpQ+t3T}pQ+t3T鳬3XP;Qt}愚Q+t3T0pQ+t3TpQ+t3T鍄pQ+t3T鳬3幅P;Qt~Qp+t3TpQ+t3TpQ+t3T^pQ+t3T鳬39P;Qt}愚Q+t3TpQ+t3T顫pQ+t3TpQ+t3T鳬3P;Qto愚Q+t3Tu6pQ+t3TupQ+t3Tt鷹@I+t3L 窓3u3[S P;Qt}愚Q+t3TpQ+t3T檠pQ+t3T寺pQ+t3T鳬3P;Qt}愚Q+t3TnpQ+t3TMpQ+t3T,pQ+t3T鳬3P;Qt}愚Q+t3T燠pQ+t3T醸pQ+t3TpQ+t3T鳬3xP;Qt}愚Q+t3TPpQ+t3T/pQ+t3TpQ+t3T鳬3蝎P;Qt}愚Q+t3T鎗pQ+t3TpQ+t3TpQ+t3T鳬3ZP;Qt~Qp+t3T1pQ+t3TpQ+t3T陂pQ+t3T鳬3崩P;Qt}愚Q+t3T‡pQ+t3TpQ+t3T`pQ+t3T鳬3;I@+3L 痩錏P;Qt}愚Q+t3T髣pQ+t3T偖pQ+t3TpQ+t3T鳬3P;Qt}愚Q+t3TbpQ+t3TApQ+t3T pQ+t3T鳬3P;Qt}愚Q+t3T囑pQ+t3T廻pQ+t3TpQ+t3T鳬3lP;Qt}愚Q+t3TDpQ+t3T#pQ+t3TpQ+t3T鳬3泄P;Qt}愚Q+t3T虚pQ+t3TpQ+t3TspQ+t3T鳬3NP;Qt~Qp+t3T%Qp+t3TQp+t3T笏Qp+t3T鳬3浄P;Qt}愚Q+t3TpQ+t3TupQ+t3TTpQ+t3T鳬3/fPf;QQp+廂3T蘊P;Qt~Qp+t3T偕pQ+t3TpQ+t3TpQ+t3T鳬3iP;Qt}愚Q+t3TApQ+t3T pQ+t3TpQ+t3T鳬3晰P;Qt}愚Q+t3T解pQ+t3TpQ+t3TppQ+t3T鳬3KP;Qt}愚Q+t3T#pQ+t3TpQ+t3T瘻pQ+t3T鳬3趣P;Qt~Qp+t3TpQ+t3TrpQ+t3TQpQ+t3T鳬3,P;Qt}愚Q+t3TpQ+t3T竦pQ+t3T宅pQ+t3T鳬3P;Qt}愚Q+t3TupQ+t3TTpQ+t3T3pQ+t3T鳬3pQ+泝3T捧醍酷Mu +t3TAV+t3TAV+t3TAN+3L 痩Mu +t3TuhAV+t3TuKANMu +t3Tu ANpEM  _3_^]簫嶷瞽gGSt慯計築縷H(4U航ペ曇* 7{贅UQQd3ExSV3;Wu:EP3FVhp&V t5x4,xu jXxx;9]]u@E539] SSuu Pu;~<w4D?=wa;t面P;Yt 毫ti?PjS}v WSuu jutuPSu ES,EYu39]u@E9]u@Eu蒟 Yu3宣G;EtSSMQu Pu ;tu uuu uu;tVYe_^[M3来y秒UuM韆q龠u$Mu uuuuu }tMap秒面UV3PPPPPPPPU I t $鞫u t $sF ^秒USuM蓙迺]C=wEXu]}EPE%PuYYtEjE]EY 3]EAEjppEPQEPEjP蔘 u8EtE`p3宣E#E }tMap[秒=(uD$ mA#D$jt$ t$  談面面面面面QL$+ YQL$+ YUVWuM跏假Eu 3;t0;u,荀WWWWW}tE`p3千9}t }|}$MS}~幸~EP驚jP^M 驚BtG詛-uM+uGEI@$7u*0t E 4t }w u,9uv'E"tME$染EEt8Et]}tE`pEEt0}tE`p3[_^秒U39(Puu uuhmP莟]jt$t$t$t$ U=(juu uuhmjl]jt$t$t$t$ PU8SWuM疲陞E} 3;t8;u-蓿SSSSSj8]tE`p33咏>9]t }|}$Vu]]G宵E~EPEjP茲u EネA;u}-}uM}+u G}E9]jYu%}0t E 59ur9w}v1蔡E"t MMEt e]MuE^tMEtEMEM}tE`pEU_[秒U39(Puu uuhmPH]jt$t$t$t$ ,U=(juu uuhmj]jt$t$t$t$ 蒟USuM韆蹊M3;u8]tE`p3千9]u.菁SSSSS?8]tE`p9] tV;vSSSSS?E9XuuQu u6pQu Quhp EP? ;u8]tE`p馴線8]tMap^[秒jt$t$t$UQQSV3W=zu;tepVVVVjPVV;EtTjP]奩;YYEtCVVuPj7VVt6EVP荅YY}9ut uvYu;u3_^[秒譁u蓼uY謳39D$vL$9t@A;D$r鹵Ud3E}SVW}3千|5 33C;u3EPShp&St|,xu jX||;uuuuu 帷t;u9} }u E@E 9}u E@Eu 莪9EYttEpWWWWuuWu;u6~;w6F=wX;t面P t;Yt 毫E}9}迸VWukk WWVuuuWuF;~D=w=D6 =w葯;面Ps;Yt 毫憺3;tb9} u E@E }Suu4u fu fNf~Etf>uWSuk eSx{Yuo{EYe_^[M3来n秒UuM韆+蕈u Euuuuu P莪}tMap秒U d3EjEPhuEDu EP蒻}YM3来1n秒U4d3EEMEESEVEEW3;E M}}_58MQPt^}uXEPu tK}uEuEu u懈YF;~[wSD6=w/;t8面-WWuuju;u3千Pq;Yt 毫E粳}9}t6PWu粫h Vuuujut];tWWuSVuWu pt`]琺[9}puWWWWVuWu ;t38X|z;zMu 4|z;u`9] t$9ztotJbv^_[秒9]j寵;Y|zt9zuj寵;Yzt5|z;ut}+}uc;Y|R9tN46}e9]YuEEFEG49u?sjjW5|z萬寵 ;tUN9];}G;3=?(Pj5|z茖寵 ;U YM|z9] txujV:@Y@P蒄只;YYt\VV"@Y@PW茖 t SSSSSgsM+E@風#QWuM蒿t*WjdY9]t u\dYE韈juKdEY3千U面UWVSM tMu} AZ I& t' t#:r:w:r:w:u u3:t r[^_秒S\$U3;u3宣=VWS'FV蔟b;YYt SVW t UUUUU]r萩3_^][USuM韆悚E3;u(葮sSSSSSSs8]tE`p3宣tVu9^u:u PYYA均D2t@:t>敬巾早 9M u H継9U t @f敬f;u敬9M u8]tMap8]tE`p3^[秒jt$ t$ 7 談B[$d$3D$S愾T$t :ttQu W蛋V ~333u%t%uu^_[3醒B:t6t:t't臍:tt:tt夐^_B[B^_[B^_[B^_[%8%<%@%D%H%L%P%T%X%\%`%d%h%l%p%t%x%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% %$%(%,%0%4%8%<%@%D%H%L%P%T%X%\%`%d%h%%% %%%U d3ES3;VuOpj^SSSSS0菷o5uW菷;EYYr誂U H;u 8tJRJ`JpJJJJJ>NJJJ KK8K@KRK`KrKKKKKKLL(LRuntime Error! Program: :iUnknown exception::В@;稗csm EncodePointerKERNEL32.DLLDecodePointerFlsFreeFlsSetValueFlsGetValueFlsAllocTZSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecInitializeCriticalSectionAndSpinCountkernel32.dllSystemFunction036ADVAPI32.DLLGetProcessWindowStationGetUserObjectInformationAGetLastActivePopupGetActiveWindowMessageBoxAUSER32.DLL Complete Object Locator' Class Hierarchy Descriptor' Base Class Array' Base Class Descriptor at ( Type Descriptor'`local static thread guard'`managed vector copy constructor iterator'`vector vbase copy constructor iterator'`vector copy constructor iterator'`dynamic atexit destructor for '`dynamic initializer for '`eh vector vbase copy constructor iterator'`eh vector copy constructor iterator'`managed vector destructor iterator'`managed vector constructor iterator'`placement delete[] closure'`placement delete closure'`omni callsig' delete[] new[]`local vftable constructor closure'`local vftable'`RTTI`EH`udt returning'`copy constructor closure'`eh vector vbase constructor iterator'`eh vector destructor iterator'`eh vector constructor iterator'`virtual displacement map'`vector vbase constructor iterator'`vector destructor iterator'`vector constructor iterator'`scalar deleting destructor'`default constructor closure'`vector deleting destructor'`vbase destructor'`string'`local static guard'`typeof'`vcall'`vbtable'`vftable'^=|=&=<<=>>=%=/=-=+=*=||&&|^~(),>=><=<%/->*&+---++*->operator[]!===!<<>>= delete new__unaligned__restrict__ptr64__clrcall__fastcall__thiscall__stdcall__pascal__cdecl__based($    |xtplhd`\XTPLHD@<840,($  hH(\@0,$h@\0;eee;7;?$<p<<Z^p ?? {flat}{for `non-type-template-parameterunsigned long int short char void,,... throw()[s `template-parameter'NULLcli::pin_ptr<cli::array<void ''`anonymous namespace'`generic-type-template-parameter-::`unknown ecsu'union struct class enum coclass cointerface ) extern "C" [thunk]:public: protected: private: virtual static `template static data member destructor helper'`template static data member constructor helper'`local static destructor helper'`adjustor{`vtordisp{`vtordispex{ }'}' const volatile CV: volatile volatileconstsigned doubleboolwchar_tUNKNOWN__int128__int32__int64__int16__w64 __int8floatlongintshortcharLC_TIMELC_NUMERICLC_MONETARYLC_CTYPELC_COLLATELC_ALLx%%Rl%l`%lrrT%lH%l8@%lR  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_.,._;C=;CONIN$CONOUT$ ((((( H h(((( H H、ぅΗ┤葦桶患況弦沙悉梢請唾津毒班碧麺力佰厶壞嶐慵无槿渤珀矣粤肄蓍裨跋鈿韵鴦  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~、ぅΗ┤葦桶患況弦沙悉梢請唾津毒班碧麺力佰厶壞嶐慵无槿渤珀矣粤肄蓍裨跋鈿韵鴦、ぅΗ┤葦桶患況弦沙悉梢請唾津毒班碧麺力佰厶壞嶐慵无槿渤珀矣粤肄蓍裨跋鈿韵鴦  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~、ぅΗ┤葦桶患況弦沙悉梢請唾津毒班碧麺力佰厶壞嶐慵无槿渤珀矣粤肄蓍裨跋鈿韵鴦HH:mm:ssdddd, MMMM dd, yyyyMM/dd/yyPMAMDecemberNovemberOctoberSeptemberAugustJulyJuneAprilMarchFebruaryJanuaryDecNovOctSepAugJulJunMayAprMarFebJanSaturdayFridayThursdayWednesdayTuesdayMondaySundaySatFriThuWedTueMonSuna/pam/pmunited-statesunited-kingdomtrinidad & tobagosouth-koreasouth-africasouth koreasouth africaslovakpuerto-ricopr-chinapr chinanznew-zealandhong-konghollandgreat britainenglandczechchinabritainamericausausukswissswedish-finlandspanish-venezuelaspanish-uruguayspanish-puerto ricospanish-peruspanish-paraguayspanish-panamaspanish-nicaraguaspanish-modernspanish-mexicanspanish-hondurasspanish-guatemalaspanish-el salvadorspanish-ecuadorspanish-dominican republicspanish-costa ricaspanish-colombiaspanish-chilespanish-boliviaspanish-argentinaportuguese-braziliannorwegian-nynorsknorwegian-bokmalnorwegianitalian-swissirish-englishgerman-swissgerman-luxembourggerman-lichtensteingerman-austrianfrench-swissfrench-luxembourgfrench-canadianfrench-belgianenglish-usaenglish-usenglish-ukenglish-trinidad y tobagoenglish-south africaenglish-nzenglish-jamaicaenglish-ireenglish-caribbeanenglish-canenglish-belizeenglish-ausenglish-americandutch-belgianchinese-traditionalchinese-singaporechinese-simplifiedchinese-hongkongchinesechichhcanadianbelgianaustralianamerican-englishamerican englishamerican4ENU4ENU4ENU4ENAx4NLBl4ENCh4ZHHd4ZHI\4CHSH4ZHH44CHS 4ZHI 4CHT3NLB3ENU3ENA3ENL3ENC3ENB3ENI3ENJ3ENZl3ENSP3ENTD3ENG83ENU,3ENU3FRB 3FRC2FRL2FRS2DEA2DEC2DEL2DES2ENI2ITSt2NOR`2NORL2NON42PTB 2ESS2ESB2ESL1ESO1ESC1ESD1ESF1ESE1ESGp1ESH`1ESMP1ESN<1ESI,1ESA1ESZ1ESR0ESU0ESY0ESV0SVF0DES0ENG0ENU0ENU0USA0GBR0CHN0CZE0GBRt0GBRl0NLD`0HKGT0NZLP0NZLD0CHN80CHN,0PRI$0SVK0ZAF0KOR/ZAF/KOR/TTO0GBR/GBR/USA0USA  6 - OCPACPNorwegian-NynorskHd=RSDS榾y{EmoIc:\Development\DLL\d2xxdll\Release\FTD2XX.pdbcT8d8p88c@T8c@888c@8c899p88c@8c@9P9`9p88c@@9c999p88c@9d999:d@90d@4:D::Pd`:p:x:Pd@`:0d4:d Ud0d 紂Pmamoqq#r^$v^謄研+Dg W娶 N可2N嗄佻メ6 意易桙違~ろ呆公\F\>G8PQRc^!^2^adpqirwy+GGpEHHJ,NNNMMGGGGHH&HJRJ`JpJJJJJ>NJJJ KK8K@KRK`KrKKKKKKLL(LRORfR{RRRRRRRRSSS$S-S5S?SNS[SlS{SSSSSSSSST#T6TPTZTiT}TTTTTTTTU/UCUZUnUUUUUUUU V"V3VAVJV ED$B%C&'(!<GFJK "A?H @  >=./*)01234-5+6789:;,#FTD2XX.dllFT_CloseFT_ClrDtrFT_ClrRtsFT_CreateDeviceInfoListFT_CyclePortFT_EE_ProgramFT_EE_ProgramExFT_EE_ReadFT_EE_ReadExFT_EE_UAReadFT_EE_UASizeFT_EE_UAWriteFT_EraseEEFT_GetBitModeFT_GetDeviceInfoFT_GetDeviceInfoDetailFT_GetDeviceInfoListFT_GetDriverVersionFT_GetEventStatusFT_GetLatencyTimerFT_GetLibraryVersionFT_GetModemStatusFT_GetQueueStatusFT_GetStatusFT_IoCtlFT_ListDevicesFT_OpenFT_OpenExFT_PurgeFT_ReadFT_ReadEEFT_ResetDeviceFT_ResetPortFT_RestartInTaskFT_SetBaudRateFT_SetBitModeFT_SetBreakOffFT_SetBreakOnFT_SetCharsFT_SetDataCharacteristicsFT_SetDeadmanTimeoutFT_SetDivisorFT_SetDtrFT_SetEventNotificationFT_SetFlowControlFT_SetLatencyTimerFT_SetResetPipeRetryCountFT_SetRtsFT_SetTimeoutsFT_SetUSBParametersFT_SetWaitMaskFT_StopInTaskFT_W32_CancelIoFT_W32_ClearCommBreakFT_W32_ClearCommErrorFT_W32_CloseHandleFT_W32_CreateFileFT_W32_EscapeCommFunctionFT_W32_GetCommModemStatusFT_W32_GetCommStateFT_W32_GetCommTimeoutsFT_W32_GetLastErrorFT_W32_GetOverlappedResultFT_W32_PurgeCommFT_W32_ReadFileFT_W32_SetCommBreakFT_W32_SetCommMaskFT_W32_SetCommStateFT_W32_SetCommTimeoutsFT_W32_SetupCommFT_W32_WaitCommEventFT_W32_WriteFileFT_WaitOnMaskFT_WriteFT_WriteEE""" "@"""""""""""" """" "$"("0"4"D"H"L"X"\"d"h"l"p"t"x"|"""""""""""""" " " " "@ " " " " " " " " " " "!" !"!"!"!" !"$!"(!"0!"4!"D!"H!"L!"X!"\!"d!"h!"l!"p!"t!"x!"|!"!"!"!"!"!"!"!"!"!"!"!"!"!".?AVTFtE2Data@@.?AVTEeData@@.?AVTFtEE2232@@.?AVTFtEE232@@.?AVTFtEE232R@@N@傘D.?AVbad_alloc@std@@.?AVexception@std@@.?AVtype_info@@        ! 5A CPR S WY l m pr   )    8   Hd<  !"Px@y0z  .?AVbad_cast@std@@.?AVbad_typeid@std@@.?AV__non_rtti_object@std@@葺p韵PSTPDTj(k  x  JJJJJJJJJJ.?AVDNameNode@@.?AVcharNode@@.?AVpDNameNode@@.?AVDNameStatusNode@@.?AVpcharNode@@|)ClllllHux',-tmmm abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZm`y!.瓏@~腺擅 @腺擅 A連笄紜茴[@~◇QQ^ _j2嗹滿1~;Zx0Nm:Yw/Mlx'z)/////////x/l/`/X/L/H/D/@/ OriginalFilenameFTD2XX.DLLJProductNameFTDIChip CDM Drivers4ProductVersion3.01.07DVarFileInfo$Translation  PAPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADD(1/2j2'3344"5d5s5555Y6627 D1333333U4l4444&5T5555560667(8h8888*9s9999:B:l:|:::::::: ;V;b;;;??6?F?P?????0L000$1w1}111113,3B3Y3d333w5O6U78<<< ==:=H=_=6>>>2?b?@ 555x77T8<<<;>y>?PhJ1o111668999999: ::::":(:.:`:0;>>???? ?$?M?s???????????`00 00v000000000-14181<1@1D1H1L1P1111111 2F2f2}2222222-3;3333334 4*484c44444444555558w:::::::::;,;>;C;I;O;{;;;;;;;.<4>>>>>>?9?m??p1&111T111;2O22233"3?3V3`3y3333 444444555)555J5f5x55555555 60696V667777P8f9m99E::;;;<5==>>>> ????o052I2f222 3/3:3h3x3333333E4Q4]555555555555555556 6666'626>6C6S6X6^6d6z6677818=8C8f8m8888888899999::A:I:\:b:i:v:}::::::<<<==%=.=;=F=X=k=v=|==============>>>>&>3>9>S>d>j>{>>p2~2222222222233 330363@3[35#6.6]66666 727l77999::0:G:M:S:c:m:v:::::::::::::; ;;2;;;;<&>'>,>J>>>?F?^?i???????T050Z0m00000011&1A1N1z11112222233%3<3T3`333333s44444$5W5b555555666I7N7h7S8G9U9x9::0:D:L:R:]:i:~:::::::::::;;';-;7;>;D;N;[;a;p;;;;;;;;;;;;;; <*A>G>S>Y>h>n>>>>>>>>>>>>>>>>>????"?'?-?1?7?3F33333 4<4N4444455%5^5f55555557777771878J8T8m8y88889'9X9o999999 ::]:::::;;;;;;;< <<<<<=(=^=t==== >D>`>>>>>?F?X????&0.0l0000C11112E2O2222223 3333`4m4444556N6c6q6y66666666667!77%8-8B8M8)99=Y>t>>>>>>?12O2d2233777 8=8C8L8S8^8j88819=9999*:_:x::::::::;; ;;;;; ;$;n;t;x;|;;;; <<<< >>">'>,>4>O>U>k>q>>?"?????(02080E0T0~00000000_11111122 2|22233\3b3333333,4C4I4\4a4u4{44444444445i5557778!8)8a8889969<9G9N9X9a9n9t999::&:?:]::::::;;G<=5=M=>>\>`>d>t>x>|>>>>>>>>>>>>>>> ??%?0?;?F?T?_?m?|??`1-2l22334'55667078)8.8A8F8N8T8\8e8j8q8y8888_99/:;u;;8====y>>>Z?m??+0Y0r0w00001'11 22B222:3a3f3m3t3{333333333334 434R4X4d4k44444444445*5Q5e55556a6r667X888888949N9Y999999999:*:H::::c;n;s;;;<2>>V>>>>>>>>"?0?@?W????? 090X000 1Y11111/2O2g22222223X4|444444455I5i5p5y5555555 6]6j6p6v6666677 7;7e7777777838R88888w999999: ::^:c:w::::;.;H<<=0=F=z>>?\?u??00Z0z00011I222|33!445d555-6=6c66666667N7|7777/8C8J88888:9J9999:@:Q:h:::-;y;;;<]q>> ?]????@-0M001Q1n11112h3~333334 4-4?4L4T4\4j444666>6D6J6P6}6666666 7K7a777777777,8C8X8q8{8888839E9c9p99996:H:\:::::::::::;/;s;;;; <1d>>>2????Pt000000000011(1W1122s3333494Q4V4444'5w556K7"9O9999A::: ;;y<<=====>>>?`|0000000041<1F1_1i1|1111_2|22&33344'4B4J4R4i4444444445+55566~6667s7777e8r888a9n999Z:g:=;G;O;i;q;~;;;O<<<<<<<<==}>>>>p|4001y2[34555566R6Z6x66666S7h7777T888*9099999:::[:="='=;=A=F=L=V=e==.>@>I>R>`>>>o?v???d:0c00z1123344%52556667D7778/8c88!99:4:A:::V;e;u;;;;;;;<D0{111_7788)8_8s9~999A:S:e:w:::::<0=A=$777U8[8::>>>????<0+000)1M111k3374@44444-5e55556-6c6j65<H;;;;;;;;;;;;;;;<< < <<<<a>u?T0%0O000t11384l7777777!888::+m>>>111111111111111111122222 2&2,22282>2D2J2P2V2\2b2h2n2t2z222222222222222222222223 3333"3(3.343:3@3F3L3R3X3^3d3j3p3v3|33^555511111111122 22222 2$2(2,2024282<2@2D2H2L2P2T2X2\2`2d2h2l2p2t2x2|222222222888888888899 004080<0@0D0H0L0P0T0X0\0`0d0h0l0p0t0x0|000000000000000000000000000000000111 11111 1$1(1,1014181<1@1D1H1L1P1T1X1\1`1d1h1l1p1t1x1|111111111111111111111111111111111555555555555555550444444445555 5(50585@5H5P5X5`5h5p5x555555555555555556666 6(60686@6H6P6X6`6h6p6x666666666666666667777 7(70787@7H7P7X7`7h7p7x777L8P8`8d8h8p888888888889999(989<9L9P9T9X9`9x999999999999999::0:@:D:X:\:l:p:x:::::::::::;;;;;$;<;L;P;`;d;h;l;t;;;;;;;;;;;;<< <0<4>>4>8>X>x>>>>>? ?@?`?????@t0 0,0H0h00000001(141P1p111111202P2l2p2222222303P3p3333334(4H4h444445(5H5h5`333334404L4P455|99999999999999999: :::$:,:4:8:<:X:x:::h;l;@serjtag18-Jun-2007 18:26:5918-Jun-2007 18:35:09241018-Jun-2007 18:26:5944, 13, 0, 528AVR GCCtn2313\serjtag.elfD:\msys\1.0\home\suz\serjtag-0.2\AVR SimulatorATtiny2313.xmlfalseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31Auto000serjtag.ci2c.cdefaultNOattiny2313100serjtag.elftn2313\0tn2313\.\-Wall -gdwarf-2 -DF_CPU=8000000UL -Os -fsigned-chardefault1D:\WinAVR\bin\avr-gcc.exeD:\WinAVR\utils\bin\make.exeD:\msys\1.0\home\suz\serjtag-0.2\serjtag.cD:\msys\1.0\home\suz\serjtag-0.2\i2c.c serjtag-0.3/tn2313/0000755000076400007650000000000010635471211013442 5ustar suzsuz00000000000000serjtag-0.3/tn2313/Makefile0000644000076400007650000000274610635450433015116 0ustar suzsuz00000000000000############################################################################### # Makefile for the project serjtag ############################################################################### ## General Flags PROJECT = serjtag MCU = attiny2313 TARGET = $(PROJECT).elf CC = avr-gcc ## Options common to compile, link and assembly rules COMMON = -mmcu=$(MCU) ## Compile options common for all C compilation units. CFLAGS = $(COMMON) CFLAGS += -Wall -DF_CPU=8000000UL -Os -fsigned-char ## Assembly specific flags ASMFLAGS = $(COMMON) ASMFLAGS += -x assembler-with-cpp ## Linker flags LDFLAGS = $(COMMON) LDFLAGS += -Wl,-Map=$(PROJECT).map #LDFLAGS += -Ttext 0x1000 -Tdata 0x800160 ## Intel Hex file production flags HEX_FLASH_FLAGS = -R .eeprom ## Include Directories INCLUDES = -I. -I.. ## Objects that must be built in order to link OBJECTS = serjtag.o i2c.o ## Objects explicitly added by the user LINKONLYOBJECTS = ## Build all: $(TARGET) $(PROJECT).hex $(PROJECT).lss size ## Compile serjtag.o: ../serjtag.c $(CC) $(INCLUDES) $(CFLAGS) -c $< # $(CC) $(INCLUDES) $(CFLAGS) -S $< i2c.o: ../i2c.c $(CC) $(INCLUDES) $(CFLAGS) -c $< ##Link $(TARGET): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET) %.hex: $(TARGET) avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@ %.lss: $(TARGET) avr-objdump -h -S $< > $@ size: ${TARGET} @echo @avr-size ${TARGET} ## Clean target .PHONY: clean clean: -rm -rf $(OBJECTS) $(PROJECT).{elf,lss,map,hex} serjtag-0.3/tn2313/serjtag.h0000644000076400007650000000076310635447234015270 0ustar suzsuz00000000000000#define TGT_PORT PORTB #define TGT_DDR DDRB #define TGT_PIN PINB #define TGT_MISO PB5 #define TGT_SCK PB7 #define TGT_MOSI PB6 #define TGT_RESET PB4 #define I2C_EXTENSION //#define I2C_NOCHECK_START //#define NO_CLKPR_SET #define USE_USI_SPI #define USI_SLOWMODE #define DEV_SYS 0 #define DEV_I2C 10 extern int8_t i2c_recv(uint8_t dev, uint8_t size); extern int8_t i2c_send(uint8_t dev, uint8_t size); extern void init_i2c(); #define EXT_BUFSIZE 16 extern uint8_t ext_buf[];