1 .file "eeprom.c" 2 .arch atmega1284p 3 __SREG__ = 0x3f 4 __SP_H__ = 0x3e 5 __SP_L__ = 0x3d 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 8 .global __do_copy_data 9 .global __do_clear_bss 10 .text 12 eeprom_read_byte: 13 /* prologue: frame size=0 */ 14 /* prologue end (size=0) */ 15 .L2: 16 0000 F999 sbic 63-0x20,1 17 0002 00C0 rjmp .L2 18 0004 92BD out (65)+1-0x20,r25 19 0006 81BD out 65-0x20,r24 20 /* #APP */ 21 /* START EEPROM READ CRITICAL SECTION */ 22 0008 F89A sbi 31, 0 23 000a 80B5 in r24, 32 24 /* END EEPROM READ CRITICAL SECTION */ 25 26 /* #NOAPP */ 27 000c 9927 clr r25 28 /* epilogue: frame size=0 */ 29 000e 0895 ret 30 /* epilogue end (size=1) */ 31 /* function eeprom_read_byte size 16 (15) */ 34 eeprom_write_byte: 35 /* prologue: frame size=0 */ 36 /* prologue end (size=0) */ 37 .L6: 38 0010 F999 sbic 63-0x20,1 39 0012 00C0 rjmp .L6 40 0014 1FBA out 63-0x20,__zero_reg__ 41 0016 92BD out (65)+1-0x20,r25 42 0018 81BD out 65-0x20,r24 43 001a 60BD out 64-0x20,r22 44 /* #APP */ 45 /* START EEPROM WRITE CRITICAL SECTION */ 46 001c 0FB6 in r0, 63 47 001e F894 cli 48 0020 FA9A sbi 31, 2 49 0022 F99A sbi 31, 1 50 0024 0FBE out 63, r0 51 /* END EEPROM WRITE CRITICAL SECTION */ 52 /* #NOAPP */ 53 /* epilogue: frame size=0 */ 54 0026 0895 ret 55 /* epilogue end (size=1) */ 56 /* function eeprom_write_byte size 21 (20) */ 58 .global RAM_Checksum 60 RAM_Checksum: 61 /* prologue: frame size=0 */ 62 /* prologue end (size=0) */ 63 0028 4AEA ldi r20,lo8(-86) 64 002a 20E0 ldi r18,lo8(0) 65 002c 30E0 ldi r19,hi8(0) 66 002e 2617 cp r18,r22 67 0030 3707 cpc r19,r23 68 0032 00F4 brsh .L15 69 0034 FC01 movw r30,r24 70 .L13: 71 0036 8191 ld r24,Z+ 72 0038 480F add r20,r24 73 003a 2F5F subi r18,lo8(-(1)) 74 003c 3F4F sbci r19,hi8(-(1)) 75 003e 2617 cp r18,r22 76 0040 3707 cpc r19,r23 77 0042 00F0 brlo .L13 78 .L15: 79 0044 842F mov r24,r20 80 0046 9927 clr r25 81 /* epilogue: frame size=0 */ 82 0048 0895 ret 83 /* epilogue end (size=1) */ 84 /* function RAM_Checksum size 17 (16) */ 86 .global EEProm_Checksum 88 EEProm_Checksum: 89 /* prologue: frame size=0 */ 90 /* prologue end (size=0) */ 91 004a EAEA ldi r30,lo8(-86) 92 004c 40E0 ldi r20,lo8(0) 93 004e 50E0 ldi r21,hi8(0) 94 0050 4617 cp r20,r22 95 0052 5707 cpc r21,r23 96 0054 00F4 brsh .L26 97 0056 9C01 movw r18,r24 98 .L30: 99 0058 F999 sbic 63-0x20,1 100 005a 00C0 rjmp .L30 101 005c 32BD out (65)+1-0x20,r19 102 005e 21BD out 65-0x20,r18 103 /* #APP */ 104 /* START EEPROM READ CRITICAL SECTION */ 105 0060 F89A sbi 31, 0 106 0062 80B5 in r24, 32 107 /* END EEPROM READ CRITICAL SECTION */ 108 109 /* #NOAPP */ 110 0064 E80F add r30,r24 111 0066 4F5F subi r20,lo8(-(1)) 112 0068 5F4F sbci r21,hi8(-(1)) 113 006a 2F5F subi r18,lo8(-(1)) 114 006c 3F4F sbci r19,hi8(-(1)) 115 006e 4617 cp r20,r22 116 0070 5707 cpc r21,r23 117 0072 00F0 brlo .L30 118 .L26: 119 0074 8E2F mov r24,r30 120 0076 9927 clr r25 121 /* epilogue: frame size=0 */ 122 0078 0895 ret 123 /* epilogue end (size=1) */ 124 /* function EEProm_Checksum size 32 (31) */ 126 .global ParamSet_DefaultStickMapping 128 ParamSet_DefaultStickMapping: 129 /* prologue: frame size=0 */ 130 /* prologue end (size=0) */ 131 007a 81E0 ldi r24,lo8(1) 132 007c 8093 0000 sts EE_Parameter+3,r24 133 0080 82E0 ldi r24,lo8(2) 134 0082 8093 0000 sts EE_Parameter+2,r24 135 0086 83E0 ldi r24,lo8(3) 136 0088 8093 0000 sts EE_Parameter+1,r24 137 008c 84E0 ldi r24,lo8(4) 138 008e 8093 0000 sts EE_Parameter+4,r24 139 0092 85E0 ldi r24,lo8(5) 140 0094 8093 0000 sts EE_Parameter+5,r24 141 0098 86E0 ldi r24,lo8(6) 142 009a 8093 0000 sts EE_Parameter+6,r24 143 009e 87E0 ldi r24,lo8(7) 144 00a0 8093 0000 sts EE_Parameter+7,r24 145 00a4 88E0 ldi r24,lo8(8) 146 00a6 8093 0000 sts EE_Parameter+8,r24 147 00aa 89E0 ldi r24,lo8(9) 148 00ac 8093 0000 sts EE_Parameter+9,r24 149 00b0 8AE0 ldi r24,lo8(10) 150 00b2 8093 0000 sts EE_Parameter+10,r24 151 00b6 8BE0 ldi r24,lo8(11) 152 00b8 8093 0000 sts EE_Parameter+11,r24 153 00bc 8CE0 ldi r24,lo8(12) 154 00be 8093 0000 sts EE_Parameter+12,r24 155 /* epilogue: frame size=0 */ 156 00c2 0895 ret 157 /* epilogue end (size=1) */ 158 /* function ParamSet_DefaultStickMapping size 37 (36) */ 160 .global CommonDefaults 162 CommonDefaults: 163 /* prologue: frame size=0 */ 164 /* prologue end (size=0) */ 165 00c4 8DE5 ldi r24,lo8(93) 166 00c6 8093 0000 sts EE_Parameter,r24 167 00ca 8CE0 ldi r24,lo8(12) 168 00cc E0E0 ldi r30,lo8(EE_Parameter+112) 169 00ce F0E0 ldi r31,hi8(EE_Parameter+112) 170 00d0 1192 st Z+,__zero_reg__ 171 00d2 8A95 dec r24 172 00d4 01F4 brne .-6 173 00d6 8091 0000 lds r24,PlatinenVersion 174 00da 8431 cpi r24,lo8(20) 175 00dc 00F0 brlo .L33 176 00de 8AE0 ldi r24,lo8(10) 177 00e0 8093 0000 sts EE_Parameter+32,r24 178 00e4 1092 0000 sts EE_Parameter+68,__zero_reg__ 179 00e8 8BE1 ldi r24,lo8(27) 180 00ea 8093 0000 sts EE_Parameter+28,r24 181 00ee 8EE4 ldi r24,lo8(78) 182 00f0 00C0 rjmp .L35 183 .L33: 184 00f2 83E0 ldi r24,lo8(3) 185 00f4 8093 0000 sts EE_Parameter+32,r24 186 00f8 80E2 ldi r24,lo8(32) 187 00fa 8093 0000 sts EE_Parameter+68,r24 188 00fe 8EE1 ldi r24,lo8(30) 189 0100 8093 0000 sts EE_Parameter+28,r24 190 0104 85E5 ldi r24,lo8(85) 191 .L35: 192 0106 8093 0000 sts EE_Parameter+65,r24 193 010a 8093 0000 sts EE_Parameter+66,r24 194 010e 80E2 ldi r24,lo8(32) 195 0110 8093 0000 sts EE_Parameter+67,r24 196 0114 1092 0000 sts EE_Parameter+108,__zero_reg__ 197 0118 8AE6 ldi r24,lo8(106) 198 011a 8093 0000 sts EE_Parameter+13,r24 199 011e 82E2 ldi r24,lo8(34) 200 0120 8093 0000 sts EE_Parameter+110,r24 201 0124 80E4 ldi r24,lo8(64) 202 0126 8093 0000 sts EE_Parameter+111,r24 203 012a 66E0 ldi r22,lo8(6) 204 012c 6093 0000 sts EE_Parameter+39,r22 205 0130 1092 0000 sts EE_Parameter+100,__zero_reg__ 206 0134 1092 0000 sts EE_Parameter+97,__zero_reg__ 207 0138 48E0 ldi r20,lo8(8) 208 013a 4093 0000 sts EE_Parameter+26,r20 209 013e 56EE ldi r21,lo8(-26) 210 0140 5093 0000 sts EE_Parameter+27,r21 211 0144 8093 0000 sts EE_Parameter+29,r24 212 0148 9EE1 ldi r25,lo8(30) 213 014a 9093 0000 sts EE_Parameter+14,r25 214 014e 8FEF ldi r24,lo8(-1) 215 0150 8093 0000 sts EE_Parameter+16,r24 216 0154 2FE0 ldi r18,lo8(15) 217 0156 2093 0000 sts EE_Parameter+17,r18 218 015a 9093 0000 sts EE_Parameter+15,r25 219 015e 1092 0000 sts EE_Parameter+19,__zero_reg__ 220 0162 4093 0000 sts EE_Parameter+20,r20 221 0166 84E1 ldi r24,lo8(20) 222 0168 8093 0000 sts EE_Parameter+21,r24 223 016c 1092 0000 sts EE_Parameter+22,__zero_reg__ 224 0170 2093 0000 sts EE_Parameter+18,r18 225 0174 1092 0000 sts EE_Parameter+41,__zero_reg__ 226 0178 1092 0000 sts EE_Parameter+42,__zero_reg__ 227 017c 1092 0000 sts EE_Parameter+43,__zero_reg__ 228 0180 1092 0000 sts EE_Parameter+44,__zero_reg__ 229 0184 1092 0000 sts EE_Parameter+70,__zero_reg__ 230 0188 1092 0000 sts EE_Parameter+71,__zero_reg__ 231 018c 1092 0000 sts EE_Parameter+72,__zero_reg__ 232 0190 1092 0000 sts EE_Parameter+73,__zero_reg__ 233 0194 90E8 ldi r25,lo8(-128) 234 0196 9093 0000 sts EE_Parameter+45,r25 235 019a 32E3 ldi r19,lo8(50) 236 019c 3093 0000 sts EE_Parameter+46,r19 237 01a0 82E0 ldi r24,lo8(2) 238 01a2 8093 0000 sts EE_Parameter+109,r24 239 01a6 2093 0000 sts EE_Parameter+47,r18 240 01aa 5093 0000 sts EE_Parameter+48,r21 241 01ae 84E0 ldi r24,lo8(4) 242 01b0 8093 0000 sts EE_Parameter+53,r24 243 01b4 2DE7 ldi r18,lo8(125) 244 01b6 2093 0000 sts EE_Parameter+56,r18 245 01ba 2093 0000 sts EE_Parameter+57,r18 246 01be 2093 0000 sts EE_Parameter+58,r18 247 01c2 9093 0000 sts EE_Parameter+49,r25 248 01c6 55E5 ldi r21,lo8(85) 249 01c8 5093 0000 sts EE_Parameter+50,r21 250 01cc 86E4 ldi r24,lo8(70) 251 01ce 8093 0000 sts EE_Parameter+51,r24 252 01d2 8CED ldi r24,lo8(-36) 253 01d4 8093 0000 sts EE_Parameter+52,r24 254 01d8 8CE3 ldi r24,lo8(60) 255 01da 8093 0000 sts EE_Parameter+54,r24 256 01de 1092 0000 sts EE_Parameter+55,__zero_reg__ 257 01e2 8FE5 ldi r24,lo8(95) 258 01e4 8093 0000 sts EE_Parameter+74,r24 259 01e8 83EF ldi r24,lo8(-13) 260 01ea 8093 0000 sts EE_Parameter+76,r24 261 01ee 8AEA ldi r24,lo8(-86) 262 01f0 8093 0000 sts EE_Parameter+78,r24 263 01f4 8093 0000 sts EE_Parameter+79,r24 264 01f8 88E2 ldi r24,lo8(40) 265 01fa 8093 0000 sts EE_Parameter+75,r24 266 01fe 8093 0000 sts EE_Parameter+77,r24 267 0202 1092 0000 sts EE_Parameter+80,__zero_reg__ 268 0206 3093 0000 sts EE_Parameter+59,r19 269 020a 9AE5 ldi r25,lo8(90) 270 020c 9093 0000 sts EE_Parameter+60,r25 271 0210 3093 0000 sts EE_Parameter+61,r19 272 0214 8EEF ldi r24,lo8(-2) 273 0216 8093 0000 sts EE_Parameter+81,r24 274 021a 84E6 ldi r24,lo8(100) 275 021c 8093 0000 sts EE_Parameter+82,r24 276 0220 9093 0000 sts EE_Parameter+83,r25 277 0224 9093 0000 sts EE_Parameter+84,r25 278 0228 9093 0000 sts EE_Parameter+85,r25 279 022c 8BE4 ldi r24,lo8(75) 280 022e 8093 0000 sts EE_Parameter+86,r24 281 0232 5093 0000 sts EE_Parameter+87,r21 282 0236 8093 0000 sts EE_Parameter+88,r24 283 023a 1092 0000 sts EE_Parameter+89,__zero_reg__ 284 023e 6093 0000 sts EE_Parameter+90,r22 285 0242 4093 0000 sts EE_Parameter+91,r20 286 0246 9093 0000 sts EE_Parameter+92,r25 287 024a 8AE2 ldi r24,lo8(42) 288 024c 8093 0000 sts EE_Parameter+93,r24 289 0250 85EF ldi r24,lo8(-11) 290 0252 8093 0000 sts EE_Parameter+94,r24 291 0256 8CE8 ldi r24,lo8(-116) 292 0258 8093 0000 sts EE_Parameter+95,r24 293 025c 85E0 ldi r24,lo8(5) 294 025e 8093 0000 sts EE_Parameter+96,r24 295 0262 1092 0000 sts EE_Parameter+98,__zero_reg__ 296 0266 1092 0000 sts EE_Parameter+99,__zero_reg__ 297 026a 81E2 ldi r24,lo8(33) 298 026c 8093 0000 sts EE_Parameter+36,r24 299 0270 81E4 ldi r24,lo8(65) 300 0272 8093 0000 sts EE_Parameter+37,r24 301 0276 9093 0000 sts EE_Parameter+38,r25 302 027a 1092 0000 sts EE_Parameter+101,__zero_reg__ 303 027e 1092 0000 sts EE_Parameter+102,__zero_reg__ 304 0282 1092 0000 sts EE_Parameter+103,__zero_reg__ 305 0286 86E9 ldi r24,lo8(-106) 306 0288 8093 0000 sts EE_Parameter+104,r24 307 028c 2093 0000 sts EE_Parameter+62,r18 308 0290 84E3 ldi r24,lo8(52) 309 0292 8093 0000 sts EE_Parameter+63,r24 310 0296 1092 0000 sts EE_Parameter+105,__zero_reg__ 311 029a 1092 0000 sts EE_Parameter+106,__zero_reg__ 312 029e 1092 0000 sts EE_Parameter+107,__zero_reg__ 313 /* epilogue: frame size=0 */ 314 02a2 0895 ret 315 /* epilogue end (size=1) */ 316 /* function CommonDefaults size 240 (239) */ 318 .global ParamSet_DefaultSet1 320 ParamSet_DefaultSet1: 321 /* prologue: frame size=0 */ 322 /* prologue end (size=0) */ 323 02a4 0E94 0000 call CommonDefaults 324 02a8 8AE0 ldi r24,lo8(10) 325 02aa 8093 0000 sts EE_Parameter+23,r24 326 02ae 80E1 ldi r24,lo8(16) 327 02b0 8093 0000 sts EE_Parameter+24,r24 328 02b4 26E0 ldi r18,lo8(6) 329 02b6 2093 0000 sts EE_Parameter+25,r18 330 02ba 9AE5 ldi r25,lo8(90) 331 02bc 9093 0000 sts EE_Parameter+30,r25 332 02c0 88E7 ldi r24,lo8(120) 333 02c2 8093 0000 sts EE_Parameter+31,r24 334 02c6 9093 0000 sts EE_Parameter+33,r25 335 02ca 8093 0000 sts EE_Parameter+34,r24 336 02ce 2093 0000 sts EE_Parameter+35,r18 337 02d2 80E2 ldi r24,lo8(32) 338 02d4 8093 0000 sts EE_Parameter+40,r24 339 02d8 8CE3 ldi r24,lo8(60) 340 02da 8093 0000 sts EE_Parameter+64,r24 341 02de 8BE4 ldi r24,lo8(75) 342 02e0 8093 0000 sts EE_Parameter+69,r24 343 02e4 86E4 ldi r24,lo8(1953718598) 344 02e6 91E6 ldi r25,hi8(1953718598) 345 02e8 A3E7 ldi r26,hlo8(1953718598) 346 02ea B4E7 ldi r27,hhi8(1953718598) 347 02ec 8093 0000 sts EE_Parameter+112,r24 348 02f0 9093 0000 sts (EE_Parameter+112)+1,r25 349 02f4 A093 0000 sts (EE_Parameter+112)+2,r26 350 02f8 B093 0000 sts (EE_Parameter+112)+3,r27 351 02fc 6CE7 ldi r22,lo8(124) 352 02fe 70E0 ldi r23,hi8(124) 353 0300 80E0 ldi r24,lo8(EE_Parameter) 354 0302 90E0 ldi r25,hi8(EE_Parameter) 355 0304 0E94 0000 call RAM_Checksum 356 0308 8093 0000 sts EE_Parameter+124,r24 357 /* epilogue: frame size=0 */ 358 030c 0895 ret 359 /* epilogue end (size=1) */ 360 /* function ParamSet_DefaultSet1 size 53 (52) */ 362 .data 363 .LC0: 364 0000 4E6F 726D .string "Normal" 364 616C 00 365 .text 366 .global ParamSet_DefaultSet2 368 ParamSet_DefaultSet2: 369 /* prologue: frame size=0 */ 370 030e CF93 push r28 371 0310 DF93 push r29 372 /* prologue end (size=2) */ 373 0312 0E94 0000 call CommonDefaults 374 0316 88E0 ldi r24,lo8(8) 375 0318 8093 0000 sts EE_Parameter+23,r24 376 031c 30E1 ldi r19,lo8(16) 377 031e 3093 0000 sts EE_Parameter+24,r19 378 0322 26E0 ldi r18,lo8(6) 379 0324 2093 0000 sts EE_Parameter+25,r18 380 0328 94E6 ldi r25,lo8(100) 381 032a 9093 0000 sts EE_Parameter+30,r25 382 032e 88E7 ldi r24,lo8(120) 383 0330 8093 0000 sts EE_Parameter+31,r24 384 0334 9093 0000 sts EE_Parameter+33,r25 385 0338 8093 0000 sts EE_Parameter+34,r24 386 033c 2093 0000 sts EE_Parameter+35,r18 387 0340 3093 0000 sts EE_Parameter+40,r19 388 0344 86E4 ldi r24,lo8(70) 389 0346 8093 0000 sts EE_Parameter+64,r24 390 034a 8093 0000 sts EE_Parameter+69,r24 391 034e A0E0 ldi r26,lo8(EE_Parameter+112) 392 0350 B0E0 ldi r27,hi8(EE_Parameter+112) 393 0352 E0E0 ldi r30,lo8(.LC0) 394 0354 F0E0 ldi r31,hi8(.LC0) 395 0356 ED01 movw r28,r26 396 0358 0190 ld __tmp_reg__,Z+ 397 035a 0992 st Y+,__tmp_reg__ 398 035c 2A95 dec r18 399 035e 01F4 brne .-8 400 0360 6CE7 ldi r22,lo8(124) 401 0362 70E0 ldi r23,hi8(124) 402 0364 CD01 movw r24,r26 403 0366 8057 subi r24,lo8(-(-112)) 404 0368 9040 sbci r25,hi8(-(-112)) 405 036a 0E94 0000 call RAM_Checksum 406 036e 8093 0000 sts EE_Parameter+124,r24 407 /* epilogue: frame size=0 */ 408 0372 DF91 pop r29 409 0374 CF91 pop r28 410 0376 0895 ret 411 /* epilogue end (size=3) */ 412 /* function ParamSet_DefaultSet2 size 53 (48) */ 414 .global ParamSet_DefaultSet3 416 ParamSet_DefaultSet3: 417 /* prologue: frame size=0 */ 418 /* prologue end (size=0) */ 419 0378 0E94 0000 call CommonDefaults 420 037c 26E0 ldi r18,lo8(6) 421 037e 2093 0000 sts EE_Parameter+23,r18 422 0382 8AE0 ldi r24,lo8(10) 423 0384 8093 0000 sts EE_Parameter+24,r24 424 0388 84E0 ldi r24,lo8(4) 425 038a 8093 0000 sts EE_Parameter+25,r24 426 038e 94E6 ldi r25,lo8(100) 427 0390 9093 0000 sts EE_Parameter+30,r25 428 0394 88E7 ldi r24,lo8(120) 429 0396 8093 0000 sts EE_Parameter+31,r24 430 039a 9093 0000 sts EE_Parameter+33,r25 431 039e 8093 0000 sts EE_Parameter+34,r24 432 03a2 2093 0000 sts EE_Parameter+35,r18 433 03a6 80E1 ldi r24,lo8(16) 434 03a8 8093 0000 sts EE_Parameter+40,r24 435 03ac 86E4 ldi r24,lo8(70) 436 03ae 8093 0000 sts EE_Parameter+64,r24 437 03b2 8093 0000 sts EE_Parameter+69,r24 438 03b6 85E4 ldi r24,lo8(2037604677) 439 03b8 91E6 ldi r25,hi8(2037604677) 440 03ba A3E7 ldi r26,hlo8(2037604677) 441 03bc B9E7 ldi r27,hhi8(2037604677) 442 03be 8093 0000 sts EE_Parameter+112,r24 443 03c2 9093 0000 sts (EE_Parameter+112)+1,r25 444 03c6 A093 0000 sts (EE_Parameter+112)+2,r26 445 03ca B093 0000 sts (EE_Parameter+112)+3,r27 446 03ce 6CE7 ldi r22,lo8(124) 447 03d0 70E0 ldi r23,hi8(124) 448 03d2 80E0 ldi r24,lo8(EE_Parameter) 449 03d4 90E0 ldi r25,hi8(EE_Parameter) 450 03d6 0E94 0000 call RAM_Checksum 451 03da 8093 0000 sts EE_Parameter+124,r24 452 /* epilogue: frame size=0 */ 453 03de 0895 ret 454 /* epilogue end (size=1) */ 455 /* function ParamSet_DefaultSet3 size 52 (51) */ 457 .global GetParamByte 459 GetParamByte: 460 /* prologue: frame size=0 */ 461 /* prologue end (size=0) */ 462 .L40: 463 03e0 F999 sbic 63-0x20,1 464 03e2 00C0 rjmp .L40 465 03e4 92BD out (65)+1-0x20,r25 466 03e6 81BD out 65-0x20,r24 467 /* #APP */ 468 /* START EEPROM READ CRITICAL SECTION */ 469 03e8 F89A sbi 31, 0 470 03ea 80B5 in r24, 32 471 /* END EEPROM READ CRITICAL SECTION */ 472 473 /* #NOAPP */ 474 03ec 9927 clr r25 475 /* epilogue: frame size=0 */ 476 03ee 0895 ret 477 /* epilogue end (size=1) */ 478 /* function GetParamByte size 16 (15) */ 480 .global SetParamByte 482 SetParamByte: 483 /* prologue: frame size=0 */ 484 /* prologue end (size=0) */ 485 .L45: 486 03f0 F999 sbic 63-0x20,1 487 03f2 00C0 rjmp .L45 488 03f4 1FBA out 63-0x20,__zero_reg__ 489 03f6 92BD out (65)+1-0x20,r25 490 03f8 81BD out 65-0x20,r24 491 03fa 60BD out 64-0x20,r22 492 /* #APP */ 493 /* START EEPROM WRITE CRITICAL SECTION */ 494 03fc 0FB6 in r0, 63 495 03fe F894 cli 496 0400 FA9A sbi 31, 2 497 0402 F99A sbi 31, 1 498 0404 0FBE out 63, r0 499 /* END EEPROM WRITE CRITICAL SECTION */ 500 /* #NOAPP */ 501 /* epilogue: frame size=0 */ 502 0406 0895 ret 503 /* epilogue end (size=1) */ 504 /* function SetParamByte size 21 (20) */ 506 .global GetParamWord 508 GetParamWord: 509 /* prologue: frame size=0 */ 510 /* prologue end (size=0) */ 511 0408 60E0 ldi r22,lo8(pm(eeprom_read_byte)) 512 040a 70E0 ldi r23,hi8(pm(eeprom_read_byte)) 513 040c 0E94 0000 call __eerd_word 514 /* epilogue: frame size=0 */ 515 0410 0895 ret 516 /* epilogue end (size=1) */ 517 /* function GetParamWord size 5 (4) */ 519 .global SetParamWord 521 SetParamWord: 522 /* prologue: frame size=0 */ 523 /* prologue end (size=0) */ 524 0412 40E0 ldi r20,lo8(pm(eeprom_write_byte)) 525 0414 50E0 ldi r21,hi8(pm(eeprom_write_byte)) 526 0416 0E94 0000 call __eewr_word 527 /* epilogue: frame size=0 */ 528 041a 0895 ret 529 /* epilogue end (size=1) */ 530 /* function SetParamWord size 5 (4) */ 532 .global ParamSet_ReadFromEEProm 534 ParamSet_ReadFromEEProm: 535 /* prologue: frame size=0 */ 536 041c EF92 push r14 537 041e FF92 push r15 538 0420 0F93 push r16 539 0422 1F93 push r17 540 0424 CF93 push r28 541 /* prologue end (size=5) */ 542 0426 C82F mov r28,r24 543 0428 8150 subi r24,lo8(-(-1)) 544 042a 8530 cpi r24,lo8(5) 545 042c 00F0 brlo .L54 546 042e C3E0 ldi r28,lo8(3) 547 .L54: 548 0430 8DE7 ldi r24,lo8(125) 549 0432 C89F mul r28,r24 550 0434 8001 movw r16,r0 551 0436 1124 clr r1 552 0438 87EE ldi r24,lo8(-25) 553 043a E82E mov r14,r24 554 043c 8FEF ldi r24,hi8(-25) 555 043e F82E mov r15,r24 556 0440 E00E add r14,r16 557 0442 F11E adc r15,r17 558 0444 6CE7 ldi r22,lo8(124) 559 0446 70E0 ldi r23,hi8(124) 560 0448 C701 movw r24,r14 561 044a 0E94 0000 call EEProm_Checksum 562 044e 682F mov r22,r24 563 0450 9801 movw r18,r16 564 0452 2D59 subi r18,lo8(-(99)) 565 0454 3F4F sbci r19,hi8(-(99)) 566 .L56: 567 0456 8FB3 in r24,63-0x20 568 0458 9927 clr r25 569 045a AC01 movw r20,r24 570 045c 4270 andi r20,lo8(2) 571 045e 5070 andi r21,hi8(2) 572 0460 81FD sbrc r24,1 573 0462 00C0 rjmp .L56 574 0464 32BD out (65)+1-0x20,r19 575 0466 21BD out 65-0x20,r18 576 /* #APP */ 577 /* START EEPROM READ CRITICAL SECTION */ 578 0468 F89A sbi 31, 0 579 046a 80B5 in r24, 32 580 /* END EEPROM READ CRITICAL SECTION */ 581 582 /* #NOAPP */ 583 046c 8617 cp r24,r22 584 046e 01F0 breq .L61 585 0470 CA01 movw r24,r20 586 0472 00C0 rjmp .L53 587 .L61: 588 0474 8FB3 in r24,63-0x20 589 0476 9927 clr r25 590 0478 9C01 movw r18,r24 591 047a 2270 andi r18,lo8(2) 592 047c 3070 andi r19,hi8(2) 593 047e 81FD sbrc r24,1 594 0480 00C0 rjmp .L61 595 0482 F2BC out (65)+1-0x20,r15 596 0484 E1BC out 65-0x20,r14 597 /* #APP */ 598 /* START EEPROM READ CRITICAL SECTION */ 599 0486 F89A sbi 31, 0 600 0488 80B5 in r24, 32 601 /* END EEPROM READ CRITICAL SECTION */ 602 603 /* #NOAPP */ 604 048a 8D35 cpi r24,lo8(93) 605 048c 01F0 breq .L60 606 048e C901 movw r24,r18 607 0490 00C0 rjmp .L53 608 .L60: 609 0492 8DE7 ldi r24,lo8(125) 610 0494 C89F mul r28,r24 611 0496 C001 movw r24,r0 612 0498 1124 clr r1 613 049a 4997 sbiw r24,25 614 049c 20E0 ldi r18,lo8(pm(eeprom_read_byte)) 615 049e 30E0 ldi r19,hi8(pm(eeprom_read_byte)) 616 04a0 4DE7 ldi r20,lo8(125) 617 04a2 50E0 ldi r21,hi8(125) 618 04a4 BC01 movw r22,r24 619 04a6 80E0 ldi r24,lo8(EE_Parameter) 620 04a8 90E0 ldi r25,hi8(EE_Parameter) 621 04aa 0E94 0000 call __eerd_block 622 04ae 0E94 0000 call LED_Init 623 04b2 0E94 0000 call LIBFC_HoTT_Clear 624 04b6 81E0 ldi r24,lo8(1) 625 04b8 90E0 ldi r25,hi8(1) 626 .L53: 627 /* epilogue: frame size=0 */ 628 04ba CF91 pop r28 629 04bc 1F91 pop r17 630 04be 0F91 pop r16 631 04c0 FF90 pop r15 632 04c2 EF90 pop r14 633 04c4 0895 ret 634 /* epilogue end (size=6) */ 635 /* function ParamSet_ReadFromEEProm size 101 (90) */ 637 .global SetActiveParamSet 639 SetActiveParamSet: 640 /* prologue: frame size=0 */ 641 /* prologue end (size=0) */ 642 04c6 282F mov r18,r24 643 04c8 8630 cpi r24,lo8(6) 644 04ca 00F0 brlo .L67 645 04cc 25E0 ldi r18,lo8(5) 646 04ce 00C0 rjmp .L69 647 .L67: 648 04d0 8823 tst r24 649 04d2 01F4 brne .L69 650 04d4 21E0 ldi r18,lo8(1) 651 .L69: 652 04d6 F999 sbic 63-0x20,1 653 04d8 00C0 rjmp .L69 654 04da 1FBA out 63-0x20,__zero_reg__ 655 04dc 82E0 ldi r24,lo8(2) 656 04de 90E0 ldi r25,hi8(2) 657 04e0 92BD out (65)+1-0x20,r25 658 04e2 81BD out 65-0x20,r24 659 04e4 20BD out 64-0x20,r18 660 /* #APP */ 661 /* START EEPROM WRITE CRITICAL SECTION */ 662 04e6 0FB6 in r0, 63 663 04e8 F894 cli 664 04ea FA9A sbi 31, 2 665 04ec F99A sbi 31, 1 666 04ee 0FBE out 63, r0 667 /* END EEPROM WRITE CRITICAL SECTION */ 668 /* #NOAPP */ 669 /* epilogue: frame size=0 */ 670 04f0 0895 ret 671 /* epilogue end (size=1) */ 672 /* function SetActiveParamSet size 31 (30) */ 674 .global ParamSet_WriteToEEProm 676 ParamSet_WriteToEEProm: 677 /* prologue: frame size=0 */ 678 04f2 CF93 push r28 679 /* prologue end (size=1) */ 680 04f4 C82F mov r28,r24 681 04f6 8091 0000 lds r24,EE_Parameter 682 04fa 8D35 cpi r24,lo8(93) 683 04fc 01F0 breq .+2 684 04fe 00C0 rjmp .L74 685 0500 C630 cpi r28,lo8(6) 686 0502 00F0 brlo .L75 687 0504 C5E0 ldi r28,lo8(5) 688 0506 00C0 rjmp .L76 689 .L75: 690 0508 CC23 tst r28 691 050a 01F4 brne .+2 692 050c 00C0 rjmp .L74 693 .L76: 694 050e 0E94 0000 call LIBFC_CheckSettings 695 0512 8091 0000 lds r24,EE_Parameter+111 696 0516 82FF sbrs r24,2 697 0518 00C0 rjmp .L77 698 051a 8091 0000 lds r24,EE_Parameter+37 699 051e 8436 cpi r24,lo8(100) 700 0520 00F0 brlo .L77 701 0522 80E5 ldi r24,lo8(80) 702 0524 8093 0000 sts EE_Parameter+37,r24 703 .L77: 704 0528 6CE7 ldi r22,lo8(124) 705 052a 70E0 ldi r23,hi8(124) 706 052c 80E0 ldi r24,lo8(EE_Parameter) 707 052e 90E0 ldi r25,hi8(EE_Parameter) 708 0530 0E94 0000 call RAM_Checksum 709 0534 8093 0000 sts EE_Parameter+124,r24 710 0538 8DE7 ldi r24,lo8(125) 711 053a C89F mul r28,r24 712 053c C001 movw r24,r0 713 053e 1124 clr r1 714 0540 20E0 ldi r18,lo8(pm(eeprom_write_byte)) 715 0542 30E0 ldi r19,hi8(pm(eeprom_write_byte)) 716 0544 4DE7 ldi r20,lo8(125) 717 0546 50E0 ldi r21,hi8(125) 718 0548 60E0 ldi r22,lo8(EE_Parameter) 719 054a 70E0 ldi r23,hi8(EE_Parameter) 720 054c 4997 sbiw r24,25 721 054e 0E94 0000 call __eewr_block 722 0552 20E0 ldi r18,lo8(pm(eeprom_write_byte)) 723 0554 30E0 ldi r19,hi8(pm(eeprom_write_byte)) 724 0556 4CE0 ldi r20,lo8(12) 725 0558 50E0 ldi r21,hi8(12) 726 055a 60E0 ldi r22,lo8(EE_Parameter+1) 727 055c 70E0 ldi r23,hi8(EE_Parameter+1) 728 055e 80E5 ldi r24,lo8(80) 729 0560 90E0 ldi r25,hi8(80) 730 0562 0E94 0000 call __eewr_block 731 0566 6CE0 ldi r22,lo8(12) 732 0568 70E0 ldi r23,hi8(12) 733 056a 80E0 ldi r24,lo8(EE_Parameter+1) 734 056c 90E0 ldi r25,hi8(EE_Parameter+1) 735 056e 0E94 0000 call RAM_Checksum 736 0572 282F mov r18,r24 737 .L81: 738 0574 F999 sbic 63-0x20,1 739 0576 00C0 rjmp .L81 740 0578 1FBA out 63-0x20,__zero_reg__ 741 057a 8CE5 ldi r24,lo8(92) 742 057c 90E0 ldi r25,hi8(92) 743 057e 92BD out (65)+1-0x20,r25 744 0580 81BD out 65-0x20,r24 745 0582 20BD out 64-0x20,r18 746 /* #APP */ 747 /* START EEPROM WRITE CRITICAL SECTION */ 748 0584 0FB6 in r0, 63 749 0586 F894 cli 750 0588 FA9A sbi 31, 2 751 058a F99A sbi 31, 1 752 058c 0FBE out 63, r0 753 /* END EEPROM WRITE CRITICAL SECTION */ 754 /* #NOAPP */ 755 058e 8C2F mov r24,r28 756 0590 0E94 0000 call SetActiveParamSet 757 0594 0E94 0000 call LED_Init 758 0598 0E94 0000 call LIBFC_HoTT_Clear 759 059c 81E0 ldi r24,lo8(1) 760 059e 90E0 ldi r25,hi8(1) 761 05a0 00C0 rjmp .L73 762 .L74: 763 05a2 80E0 ldi r24,lo8(0) 764 05a4 90E0 ldi r25,hi8(0) 765 .L73: 766 /* epilogue: frame size=0 */ 767 05a6 CF91 pop r28 768 05a8 0895 ret 769 /* epilogue end (size=2) */ 770 /* function ParamSet_WriteToEEProm size 101 (98) */ 772 .global MixerTable_ReadFromEEProm 774 MixerTable_ReadFromEEProm: 775 /* prologue: frame size=0 */ 776 /* prologue end (size=0) */ 777 05aa 6DE4 ldi r22,lo8(77) 778 05ac 70E0 ldi r23,hi8(77) 779 05ae 88EE ldi r24,lo8(1000) 780 05b0 93E0 ldi r25,hi8(1000) 781 05b2 0E94 0000 call EEProm_Checksum 782 05b6 482F mov r20,r24 783 .L87: 784 05b8 8FB3 in r24,63-0x20 785 05ba 9927 clr r25 786 05bc 9C01 movw r18,r24 787 05be 2270 andi r18,lo8(2) 788 05c0 3070 andi r19,hi8(2) 789 05c2 81FD sbrc r24,1 790 05c4 00C0 rjmp .L87 791 05c6 85E3 ldi r24,lo8(1077) 792 05c8 94E0 ldi r25,hi8(1077) 793 05ca 92BD out (65)+1-0x20,r25 794 05cc 81BD out 65-0x20,r24 795 /* #APP */ 796 /* START EEPROM READ CRITICAL SECTION */ 797 05ce F89A sbi 31, 0 798 05d0 80B5 in r24, 32 799 /* END EEPROM READ CRITICAL SECTION */ 800 801 /* #NOAPP */ 802 05d2 8417 cp r24,r20 803 05d4 01F4 brne .L97 804 .L92: 805 05d6 8FB3 in r24,63-0x20 806 05d8 9927 clr r25 807 05da 9C01 movw r18,r24 808 05dc 2270 andi r18,lo8(2) 809 05de 3070 andi r19,hi8(2) 810 05e0 81FD sbrc r24,1 811 05e2 00C0 rjmp .L92 812 05e4 88EE ldi r24,lo8(1000) 813 05e6 93E0 ldi r25,hi8(1000) 814 05e8 92BD out (65)+1-0x20,r25 815 05ea 81BD out 65-0x20,r24 816 /* #APP */ 817 /* START EEPROM READ CRITICAL SECTION */ 818 05ec F89A sbi 31, 0 819 05ee 80B5 in r24, 32 820 /* END EEPROM READ CRITICAL SECTION */ 821 822 /* #NOAPP */ 823 05f0 8130 cpi r24,lo8(1) 824 05f2 01F0 breq .L91 825 .L97: 826 05f4 C901 movw r24,r18 827 05f6 0895 ret 828 .L91: 829 05f8 20E0 ldi r18,lo8(pm(eeprom_read_byte)) 830 05fa 30E0 ldi r19,hi8(pm(eeprom_read_byte)) 831 05fc 4EE4 ldi r20,lo8(78) 832 05fe 50E0 ldi r21,hi8(78) 833 0600 68EE ldi r22,lo8(1000) 834 0602 73E0 ldi r23,hi8(1000) 835 0604 80E0 ldi r24,lo8(Mixer) 836 0606 90E0 ldi r25,hi8(Mixer) 837 0608 0E94 0000 call __eerd_block 838 060c 81E0 ldi r24,lo8(1) 839 060e 90E0 ldi r25,hi8(1) 840 0610 0895 ret 841 /* epilogue: frame size=0 */ 842 /* epilogue: noreturn */ 843 /* epilogue end (size=0) */ 844 /* function MixerTable_ReadFromEEProm size 68 (68) */ 846 .global MixerTable_WriteToEEProm 848 MixerTable_WriteToEEProm: 849 /* prologue: frame size=0 */ 850 /* prologue end (size=0) */ 851 0612 8091 0000 lds r24,Mixer 852 0616 8130 cpi r24,lo8(1) 853 0618 01F4 brne .L99 854 061a 6DE4 ldi r22,lo8(77) 855 061c 70E0 ldi r23,hi8(77) 856 061e 80E0 ldi r24,lo8(Mixer) 857 0620 90E0 ldi r25,hi8(Mixer) 858 0622 0E94 0000 call RAM_Checksum 859 0626 8093 0000 sts Mixer+77,r24 860 062a 20E0 ldi r18,lo8(pm(eeprom_write_byte)) 861 062c 30E0 ldi r19,hi8(pm(eeprom_write_byte)) 862 062e 4EE4 ldi r20,lo8(78) 863 0630 50E0 ldi r21,hi8(78) 864 0632 60E0 ldi r22,lo8(Mixer) 865 0634 70E0 ldi r23,hi8(Mixer) 866 0636 88EE ldi r24,lo8(1000) 867 0638 93E0 ldi r25,hi8(1000) 868 063a 0E94 0000 call __eewr_block 869 063e 81E0 ldi r24,lo8(1) 870 0640 90E0 ldi r25,hi8(1) 871 0642 0895 ret 872 .L99: 873 0644 80E0 ldi r24,lo8(0) 874 0646 90E0 ldi r25,hi8(0) 875 0648 0895 ret 876 /* epilogue: frame size=0 */ 877 /* epilogue: noreturn */ 878 /* epilogue end (size=0) */ 879 /* function MixerTable_WriteToEEProm size 28 (28) */ 881 .data 882 .LC1: 883 0007 5175 6164 .string "Quadro" 883 726F 00 884 000e 00 .string "" 885 000f 00 .string "" 886 0010 00 .string "" 887 0011 00 .string "" 888 0012 00 .string "" 889 0013 00 .string "" 890 .text 891 .global MixerTable_Default 893 MixerTable_Default: 894 /* prologue: frame size=0 */ 895 064a CF93 push r28 896 064c DF93 push r29 897 /* prologue end (size=2) */ 898 064e 81E0 ldi r24,lo8(1) 899 0650 8093 0000 sts Mixer,r24 900 0654 E0E0 ldi r30,lo8(Mixer) 901 0656 F0E0 ldi r31,hi8(Mixer) 902 0658 8FE0 ldi r24,lo8(15) 903 .L106: 904 065a 1586 std Z+13,__zero_reg__ 905 065c 1686 std Z+14,__zero_reg__ 906 065e 1786 std Z+15,__zero_reg__ 907 0660 108A std Z+16,__zero_reg__ 908 0662 8150 subi r24,lo8(-(-1)) 909 0664 3496 adiw r30,4 910 0666 87FF sbrs r24,7 911 0668 00C0 rjmp .L106 912 066a 80E4 ldi r24,lo8(64) 913 066c 8093 0000 sts Mixer+13,r24 914 0670 8093 0000 sts Mixer+14,r24 915 0674 1092 0000 sts Mixer+15,__zero_reg__ 916 0678 8093 0000 sts Mixer+16,r24 917 067c 8093 0000 sts Mixer+17,r24 918 0680 90EC ldi r25,lo8(-64) 919 0682 9093 0000 sts Mixer+18,r25 920 0686 1092 0000 sts Mixer+19,__zero_reg__ 921 068a 8093 0000 sts Mixer+20,r24 922 068e 8093 0000 sts Mixer+21,r24 923 0692 1092 0000 sts Mixer+22,__zero_reg__ 924 0696 9093 0000 sts Mixer+23,r25 925 069a 9093 0000 sts Mixer+24,r25 926 069e 8093 0000 sts Mixer+25,r24 927 06a2 1092 0000 sts Mixer+26,__zero_reg__ 928 06a6 8093 0000 sts Mixer+27,r24 929 06aa 9093 0000 sts Mixer+28,r25 930 06ae A0E0 ldi r26,lo8(Mixer+1) 931 06b0 B0E0 ldi r27,hi8(Mixer+1) 932 06b2 8CE0 ldi r24,lo8(12) 933 06b4 E0E0 ldi r30,lo8(.LC1) 934 06b6 F0E0 ldi r31,hi8(.LC1) 935 06b8 ED01 movw r28,r26 936 06ba 0190 ld __tmp_reg__,Z+ 937 06bc 0992 st Y+,__tmp_reg__ 938 06be 8A95 dec r24 939 06c0 01F4 brne .-8 940 06c2 6DE4 ldi r22,lo8(77) 941 06c4 70E0 ldi r23,hi8(77) 942 06c6 CD01 movw r24,r26 943 06c8 0197 sbiw r24,1 944 06ca 0E94 0000 call RAM_Checksum 945 06ce 8093 0000 sts Mixer+77,r24 946 /* epilogue: frame size=0 */ 947 06d2 DF91 pop r29 948 06d4 CF91 pop r28 949 06d6 0895 ret 950 /* epilogue end (size=3) */ 951 /* function MixerTable_Default size 71 (66) */ 953 .global GetActiveParamSet 955 GetActiveParamSet: 956 /* prologue: frame size=0 */ 957 /* prologue end (size=0) */ 958 .L110: 959 06d8 F999 sbic 63-0x20,1 960 06da 00C0 rjmp .L110 961 06dc 82E0 ldi r24,lo8(2) 962 06de 90E0 ldi r25,hi8(2) 963 06e0 92BD out (65)+1-0x20,r25 964 06e2 81BD out 65-0x20,r24 965 /* #APP */ 966 /* START EEPROM READ CRITICAL SECTION */ 967 06e4 F89A sbi 31, 0 968 06e6 80B5 in r24, 32 969 /* END EEPROM READ CRITICAL SECTION */ 970 971 /* #NOAPP */ 972 06e8 282F mov r18,r24 973 06ea 8630 cpi r24,lo8(6) 974 06ec 00F0 brlo .L114 975 06ee 23E0 ldi r18,lo8(3) 976 06f0 322F mov r19,r18 977 .L115: 978 06f2 F999 sbic 63-0x20,1 979 06f4 00C0 rjmp .L115 980 06f6 1FBA out 63-0x20,__zero_reg__ 981 06f8 82E0 ldi r24,lo8(2) 982 06fa 90E0 ldi r25,hi8(2) 983 06fc 92BD out (65)+1-0x20,r25 984 06fe 81BD out 65-0x20,r24 985 0700 30BD out 64-0x20,r19 986 /* #APP */ 987 /* START EEPROM WRITE CRITICAL SECTION */ 988 0702 0FB6 in r0, 63 989 0704 F894 cli 990 0706 FA9A sbi 31, 2 991 0708 F99A sbi 31, 1 992 070a 0FBE out 63, r0 993 /* END EEPROM WRITE CRITICAL SECTION */ 994 /* #NOAPP */ 995 .L114: 996 070c 822F mov r24,r18 997 070e 9927 clr r25 998 /* epilogue: frame size=0 */ 999 0710 0895 ret 1000 /* epilogue end (size=1) */ 1001 /* function GetActiveParamSet size 46 (45) */ 1003 .global SetDefaultParameter 1005 SetDefaultParameter: 1006 /* prologue: frame size=0 */ 1007 0712 1F93 push r17 1008 0714 CF93 push r28 1009 /* prologue end (size=2) */ 1010 0716 C82F mov r28,r24 1011 0718 162F mov r17,r22 1012 071a 8630 cpi r24,lo8(6) 1013 071c 00F0 brlo .L120 1014 071e C5E0 ldi r28,lo8(5) 1015 0720 00C0 rjmp .L121 1016 .L120: 1017 0722 8823 tst r24 1018 0724 01F4 brne .L121 1019 0726 C1E0 ldi r28,lo8(1) 1020 .L121: 1021 0728 8C2F mov r24,r28 1022 072a 9927 clr r25 1023 072c 8230 cpi r24,2 1024 072e 9105 cpc r25,__zero_reg__ 1025 0730 01F0 breq .L125 1026 0732 8330 cpi r24,3 1027 0734 9105 cpc r25,__zero_reg__ 1028 0736 04F4 brge .L127 1029 0738 0197 sbiw r24,1 1030 073a 01F4 brne .L127 1031 073c 0E94 0000 call ParamSet_DefaultSet1 1032 0740 00C0 rjmp .L123 1033 .L125: 1034 0742 0E94 0000 call ParamSet_DefaultSet2 1035 0746 00C0 rjmp .L123 1036 .L127: 1037 0748 0E94 0000 call ParamSet_DefaultSet3 1038 .L123: 1039 074c 1123 tst r17 1040 074e 01F0 breq .L129 1041 0750 6CE0 ldi r22,lo8(12) 1042 0752 70E0 ldi r23,hi8(12) 1043 0754 80E5 ldi r24,lo8(80) 1044 0756 90E0 ldi r25,hi8(80) 1045 0758 0E94 0000 call EEProm_Checksum 1046 075c 282F mov r18,r24 1047 .L131: 1048 075e F999 sbic 63-0x20,1 1049 0760 00C0 rjmp .L131 1050 0762 8CE5 ldi r24,lo8(92) 1051 0764 90E0 ldi r25,hi8(92) 1052 0766 92BD out (65)+1-0x20,r25 1053 0768 81BD out 65-0x20,r24 1054 /* #APP */ 1055 /* START EEPROM READ CRITICAL SECTION */ 1056 076a F89A sbi 31, 0 1057 076c 80B5 in r24, 32 1058 /* END EEPROM READ CRITICAL SECTION */ 1059 1060 /* #NOAPP */ 1061 076e 8217 cp r24,r18 1062 0770 01F4 brne .L129 1063 0772 20E0 ldi r18,lo8(pm(eeprom_read_byte)) 1064 0774 30E0 ldi r19,hi8(pm(eeprom_read_byte)) 1065 0776 4CE0 ldi r20,lo8(12) 1066 0778 50E0 ldi r21,hi8(12) 1067 077a 60E5 ldi r22,lo8(80) 1068 077c 70E0 ldi r23,hi8(80) 1069 077e 80E0 ldi r24,lo8(EE_Parameter+1) 1070 0780 90E0 ldi r25,hi8(EE_Parameter+1) 1071 0782 0E94 0000 call __eerd_block 1072 0786 00C0 rjmp .L137 1073 .L129: 1074 0788 0E94 0000 call ParamSet_DefaultStickMapping 1075 .L137: 1076 078c 8C2F mov r24,r28 1077 078e 0E94 0000 call ParamSet_WriteToEEProm 1078 /* epilogue: frame size=0 */ 1079 0792 CF91 pop r28 1080 0794 1F91 pop r17 1081 0796 0895 ret 1082 /* epilogue end (size=3) */ 1083 /* function SetDefaultParameter size 76 (71) */ 1085 .section .progmem.data,"a",@progbits 1088 __c.0: 1089 0000 0A0D 4765 .string "\n\rGenerating default Parameter Set %d" 1089 6E65 7261 1089 7469 6E67 1089 2064 6566 1089 6175 6C74 1092 __c.1: 1093 0026 0A0D 5573 .string "\n\rUsing Parameter Set %d" 1093 696E 6720 1093 5061 7261 1093 6D65 7465 1093 7220 5365 1096 __c.2: 1097 003f 0A0D 4765 .string "\n\rGenerating default Mixer Table" 1097 6E65 7261 1097 7469 6E67 1097 2064 6566 1097 6175 6C74 1100 __c.3: 1101 0060 0A0D 4D69 .string "\n\rMixer-Config: '%s' (%u Motors)" 1101 7865 722D 1101 436F 6E66 1101 6967 3A20 1101 2725 7327 1102 .text 1103 .global ParamSet_Init 1105 ParamSet_Init: 1106 /* prologue: frame size=0 */ 1107 0798 DF92 push r13 1108 079a EF92 push r14 1109 079c FF92 push r15 1110 079e 0F93 push r16 1111 07a0 1F93 push r17 1112 07a2 CF93 push r28 1113 /* prologue end (size=6) */ 1114 07a4 FF24 clr r15 1115 07a6 DF2C mov r13,r15 1116 07a8 EF2C mov r14,r15 1117 07aa 81E0 ldi r24,lo8(1) 1118 07ac 90E0 ldi r25,hi8(1) 1119 07ae 0E94 0000 call GetParamByte 1120 07b2 8D35 cpi r24,lo8(93) 1121 07b4 01F0 breq .L139 1122 07b6 31E0 ldi r19,lo8(1) 1123 07b8 E32E mov r14,r19 1124 .L139: 1125 07ba 6CE0 ldi r22,lo8(12) 1126 07bc 70E0 ldi r23,hi8(12) 1127 07be 80E5 ldi r24,lo8(80) 1128 07c0 90E0 ldi r25,hi8(80) 1129 07c2 0E94 0000 call EEProm_Checksum 1130 07c6 C82F mov r28,r24 1131 .L141: 1132 07c8 F999 sbic 63-0x20,1 1133 07ca 00C0 rjmp .L141 1134 07cc 8CE5 ldi r24,lo8(92) 1135 07ce 90E0 ldi r25,hi8(92) 1136 07d0 92BD out (65)+1-0x20,r25 1137 07d2 81BD out 65-0x20,r24 1138 /* #APP */ 1139 /* START EEPROM READ CRITICAL SECTION */ 1140 07d4 F89A sbi 31, 0 1141 07d6 80B5 in r24, 32 1142 /* END EEPROM READ CRITICAL SECTION */ 1143 1144 /* #NOAPP */ 1145 07d8 8C17 cp r24,r28 1146 07da 01F4 brne .L140 1147 07dc 21E0 ldi r18,lo8(1) 1148 07de D22E mov r13,r18 1149 .L140: 1150 07e0 C1E0 ldi r28,lo8(1) 1151 07e2 01E0 ldi r16,lo8(1) 1152 07e4 10E0 ldi r17,hi8(1) 1153 .L159: 1154 07e6 EE20 tst r14 1155 07e8 01F4 brne .L149 1156 07ea 8C2F mov r24,r28 1157 07ec 0E94 0000 call ParamSet_ReadFromEEProm 1158 07f0 8823 tst r24 1159 07f2 01F4 brne .L147 1160 .L149: 1161 07f4 91E0 ldi r25,lo8(1) 1162 07f6 F92E mov r15,r25 1163 07f8 1F93 push r17 1164 07fa 0F93 push r16 1165 07fc 80E0 ldi r24,lo8(__c.0) 1166 07fe 90E0 ldi r25,hi8(__c.0) 1167 0800 9F93 push r25 1168 0802 8F93 push r24 1169 0804 80E0 ldi r24,lo8(pm(uart_putchar)) 1170 0806 90E0 ldi r25,hi8(pm(uart_putchar)) 1171 0808 9F93 push r25 1172 080a 8F93 push r24 1173 080c E091 0000 lds r30,_printf_P 1174 0810 F091 0000 lds r31,(_printf_P)+1 1175 0814 0995 icall 1176 0816 2DB7 in r18,__SP_L__ 1177 0818 3EB7 in r19,__SP_H__ 1178 081a 2A5F subi r18,lo8(-(6)) 1179 081c 3F4F sbci r19,hi8(-(6)) 1180 081e 2DBF out __SP_L__,r18 1181 0820 0230 cpi r16,2 1182 0822 1105 cpc r17,__zero_reg__ 1183 0824 01F0 breq .L152 1184 0826 0330 cpi r16,3 1185 0828 1105 cpc r17,__zero_reg__ 1186 082a 04F4 brge .L154 1187 082c 0130 cpi r16,1 1188 082e 1105 cpc r17,__zero_reg__ 1189 0830 01F4 brne .L154 1190 0832 0E94 0000 call ParamSet_DefaultSet1 1191 0836 00C0 rjmp .L150 1192 .L152: 1193 0838 0E94 0000 call ParamSet_DefaultSet2 1194 083c 00C0 rjmp .L150 1195 .L154: 1196 083e 0E94 0000 call ParamSet_DefaultSet3 1197 .L150: 1198 0842 DD20 tst r13 1199 0844 01F0 breq .L156 1200 0846 20E0 ldi r18,lo8(pm(eeprom_read_byte)) 1201 0848 30E0 ldi r19,hi8(pm(eeprom_read_byte)) 1202 084a 4CE0 ldi r20,lo8(12) 1203 084c 50E0 ldi r21,hi8(12) 1204 084e 60E5 ldi r22,lo8(80) 1205 0850 70E0 ldi r23,hi8(80) 1206 0852 80E0 ldi r24,lo8(EE_Parameter+1) 1207 0854 90E0 ldi r25,hi8(EE_Parameter+1) 1208 0856 0E94 0000 call __eerd_block 1209 085a 00C0 rjmp .L158 1210 .L156: 1211 085c 0E94 0000 call ParamSet_DefaultStickMapping 1212 .L158: 1213 0860 8C2F mov r24,r28 1214 0862 0E94 0000 call ParamSet_WriteToEEProm 1215 .L147: 1216 0866 CF5F subi r28,lo8(-(1)) 1217 0868 0F5F subi r16,lo8(-(1)) 1218 086a 1F4F sbci r17,hi8(-(1)) 1219 086c C630 cpi r28,lo8(6) 1220 086e 00F4 brsh .+2 1221 0870 00C0 rjmp .L159 1222 0872 FF20 tst r15 1223 0874 01F0 breq .L160 1224 0876 83E0 ldi r24,lo8(3) 1225 0878 0E94 0000 call SetActiveParamSet 1226 .L160: 1227 087c 0E94 0000 call GetActiveParamSet 1228 0880 C82F mov r28,r24 1229 0882 0E94 0000 call ParamSet_ReadFromEEProm 1230 0886 8C2F mov r24,r28 1231 0888 9927 clr r25 1232 088a 9F93 push r25 1233 088c 8F93 push r24 1234 088e 80E0 ldi r24,lo8(__c.1) 1235 0890 90E0 ldi r25,hi8(__c.1) 1236 0892 9F93 push r25 1237 0894 8F93 push r24 1238 0896 00E0 ldi r16,lo8(pm(uart_putchar)) 1239 0898 10E0 ldi r17,hi8(pm(uart_putchar)) 1240 089a 1F93 push r17 1241 089c 0F93 push r16 1242 089e E091 0000 lds r30,_printf_P 1243 08a2 F091 0000 lds r31,(_printf_P)+1 1244 08a6 0995 icall 1245 08a8 81E0 ldi r24,lo8(1) 1246 08aa 90E0 ldi r25,hi8(1) 1247 08ac 0E94 0000 call GetParamByte 1248 08b0 2DB7 in r18,__SP_L__ 1249 08b2 3EB7 in r19,__SP_H__ 1250 08b4 2A5F subi r18,lo8(-(6)) 1251 08b6 3F4F sbci r19,hi8(-(6)) 1252 08b8 2DBF out __SP_L__,r18 1253 08ba 8F3F cpi r24,lo8(-1) 1254 08bc 01F0 breq .L162 1255 08be 0E94 0000 call MixerTable_ReadFromEEProm 1256 08c2 8823 tst r24 1257 08c4 01F4 brne .L161 1258 .L162: 1259 08c6 80E0 ldi r24,lo8(__c.2) 1260 08c8 90E0 ldi r25,hi8(__c.2) 1261 08ca 9F93 push r25 1262 08cc 8F93 push r24 1263 08ce 1F93 push r17 1264 08d0 0F93 push r16 1265 08d2 E091 0000 lds r30,_printf_P 1266 08d6 F091 0000 lds r31,(_printf_P)+1 1267 08da 0995 icall 1268 08dc 0E94 0000 call MixerTable_Default 1269 08e0 0E94 0000 call MixerTable_WriteToEEProm 1270 08e4 0F90 pop __tmp_reg__ 1271 08e6 0F90 pop __tmp_reg__ 1272 08e8 0F90 pop __tmp_reg__ 1273 08ea 0F90 pop __tmp_reg__ 1274 .L161: 1275 08ec EE20 tst r14 1276 08ee 01F0 breq .L163 1277 08f0 6DE5 ldi r22,lo8(93) 1278 08f2 81E0 ldi r24,lo8(1) 1279 08f4 90E0 ldi r25,hi8(1) 1280 08f6 0E94 0000 call SetParamByte 1281 .L163: 1282 08fa 1092 0000 sts RequiredMotors,__zero_reg__ 1283 08fe 90E0 ldi r25,lo8(0) 1284 0900 E0E0 ldi r30,lo8(Mixer+13) 1285 0902 F0E0 ldi r31,hi8(Mixer+13) 1286 0904 CFE0 ldi r28,lo8(15) 1287 .L168: 1288 0906 8081 ld r24,Z 1289 0908 3496 adiw r30,4 1290 090a 1816 cp __zero_reg__,r24 1291 090c 04F4 brge .L166 1292 090e 9F5F subi r25,lo8(-(1)) 1293 .L166: 1294 0910 C150 subi r28,lo8(-(-1)) 1295 0912 C7FF sbrs r28,7 1296 0914 00C0 rjmp .L168 1297 0916 9093 0000 sts RequiredMotors,r25 1298 091a 892F mov r24,r25 1299 091c 9927 clr r25 1300 091e 9F93 push r25 1301 0920 8F93 push r24 1302 0922 80E0 ldi r24,lo8(Mixer+1) 1303 0924 90E0 ldi r25,hi8(Mixer+1) 1304 0926 9F93 push r25 1305 0928 8F93 push r24 1306 092a 80E0 ldi r24,lo8(__c.3) 1307 092c 90E0 ldi r25,hi8(__c.3) 1308 092e 9F93 push r25 1309 0930 8F93 push r24 1310 0932 1F93 push r17 1311 0934 0F93 push r16 1312 0936 E091 0000 lds r30,_printf_P 1313 093a F091 0000 lds r31,(_printf_P)+1 1314 093e 0995 icall 1315 0940 0E94 0000 call PrintLine 1316 0944 8DB7 in r24,__SP_L__ 1317 0946 9EB7 in r25,__SP_H__ 1318 0948 0896 adiw r24,8 1319 094a 8DBF out __SP_L__,r24 1320 /* epilogue: frame size=0 */ 1321 094c CF91 pop r28 1322 094e 1F91 pop r17 1323 0950 0F91 pop r16 1324 0952 FF90 pop r15 1325 0954 EF90 pop r14 1326 0956 DF90 pop r13 1327 0958 0895 ret 1328 /* epilogue end (size=7) */ 1329 /* function ParamSet_Init size 233 (220) */ 1331 .comm Mixer,78,1 1332 .comm RequiredMotors,1,1 1333 .comm EE_Parameter,125,1 1334 /* File "eeprom.c": code 1323 = 0x052b (1267), prologues 18, epilogues 38 */ DEFINED SYMBOLS *ABS*:00000000 eeprom.c C:\Temp/ccZdfoMd.s:3 *ABS*:0000003f __SREG__ C:\Temp/ccZdfoMd.s:4 *ABS*:0000003e __SP_H__ C:\Temp/ccZdfoMd.s:5 *ABS*:0000003d __SP_L__ C:\Temp/ccZdfoMd.s:6 *ABS*:00000000 __tmp_reg__ C:\Temp/ccZdfoMd.s:7 *ABS*:00000001 __zero_reg__ C:\Temp/ccZdfoMd.s:12 .text:00000000 eeprom_read_byte C:\Temp/ccZdfoMd.s:34 .text:00000010 eeprom_write_byte C:\Temp/ccZdfoMd.s:60 .text:00000028 RAM_Checksum C:\Temp/ccZdfoMd.s:88 .text:0000004a EEProm_Checksum C:\Temp/ccZdfoMd.s:128 .text:0000007a ParamSet_DefaultStickMapping *COM*:0000007d EE_Parameter C:\Temp/ccZdfoMd.s:162 .text:000000c4 CommonDefaults C:\Temp/ccZdfoMd.s:320 .text:000002a4 ParamSet_DefaultSet1 C:\Temp/ccZdfoMd.s:368 .text:0000030e ParamSet_DefaultSet2 C:\Temp/ccZdfoMd.s:416 .text:00000378 ParamSet_DefaultSet3 C:\Temp/ccZdfoMd.s:459 .text:000003e0 GetParamByte C:\Temp/ccZdfoMd.s:482 .text:000003f0 SetParamByte C:\Temp/ccZdfoMd.s:508 .text:00000408 GetParamWord C:\Temp/ccZdfoMd.s:521 .text:00000412 SetParamWord C:\Temp/ccZdfoMd.s:534 .text:0000041c ParamSet_ReadFromEEProm C:\Temp/ccZdfoMd.s:639 .text:000004c6 SetActiveParamSet C:\Temp/ccZdfoMd.s:676 .text:000004f2 ParamSet_WriteToEEProm C:\Temp/ccZdfoMd.s:774 .text:000005aa MixerTable_ReadFromEEProm *COM*:0000004e Mixer C:\Temp/ccZdfoMd.s:848 .text:00000612 MixerTable_WriteToEEProm C:\Temp/ccZdfoMd.s:893 .text:0000064a MixerTable_Default C:\Temp/ccZdfoMd.s:955 .text:000006d8 GetActiveParamSet C:\Temp/ccZdfoMd.s:1005 .text:00000712 SetDefaultParameter C:\Temp/ccZdfoMd.s:1088 .progmem.data:00000000 __c.0 C:\Temp/ccZdfoMd.s:1092 .progmem.data:00000026 __c.1 C:\Temp/ccZdfoMd.s:1096 .progmem.data:0000003f __c.2 C:\Temp/ccZdfoMd.s:1100 .progmem.data:00000060 __c.3 C:\Temp/ccZdfoMd.s:1105 .text:00000798 ParamSet_Init *COM*:00000001 RequiredMotors UNDEFINED SYMBOLS __do_copy_data __do_clear_bss PlatinenVersion __eerd_word __eewr_word __eerd_block LED_Init LIBFC_HoTT_Clear LIBFC_CheckSettings __eewr_block uart_putchar _printf_P PrintLine