Documentation for “Zerocat Chipflasher” as of Tue, 03 Dec 2024 13:38:06 +0100
Repository: git://zerocat.org/zerocat/projects/chipflasher
Version: v2.0.2
Branch: flashrom-interface
Propeller Spin/PASM Compiler 'OpenSpin' (c)2012-2016 Parallax Inc. DBA Parallax Semiconductor. Version 1.00.78 Compiling... ../../firmware2/src/serprog-SPI-PASM.spin |-pins.spin Done. Program size is 2520 bytes TYPE: 43 VALUE: 04C4B400 (00000000) NAME: __CLKFREQ TYPE: 43 VALUE: 000C3500 (00000000) NAME: POWERUP_SPI TYPE: 43 VALUE: 00013880 (00000000) NAME: POWERUP_SPILINES TYPE: 43 VALUE: 003D0900 (00000000) NAME: POWERDOWN_SPI TYPE: 43 VALUE: 00000001 (00000000) NAME: REPETITIVE_POWERUP TYPE: 43 VALUE: 00000000 (00000000) NAME: FUNCID__READY TYPE: 43 VALUE: 00000001 (00000000) NAME: FUNCID__INIT1 TYPE: 43 VALUE: 00000002 (00000000) NAME: FUNCID__POWERON TYPE: 43 VALUE: 00000003 (00000000) NAME: FUNCID__POWEROFF TYPE: 43 VALUE: 00000004 (00000000) NAME: FUNCID__TRIGGER TYPE: 43 VALUE: 00000005 (00000000) NAME: FUNCID__LO_CEN TYPE: 43 VALUE: 00000006 (00000000) NAME: FUNCID__HI_CEN TYPE: 43 VALUE: 00000007 (00000000) NAME: FUNCID__LO_WPN TYPE: 43 VALUE: 00000008 (00000000) NAME: FUNCID__HI_WPN TYPE: 43 VALUE: 00000009 (00000000) NAME: FUNCID__READ TYPE: 43 VALUE: 0000000A (00000000) NAME: FUNCID__WRITE TYPE: 43 VALUE: 0000000B (00000000) NAME: FUNCID__SETSPIFRQ TYPE: 53 VALUE: 00000101 (00000004) NAME: GO TYPE: 53 VALUE: 00000002 (00000004) NAME: INIT TYPE: 53 VALUE: 00000103 (00000004) NAME: POWER_ON TYPE: 53 VALUE: 00000004 (00000004) NAME: POWER_OFF TYPE: 53 VALUE: 00000005 (00000004) NAME: FINAL_TRIGGER TYPE: 53 VALUE: 00000006 (00000004) NAME: CHIP_ENABLE TYPE: 53 VALUE: 00000007 (00000004) NAME: CHIP_DISABLE TYPE: 53 VALUE: 00000008 (00000004) NAME: WPN_LOW TYPE: 53 VALUE: 00000009 (00000004) NAME: WPN_HIGH TYPE: 53 VALUE: 0000040A (00000004) NAME: IN TYPE: 53 VALUE: 0000040B (00000004) NAME: OUT TYPE: 53 VALUE: 0000000C (00000005) NAME: POWER_ON_ONCE TYPE: 4F VALUE: 0000000D (00000000) NAME: PINS TYPE: 51 VALUE: 00000000 (00000000) NAME: PIN_CEN1^A TYPE: 51 VALUE: 00000001 (00000000) NAME: PIN_CEN0^A TYPE: 51 VALUE: 00000002 (00000000) NAME: PIN_MOSI^A TYPE: 51 VALUE: 00000003 (00000000) NAME: PIN_WPN^A TYPE: 51 VALUE: 00000004 (00000000) NAME: PIN_SCLK3^A TYPE: 51 VALUE: 00000005 (00000000) NAME: PIN_SCLK2^A TYPE: 51 VALUE: 00000006 (00000000) NAME: PIN_SCLK1^A TYPE: 51 VALUE: 00000007 (00000000) NAME: PIN_SCLK0^A TYPE: 51 VALUE: 00000008 (00000000) NAME: PIN_MISO^A TYPE: 51 VALUE: 00000009 (00000000) NAME: PIN_PLUGTESTN^A TYPE: 51 VALUE: 0000000A (00000000) NAME: PIN_PNP^A TYPE: 51 VALUE: 0000000C (00000000) NAME: PIN_HOLDN^A TYPE: 51 VALUE: 0000000D (00000000) NAME: PIN_D3^A TYPE: 51 VALUE: 0000000E (00000000) NAME: PIN_D2^A TYPE: 51 VALUE: 0000000F (00000000) NAME: PIN_D1^A TYPE: 51 VALUE: 0000001D (00000000) NAME: PIN_TRIGGER^A TYPE: 51 VALUE: 0000001E (00000000) NAME: PIN_TX^A TYPE: 51 VALUE: 0000001F (00000000) NAME: PIN_RX^A TYPE: 51 VALUE: 00000010 (00000000) NAME: SWDIP_A^A TYPE: 51 VALUE: 00000011 (00000000) NAME: SWDIP_B^A TYPE: 51 VALUE: 00000012 (00000000) NAME: SWDIP_1^A TYPE: 51 VALUE: 00000013 (00000000) NAME: SWDIP_2^A TYPE: 51 VALUE: 00000014 (00000000) NAME: SWDIP_3^A TYPE: 51 VALUE: 00000015 (00000000) NAME: SWDIP_4^A TYPE: 51 VALUE: 00000016 (00000000) NAME: SWDIP_5^A TYPE: 51 VALUE: 00000017 (00000000) NAME: SWDIP_6^A TYPE: 51 VALUE: 00000010 (00000000) NAME: RST_DISABLE^A TYPE: 51 VALUE: 00000018 (00000000) NAME: RS232_RST^A TYPE: 51 VALUE: 0000000B (00000000) NAME: RST_INHIBIT^A TYPE: 51 VALUE: 0000001B (00000000) NAME: ADC_OUT^A TYPE: 51 VALUE: 0000001A (00000000) NAME: ADC_CALIBRATION^A TYPE: 51 VALUE: 00000019 (00000000) NAME: ADC_IN^A TYPE: 51 VALUE: 00000003 (00000000) NAME: MASK_CEN_AVAIL^A TYPE: 51 VALUE: 000000F0 (00000000) NAME: MASK_SCLK_AVAIL^A TYPE: 51 VALUE: 000011FF (00000000) NAME: MASK_SPI_BUS_AVAIL^A TYPE: 51 VALUE: 000000F0 (00000000) NAME: MASK_SCLK_ACTIVE100^A TYPE: 51 VALUE: 000000E0 (00000000) NAME: MASK_SCLK_ACTIVE75^A TYPE: 51 VALUE: 000000C0 (00000000) NAME: MASK_SCLK_ACTIVE50^A TYPE: 51 VALUE: 00000080 (00000000) NAME: MASK_SCLK_ACTIVE25^A TYPE: 51 VALUE: 00000000 (00000000) NAME: MASK_SCLK_ACTIVE0^A TYPE: 51 VALUE: 000000F0 (00000000) NAME: MASK_SCLK_ACTIVE^A TYPE: 50 VALUE: 00000001 (00000000) NAME: CHECK_CABLE^A TYPE: 50 VALUE: 00000002 (00000000) NAME: GET_BOARD_CONFIG^A TYPE: 50 VALUE: 00000103 (00000000) NAME: GET_BOARD_VERSION^A TYPE: 50 VALUE: 00000104 (00000000) NAME: GET_PIN_RSTINHIBIT^A TYPE: 50 VALUE: 00000105 (00000000) NAME: GET_MONITOR_HARDWARE^A TYPE: 50 VALUE: 00000106 (00000000) NAME: GET_POWERUP_TYPE^A TYPE: 50 VALUE: 00000107 (00000000) NAME: GET_SUSPEND_INHIBIT^A TYPE: 50 VALUE: 00000108 (00000000) NAME: GET_MODE_SPI^A TYPE: 50 VALUE: 00000109 (00000000) NAME: GET_DRIVER_STRENGTH^A TYPE: 50 VALUE: 0000010A (00000000) NAME: GET_BAUDRATE^A TYPE: 50 VALUE: 0000010B (00000000) NAME: HIGH^A TYPE: 50 VALUE: 0000010C (00000000) NAME: LOW^A TYPE: 43 VALUE: 0000000A (00000000) NAME: SPI_PNP TYPE: 43 VALUE: 00000001 (00000000) NAME: SPI_CEN0 TYPE: 43 VALUE: 00000000 (00000000) NAME: SPI_CEN1 TYPE: 43 VALUE: 00000008 (00000000) NAME: SPI_MISO TYPE: 43 VALUE: 00000002 (00000000) NAME: SPI_MOSI TYPE: 43 VALUE: 00000003 (00000000) NAME: SPI_WPN TYPE: 43 VALUE: 0000000C (00000000) NAME: SPI_HOLDN TYPE: 43 VALUE: 00000007 (00000000) NAME: SPI_SCLK0 TYPE: 43 VALUE: 00000006 (00000000) NAME: SPI_SCLK1 TYPE: 43 VALUE: 00000005 (00000000) NAME: SPI_SCLK2 TYPE: 43 VALUE: 00000004 (00000000) NAME: SPI_SCLK3 TYPE: 43 VALUE: 0000001D (00000000) NAME: PIN_TRG_FSEL TYPE: 43 VALUE: 00000003 (00000000) NAME: BITMASK_CEN TYPE: 43 VALUE: 000000F0 (00000000) NAME: BITMASK_SCLK TYPE: 43 VALUE: 000011FF (00000000) NAME: BITMASK_SPI TYPE: 47 VALUE: 00000000 (00000000) NAME: STACK TYPE: 45 VALUE: 00000000 (00000000) NAME: BOARD_CONFIG TYPE: 4A VALUE: 00000038 (00000000) NAME: SPI_PASM TYPE: 4A VALUE: 00000060 (00000028) NAME: LOOP0^B^A^A^A TYPE: 4A VALUE: 000000BC (00000084) NAME: HI_WPN TYPE: 4A VALUE: 000000C4 (0000008c) NAME: HI_WPN_RET TYPE: 4A VALUE: 000000C8 (00000090) NAME: LO_WPN TYPE: 4A VALUE: 000000D0 (00000098) NAME: LO_WPN_RET TYPE: 4A VALUE: 000000D4 (0000009c) NAME: LO_CEN TYPE: 4A VALUE: 000000DC (000000a4) NAME: LO_CEN_RET TYPE: 4A VALUE: 000000E0 (000000a8) NAME: HI_CEN TYPE: 4A VALUE: 000000E8 (000000b0) NAME: HI_CEN_RET TYPE: 4A VALUE: 000000EC (000000b4) NAME: INIT1 TYPE: 4A VALUE: 00000114 (000000dc) NAME: INIT1_RET TYPE: 4A VALUE: 00000118 (000000e0) NAME: POWERON TYPE: 4A VALUE: 00000140 (00000108) NAME: SKIP ^A^A^A TYPE: 4A VALUE: 00000154 (0000011c) NAME: POWERON_RET TYPE: 4A VALUE: 00000158 (00000120) NAME: POWEROFF TYPE: 4A VALUE: 00000178 (00000140) NAME: POWEROFF_RET TYPE: 4A VALUE: 0000017C (00000144) NAME: TRIGGER TYPE: 4A VALUE: 00000184 (0000014c) NAME: TRIGGER_MODE0 TYPE: 4A VALUE: 000001AC (00000174) NAME: TRIGGER_MODE3 TYPE: 4A VALUE: 000001D4 (0000019c) NAME: TRIGGER_RET TYPE: 4A VALUE: 000001D8 (000001a0) NAME: WRITE TYPE: 4A VALUE: 000001F4 (000001bc) NAME: WRITE_MODE3 TYPE: 4A VALUE: 00000224 (000001ec) NAME: WRITE_MODE0 TYPE: 4A VALUE: 00000254 (0000021c) NAME: WRITE_3M_MODE0 TYPE: 4A VALUE: 00000274 (0000023c) NAME: WRITE8_5M_MODE0 TYPE: 4A VALUE: 000002FC (000002c4) NAME: WRITE8_10M_MODE0 TYPE: 4A VALUE: 00000350 (00000318) NAME: WRITE8_40M_MODE0 TYPE: 4A VALUE: 00000374 (0000033c) NAME: WRITE_3M_MODE3 TYPE: 4A VALUE: 00000394 (0000035c) NAME: WRITE8_5M_MODE3 TYPE: 4A VALUE: 0000041C (000003e4) NAME: WRITE8_10M_MODE3 TYPE: 4A VALUE: 00000478 (00000440) NAME: WRITE8_40M_MODE3 TYPE: 4A VALUE: 000004A4 (0000046c) NAME: WRITE_RET TYPE: 4A VALUE: 000004A8 (00000470) NAME: READ TYPE: 4A VALUE: 000004C4 (0000048c) NAME: READ_MODE3 TYPE: 4A VALUE: 000004E0 (000004a8) NAME: READ_MODE0 TYPE: 4A VALUE: 000004F8 (000004c0) NAME: READ_3M_MODE0 TYPE: 4A VALUE: 00000520 (000004e8) NAME: READ8_5M_MODE0 TYPE: 4A VALUE: 000005B0 (00000578) NAME: READ8_10M_MODE0 TYPE: 4A VALUE: 00000618 (000005e0) NAME: READ_3M_MODE3 TYPE: 4A VALUE: 00000640 (00000608) NAME: READ8_5M_MODE3 TYPE: 4A VALUE: 000006D0 (00000698) NAME: READ8_10M_MODE3 TYPE: 4A VALUE: 00000734 (000006fc) NAME: READ_RET TYPE: 4A VALUE: 00000738 (00000700) NAME: READY TYPE: 4A VALUE: 0000073C (00000704) NAME: MASK_TRIGGER TYPE: 4A VALUE: 00000740 (00000708) NAME: MASK_SPI_AND_PNP TYPE: 4A VALUE: 00000744 (0000070c) NAME: MASK_SPI TYPE: 4A VALUE: 00000748 (00000710) NAME: MASK_SCLK TYPE: 4A VALUE: 0000074C (00000714) NAME: MASK_CEN TYPE: 4A VALUE: 00000750 (00000718) NAME: MASK_PNP TYPE: 4A VALUE: 00000754 (0000071c) NAME: MASK_MOSI TYPE: 4A VALUE: 00000758 (00000720) NAME: MASK_MISO TYPE: 4A VALUE: 0000075C (00000724) NAME: MASK_HOLDN TYPE: 4A VALUE: 00000760 (00000728) NAME: MASK_WPN TYPE: 4A VALUE: 00000764 (0000072c) NAME: FREQ_3M TYPE: 4A VALUE: 00000768 (00000730) NAME: FREQ_5M TYPE: 4A VALUE: 0000076C (00000734) NAME: FREQ_10M TYPE: 4A VALUE: 00000770 (00000738) NAME: FREQ_40M TYPE: 4A VALUE: 00000774 (0000073c) NAME: TIME_LINESUP TYPE: 4A VALUE: 00000778 (00000740) NAME: TIME_POWERDOWN TYPE: 4B VALUE: 0000077C (00000744) NAME: FUNCID TYPE: 4B VALUE: 0000077C (00000748) NAME: FREQSPI TYPE: 4B VALUE: 0000077C (0000074c) NAME: P_STACK TYPE: 4B VALUE: 0000077C (00000750) NAME: P_READY TYPE: 4B VALUE: 0000077C (00000754) NAME: P TYPE: 4B VALUE: 0000077C (00000758) NAME: MASK_SPI_SEL TYPE: 4B VALUE: 0000077C (0000075c) NAME: MODE_SPI TYPE: 4B VALUE: 0000077C (00000760) NAME: MBIT TYPE: 4B VALUE: 0000077C (00000764) NAME: NBIT TYPE: 4B VALUE: 0000077C (00000768) NAME: VALUE TYPE: 4B VALUE: 0000077C (0000076c) NAME: TIMETARGET TYPE: 4B VALUE: 0000077C (00000770) NAME: T_POWERUP TYPE: 4E VALUE: 00000004 (00000000) NAME: CFGBOARD TYPE: 4E VALUE: 00000008 (00000000) NAME: MASK_SCLK_EN TYPE: 4E VALUE: 00000004 (00000000) NAME: FREQ TYPE: 4E VALUE: 00000004 (00000000) NAME: FREQ TYPE: 4E VALUE: 00000008 (00000000) NAME: BITLENGTH TYPE: 4E VALUE: 0000000C (00000000) NAME: BITMASK TYPE: 4E VALUE: 00000010 (00000000) NAME: FID TYPE: 4E VALUE: 00000004 (00000000) NAME: FREQ TYPE: 4E VALUE: 00000008 (00000000) NAME: DATA_OUT TYPE: 4E VALUE: 0000000C (00000000) NAME: MSBIT TYPE: 4E VALUE: 00000010 (00000000) NAME: FID Distilled longs: 0 OBJ bytes: 3133 _CLKMODE: 00 _CLKFREQ: 00B71B00 0000- 20 00 C8 09 A8 08 0D 01 7C 07 04 00 D9 07 00 00 .......|....... 0010- E9 07 00 00 0B 08 00 00 1C 08 00 00 2D 08 00 00 ............-... 0020- 3E 08 00 00 4F 08 00 00 60 08 00 00 71 08 00 00 >...O...`...q... 0030- 86 08 00 00 96 08 00 00 A8 08 20 00 F0 A7 BF A0 .......... ..... 0040- D3 AB BF A0 0C AA FF 80 D5 A9 BF A0 04 AA FF 80 ................ 0050- D5 AD BF 08 04 AA FF 80 D5 AF BF 08 04 AA FF 80 ................ 0060- D5 B9 BF 08 D4 A3 BF 08 0A A2 7F EC 09 A2 7F 86 ................ 0070- 1C 7F EB 5C 0A A2 7F 86 68 36 EA 5C 05 A2 7F 86 ...\....h6.\.... 0080- 27 52 E8 5C 06 A2 7F 86 2A 58 E8 5C 07 A2 7F 86 'R.\....*X.\.... 0090- 24 4C E8 5C 08 A2 7F 86 21 46 E8 5C 02 A2 7F 86 $L.\....!F.\.... 00A0- 38 8E E8 5C 03 A2 7F 86 48 A0 E8 5C 04 A2 7F 86 8..\....H..\.... 00B0- 51 CE E8 5C 01 A2 7F 86 2D 6E E8 5C 0A 00 7C 5C Q..\....-n.\..|\ 00C0- CA E9 BF 68 D4 81 3F 08 00 00 7C 5C CA E9 BF 64 ...h..?...|\...d 00D0- D4 81 3F 08 00 00 7C 5C C5 ED BF 68 D4 81 3F 08 ..?...|\...h..?. 00E0- 00 00 7C 5C C5 ED BF 64 D4 81 3F 08 00 00 7C 5C ..|\...d..?...|\ 00F0- C1 E9 BF 64 C1 ED BF 68 C2 ED BF 64 C6 E9 BF 68 ...d...h...d...h 0100- C3 E9 BF 64 C9 E9 BF 68 00 AE 7F 86 C4 E9 AB 64 ...d...h.......d 0110- C4 E9 97 68 D4 81 3F 08 00 00 7C 5C D3 AB BF A0 ...h..?...|\.... 0120- 08 AA FF 80 D5 A5 BF 08 C6 ED 3F 62 42 00 54 5C ..........?bB.T\ 0130- C6 E9 BF 64 C6 ED BF 68 F1 B7 BF A0 DC B7 BF 80 ...d...h........ 0140- 00 B6 7F F8 D6 ED BF 68 F1 B7 BF A0 CF B7 BF 80 .......h........ 0150- 00 B6 7F F8 D4 81 3F 08 00 00 7C 5C C3 ED BF 64 ......?...|\...d 0160- C6 E9 BF 68 00 00 00 00 C6 ED BF 64 F1 B7 BF A0 ...h.......d.... 0170- D0 B7 BF 80 00 B6 7F F8 D4 81 3F 08 00 00 7C 5C ..........?...|\ 0180- 00 AE 7F 86 5D 00 54 5C C1 E9 BF 68 C1 E9 BF 64 ....].T\...h...d 0190- C7 E9 BF 64 00 00 00 00 00 00 00 00 F1 B7 BF A0 ...d............ 01A0- 30 B6 FF 80 00 B6 FF F8 D4 81 3F 08 67 00 7C 5C 0.........?.g.|\ 01B0- C1 E9 BF 68 C1 E9 BF 64 C7 E9 BF 64 C4 E9 BF 64 ...h...d...d...d 01C0- 00 00 00 00 F1 B7 BF A0 30 B6 FF 80 00 B6 FF F8 ........0....... 01D0- C4 E9 BF 68 D4 81 3F 08 00 00 7C 5C D3 AB BF A0 ...h..?...|\.... 01E0- D5 A5 BF 08 04 AA FF 80 D5 B5 BF 08 04 AA FF 80 ................ 01F0- D5 B1 BF 08 7B AE 7F EC CB A5 3F 87 CF 00 78 5C ....{.....?...x\ 0200- 80 B0 7F 86 CF 00 54 5C CC A5 3F 87 D7 00 78 5C ......T\..?...x\ 0210- CD A5 3F 87 F9 00 78 5C FF B4 7F 85 00 B4 7F 86 ..?...x\........ 0220- 10 01 6C 5C F9 00 7C 5C CB A5 3F 87 87 00 78 5C ..l\..|\..?...x\ 0230- 80 B0 7F 86 87 00 54 5C CC A5 3F 87 8F 00 78 5C ......T\..?...x\ 0240- CD A5 3F 87 B1 00 78 5C FF B4 7F 85 00 B4 7F 86 ..?...x\........ 0250- C6 00 6C 5C B1 00 7C 5C D8 B5 3F 62 C7 E9 BF 7C ..l\..|\..?b...| 0260- C4 E9 BF 68 01 B0 FF 2A C4 E9 BF 64 87 00 54 5C ...h...*...d..T\ 0270- D4 81 3F 08 1B 01 7C 5C 80 B4 7F 62 C7 E9 BF 7C ..?...|\...b...| 0280- C4 E9 BF 68 C4 E9 BF 64 40 B4 7F 62 C7 E9 BF 7C ...h...d@..b...| 0290- C4 E9 BF 68 C4 E9 BF 64 20 B4 7F 62 C7 E9 BF 7C ...h...d ..b...| 02A0- C4 E9 BF 68 C4 E9 BF 64 10 B4 7F 62 C7 E9 BF 7C ...h...d...b...| 02B0- C4 E9 BF 68 C4 E9 BF 64 08 B4 7F 62 C7 E9 BF 7C ...h...d...b...| 02C0- C4 E9 BF 68 C4 E9 BF 64 04 B4 7F 62 C7 E9 BF 7C ...h...d...b...| 02D0- C4 E9 BF 68 C4 E9 BF 64 02 B4 7F 62 C7 E9 BF 7C ...h...d...b...| 02E0- C4 E9 BF 68 C4 E9 BF 64 01 B4 7F 62 C7 E9 BF 7C ...h...d...b...| 02F0- C4 E9 BF 68 C4 E9 BF 64 D4 81 3F 08 1B 01 7C 5C ...h...d..?...|\ 0300- C1 E9 BF 68 C1 E9 BF 64 80 B4 7F 62 C7 E9 BF 7C ...h...d...b...| 0310- 00 00 00 00 40 B4 7F 62 C7 E9 BF 7C 20 B4 7F 62 ....@..b...| ..b 0320- C7 E9 BF 7C 10 B4 7F 62 C7 E9 BF 7C 08 B4 7F 62 ...|...b...|...b 0330- C7 E9 BF 7C 04 B4 7F 62 C7 E9 BF 7C 02 B4 7F 62 ...|...b...|...b 0340- C7 E9 BF 7C 01 B4 7F 62 C7 E9 BF 7C D4 81 3F 08 ...|...b...|..?. 0350- 1B 01 7C 5C C1 E9 BF 68 00 00 00 00 C7 E9 BF 7C ..|\...h.......| 0360- C1 E9 BF 64 C1 E9 BF 64 00 00 00 00 00 00 00 00 ...d...d........ 0370- D4 81 3F 08 1B 01 7C 5C D8 B5 3F 62 C7 E9 BF 7C ..?...|\..?b...| 0380- C4 E9 BF 64 01 B0 FF 2A C4 E9 BF 68 CF 00 54 5C ...d...*...h..T\ 0390- D4 81 3F 08 1B 01 7C 5C 80 B4 7F 62 C7 E9 BF 7C ..?...|\...b...| 03A0- C4 E9 BF 64 C4 E9 BF 68 40 B4 7F 62 C7 E9 BF 7C ...d...h@..b...| 03B0- C4 E9 BF 64 C4 E9 BF 68 20 B4 7F 62 C7 E9 BF 7C ...d...h ..b...| 03C0- C4 E9 BF 64 C4 E9 BF 68 10 B4 7F 62 C7 E9 BF 7C ...d...h...b...| 03D0- C4 E9 BF 64 C4 E9 BF 68 08 B4 7F 62 C7 E9 BF 7C ...d...h...b...| 03E0- C4 E9 BF 64 C4 E9 BF 68 04 B4 7F 62 C7 E9 BF 7C ...d...h...b...| 03F0- C4 E9 BF 64 C4 E9 BF 68 02 B4 7F 62 C7 E9 BF 7C ...d...h...b...| 0400- C4 E9 BF 64 C4 E9 BF 68 01 B4 7F 62 C7 E9 BF 7C ...d...h...b...| 0410- C4 E9 BF 64 C4 E9 BF 68 D4 81 3F 08 1B 01 7C 5C ...d...h..?...|\ 0420- 80 B4 7F 62 C1 E9 BF 68 C1 E9 BF 64 C7 E9 BF 7C ...b...h...d...| 0430- C4 E9 BF 64 00 00 00 00 40 B4 7F 62 C7 E9 BF 7C ...d....@..b...| 0440- 20 B4 7F 62 C7 E9 BF 7C 10 B4 7F 62 C7 E9 BF 7C ..b...|...b...| 0450- 08 B4 7F 62 C7 E9 BF 7C 04 B4 7F 62 C7 E9 BF 7C ...b...|...b...| 0460- 02 B4 7F 62 C7 E9 BF 7C 01 B4 7F 62 C7 E9 BF 7C ...b...|...b...| 0470- C4 E9 BF 68 D4 81 3F 08 1B 01 7C 5C C1 E9 BF 68 ...h..?...|\...h 0480- 00 00 00 00 C7 E9 BF 7C C1 E9 BF 64 C4 E9 BF 64 .......|...d...d 0490- C1 E9 BF 64 00 00 00 00 00 00 00 00 00 00 00 00 ...d............ 04A0- C4 E9 BF 68 D4 81 3F 08 00 00 7C 5C D3 AB BF A0 ...h..?...|\.... 04B0- D5 A5 BF 08 04 AA FF 80 D5 B3 BF 08 04 AA FF 80 ................ 04C0- D5 B1 BF 08 2A AF 7F EC CB A5 3F 87 78 01 78 5C ....*.....?.x.x\ 04D0- 08 B2 7F 86 CD A5 3F 85 A6 01 48 5C 82 01 60 5C ......?...H\..`\ 04E0- 78 01 7C 5C CB A5 3F 87 30 01 78 5C 08 B2 7F 86 x.|\..?.0.x\.... 04F0- CD A5 3F 85 5E 01 48 5C 3A 01 60 5C 00 00 00 00 ..?.^.H\:.`\.... 0500- F2 91 3F 61 01 B4 FF 34 C4 E9 BF 68 C4 E9 BF 64 ..?a...4...h...d 0510- 30 B3 FF E4 D8 B5 BF 60 D5 B5 3F 08 D4 81 3F 08 0......`..?...?. 0520- BF 01 7C 5C F2 91 3F 61 01 B4 FF 34 C4 E9 BF 68 ..|\..?a...4...h 0530- C4 E9 BF 64 F2 91 3F 61 01 B4 FF 34 C4 E9 BF 68 ...d..?a...4...h 0540- C4 E9 BF 64 F2 91 3F 61 01 B4 FF 34 C4 E9 BF 68 ...d..?a...4...h 0550- C4 E9 BF 64 F2 91 3F 61 01 B4 FF 34 C4 E9 BF 68 ...d..?a...4...h 0560- C4 E9 BF 64 F2 91 3F 61 01 B4 FF 34 C4 E9 BF 68 ...d..?a...4...h 0570- C4 E9 BF 64 F2 91 3F 61 01 B4 FF 34 C4 E9 BF 68 ...d..?a...4...h 0580- C4 E9 BF 64 F2 91 3F 61 01 B4 FF 34 C4 E9 BF 68 ...d..?a...4...h 0590- C4 E9 BF 64 F2 91 3F 61 01 B4 FF 34 C4 E9 BF 68 ...d..?a...4...h 05A0- C4 E9 BF 64 D8 B5 BF 60 D5 B5 3F 08 D4 81 3F 08 ...d...`..?...?. 05B0- BF 01 7C 5C C1 E9 BF 68 C1 E9 BF 64 00 00 00 00 ..|\...h...d.... 05C0- 00 00 00 00 00 00 00 00 00 00 00 00 F2 91 3F 61 ..............?a 05D0- 01 B4 FF 34 F2 91 3F 61 01 B4 FF 34 F2 91 3F 61 ...4..?a...4..?a 05E0- 01 B4 FF 34 F2 91 3F 61 01 B4 FF 34 F2 91 3F 61 ...4..?a...4..?a 05F0- 01 B4 FF 34 F2 91 3F 61 01 B4 FF 34 F2 91 3F 61 ...4..?a...4..?a 0600- 01 B4 FF 34 F2 91 3F 61 01 B4 FF 34 D8 B5 BF 60 ...4..?a...4...` 0610- D5 B5 3F 08 D4 81 3F 08 BF 01 7C 5C 00 00 00 00 ..?...?...|\.... 0620- C4 E9 BF 64 C4 E9 BF 68 F2 91 3F 61 01 B4 FF 34 ...d...h..?a...4 0630- 78 B3 FF E4 D8 B5 BF 60 D5 B5 3F 08 D4 81 3F 08 x......`..?...?. 0640- BF 01 7C 5C C4 E9 BF 64 C4 E9 BF 68 F2 91 3F 61 ..|\...d...h..?a 0650- 01 B4 FF 34 C4 E9 BF 64 C4 E9 BF 68 F2 91 3F 61 ...4...d...h..?a 0660- 01 B4 FF 34 C4 E9 BF 64 C4 E9 BF 68 F2 91 3F 61 ...4...d...h..?a 0670- 01 B4 FF 34 C4 E9 BF 64 C4 E9 BF 68 F2 91 3F 61 ...4...d...h..?a 0680- 01 B4 FF 34 C4 E9 BF 64 C4 E9 BF 68 F2 91 3F 61 ...4...d...h..?a 0690- 01 B4 FF 34 C4 E9 BF 64 C4 E9 BF 68 F2 91 3F 61 ...4...d...h..?a 06A0- 01 B4 FF 34 C4 E9 BF 64 C4 E9 BF 68 F2 91 3F 61 ...4...d...h..?a 06B0- 01 B4 FF 34 C4 E9 BF 64 C4 E9 BF 68 F2 91 3F 61 ...4...d...h..?a 06C0- 01 B4 FF 34 D8 B5 BF 60 D5 B5 3F 08 D4 81 3F 08 ...4...`..?...?. 06D0- BF 01 7C 5C C1 E9 BF 68 C1 E9 BF 64 00 00 00 00 ..|\...h...d.... 06E0- C4 E9 BF 64 00 00 00 00 F2 91 3F 61 01 B4 FF 34 ...d......?a...4 06F0- F2 91 3F 61 01 B4 FF 34 F2 91 3F 61 01 B4 FF 34 ..?a...4..?a...4 0700- F2 91 3F 61 01 B4 FF 34 F2 91 3F 61 01 B4 FF 34 ..?a...4..?a...4 0710- F2 91 3F 61 01 B4 FF 34 F2 91 3F 61 01 B4 FF 34 ..?a...4..?a...4 0720- C4 E9 BF 68 F2 91 3F 61 01 B4 FF 34 D8 B5 BF 60 ...h..?a...4...` 0730- D5 B5 3F 08 D4 81 3F 08 00 00 7C 5C 00 00 00 00 ..?...?...|\.... 0740- 00 00 00 20 FF 15 00 00 FF 11 00 00 F0 00 00 00 ... ............ 0750- 03 00 00 00 00 04 00 00 04 00 00 00 00 01 00 00 ................ 0760- 00 10 00 00 08 00 00 00 D5 DC 32 00 40 4B 4C 00 ..........2.@KL. 0770- 80 96 98 00 00 5A 62 02 80 38 01 00 00 09 3D 00 .....Zb..8....=. 0780- 64 8B 1C 81 39 07 A7 00 64 06 0D 09 35 0D 0C 36 d...9...d...5..6 0790- 0D 0D 37 00 0D 0D 37 21 0D 0D 0C 37 06 69 0C 38 ..7...7!...7.i.8 07A0- C0 69 0C 38 E0 69 0C 38 F0 69 0C 68 37 21 F3 EA .i.8.i.8.i.h7!.. 07B0- 38 0C F3 EA 37 00 F3 EA 43 37 01 D1 00 64 06 0D 8...7...C7...d.. 07C0- 08 43 38 05 D1 3A 0C 35 00 43 38 06 D1 43 35 37 .C8..:.5.C8..C57 07D0- 01 1A 35 43 37 21 D1 34 C7 38 43 2C 32 36 43 37 ..5C7!.4.8C,26C7 07E0- 21 D1 43 37 21 D0 35 FC 0B 02 04 76 32 64 43 37 !.C7!.5....v2dC7 07F0- 00 D1 00 8B 1C 80 06 0D 06 0A 10 36 08 08 01 05 ...........6.... 0800- 0C 01 05 04 09 78 01 05 0C 04 03 01 05 0C 32 37 .....x........27 0810- 21 43 37 21 D1 43 37 21 D0 35 FC 0B 02 04 76 32 !C7!.C7!.5....v2 0820- 37 01 43 37 21 D1 43 37 21 D0 35 FC 0B 02 04 76 7.C7!.C7!.5....v 0830- 32 38 05 43 37 21 D1 43 37 21 D0 35 FC 0B 02 04 28.C7!.C7!.5.... 0840- 76 32 38 06 43 37 21 D1 43 37 21 D0 35 FC 0B 02 v28.C7!.C7!.5... 0850- 04 76 32 37 22 43 37 21 D1 43 37 21 D0 35 FC 0B .v27"C7!.C7!.5.. 0860- 02 04 76 32 37 02 43 37 21 D1 43 37 21 D0 35 FC ..v27.C7!.C7!.5. 0870- 0B 02 04 76 32 43 67 37 01 1E 43 37 21 D0 35 FC ...v2Cg7..C7!.5. 0880- 0B 02 04 76 43 37 00 D0 33 32 43 67 37 01 1E 43 ...vC7..32Cg7..C 0890- 37 21 D0 35 FC 0B 02 04 76 32 37 00 43 37 21 D1 7!.5....v27.C7!. 08A0- 43 37 21 D0 35 FC 0B 02 04 76 32 00 20 01 0D 00 C7!.5....v2. ... 08B0- 34 00 00 00 3E 00 00 00 59 00 00 00 61 00 00 00 4...>...Y...a... 08C0- 73 00 00 00 83 00 00 00 98 00 00 00 AD 00 00 00 s............... 08D0- C9 00 00 00 DF 00 00 00 0D 01 00 00 16 01 00 00 ................ 08E0- 38 09 3D 92 35 FB 61 62 47 32 38 17 38 12 3E 92 8.=.5.abG28.8.>. 08F0- E7 37 25 E8 61 37 00 62 43 38 11 37 03 3E 92 37 .7%.a7.bC8.7.>.7 0900- 21 E8 62 4A 32 64 37 21 E8 36 EC 33 32 38 72 00 !.bJ2d7!.6.328r. 0910- 64 05 03 36 0D 04 38 0B 33 0C 37 03 33 0C 32 38 d..6..8.3.7.3.28 0920- 82 00 64 05 03 36 0D 03 34 33 0C 35 33 0C 32 38 ..d..6..43.53.28 0930- 97 00 64 05 03 36 0D 08 64 37 06 E8 35 FB 33 0C ..d..6..d7..5.3. 0940- 34 33 0C 32 38 AC 00 64 05 03 36 0D 08 64 37 05 43.28..d..6..d7. 0950- E8 35 FB 33 0C 35 33 0C 32 38 C8 00 64 05 03 36 .5.3.53.28..d..6 0960- 0D 0E 64 37 03 E8 0A 04 35 33 04 03 37 21 33 0C ..d7....53..7!3. 0970- 37 21 33 0C 32 38 DE 00 64 05 03 36 0D 09 64 38 7!3.28..d..6..d8 0980- 0C E8 37 00 E2 33 0C 36 33 0C 32 39 01 0C 00 64 ..7..3.63.29...d 0990- 05 03 36 0D 1D 39 01 05 64 37 04 E8 38 05 E2 35 ..6..9..d7..8..5 09A0- 0D 04 36 0D 07 0C 3A 01 C2 00 33 0C 39 E1 00 33 ..6...:...3.9..3 09B0- 0C 0C 3A 01 C2 00 33 0C 32 64 3D D4 1C 64 3D D6 ..:...3.2d=..d=. 09C0- 1C 32 64 3D D4 18 64 3D D6 1C 32 00 90 5F 5F 43 .2d=..d=..2..__C 09D0- 4C 4B 46 52 45 51 10 00 B4 C4 04 50 4F 57 45 52 LKFREQ.....POWER 09E0- 55 50 5F 53 50 49 10 00 35 0C 00 50 4F 57 45 52 UP_SPI..5..POWER 09F0- 55 50 5F 53 50 49 4C 49 4E 45 53 10 80 38 01 00 UP_SPILINES..8.. 0A00- 50 4F 57 45 52 44 4F 57 4E 5F 53 50 49 10 00 09 POWERDOWN_SPI... 0A10- 3D 00 52 45 50 45 54 49 54 49 56 45 5F 50 4F 57 =.REPETITIVE_POW 0A20- 45 52 55 50 10 01 00 00 00 46 55 4E 43 49 44 5F ERUP.....FUNCID_ 0A30- 5F 52 45 41 44 59 10 00 00 00 00 46 55 4E 43 49 _READY.....FUNCI 0A40- 44 5F 5F 49 4E 49 54 31 10 01 00 00 00 46 55 4E D__INIT1.....FUN 0A50- 43 49 44 5F 5F 50 4F 57 45 52 4F 4E 10 02 00 00 CID__POWERON.... 0A60- 00 46 55 4E 43 49 44 5F 5F 50 4F 57 45 52 4F 46 .FUNCID__POWEROF 0A70- 46 10 03 00 00 00 46 55 4E 43 49 44 5F 5F 54 52 F.....FUNCID__TR 0A80- 49 47 47 45 52 10 04 00 00 00 46 55 4E 43 49 44 IGGER.....FUNCID 0A90- 5F 5F 4C 4F 5F 43 45 4E 10 05 00 00 00 46 55 4E __LO_CEN.....FUN 0AA0- 43 49 44 5F 5F 48 49 5F 43 45 4E 10 06 00 00 00 CID__HI_CEN..... 0AB0- 46 55 4E 43 49 44 5F 5F 4C 4F 5F 57 50 4E 10 07 FUNCID__LO_WPN.. 0AC0- 00 00 00 46 55 4E 43 49 44 5F 5F 48 49 5F 57 50 ...FUNCID__HI_WP 0AD0- 4E 10 08 00 00 00 46 55 4E 43 49 44 5F 5F 52 45 N.....FUNCID__RE 0AE0- 41 44 10 09 00 00 00 46 55 4E 43 49 44 5F 5F 57 AD.....FUNCID__W 0AF0- 52 49 54 45 10 0A 00 00 00 46 55 4E 43 49 44 5F RITE.....FUNCID_ 0B00- 5F 53 45 54 53 50 49 46 52 51 10 0B 00 00 00 47 _SETSPIFRQ.....G 0B10- 4F 01 49 4E 49 54 00 50 4F 57 45 52 5F 4F 4E 01 O.INIT.POWER_ON. 0B20- 50 4F 57 45 52 5F 4F 46 46 00 46 49 4E 41 4C 5F POWER_OFF.FINAL_ 0B30- 54 52 49 47 47 45 52 00 43 48 49 50 5F 45 4E 41 TRIGGER.CHIP_ENA 0B40- 42 4C 45 00 43 48 49 50 5F 44 49 53 41 42 4C 45 BLE.CHIP_DISABLE 0B50- 00 57 50 4E 5F 4C 4F 57 00 57 50 4E 5F 48 49 47 .WPN_LOW.WPN_HIG 0B60- 48 00 49 4E 04 4F 55 54 04 53 50 49 5F 50 4E 50 H.IN.OUT.SPI_PNP 0B70- 10 0A 00 00 00 53 50 49 5F 43 45 4E 30 10 01 00 .....SPI_CEN0... 0B80- 00 00 53 50 49 5F 43 45 4E 31 10 00 00 00 00 53 ..SPI_CEN1.....S 0B90- 50 49 5F 4D 49 53 4F 10 08 00 00 00 53 50 49 5F PI_MISO.....SPI_ 0BA0- 4D 4F 53 49 10 02 00 00 00 53 50 49 5F 57 50 4E MOSI.....SPI_WPN 0BB0- 10 03 00 00 00 53 50 49 5F 48 4F 4C 44 4E 10 0C .....SPI_HOLDN.. 0BC0- 00 00 00 53 50 49 5F 53 43 4C 4B 30 10 07 00 00 ...SPI_SCLK0.... 0BD0- 00 53 50 49 5F 53 43 4C 4B 31 10 06 00 00 00 53 .SPI_SCLK1.....S 0BE0- 50 49 5F 53 43 4C 4B 32 10 05 00 00 00 53 50 49 PI_SCLK2.....SPI 0BF0- 5F 53 43 4C 4B 33 10 04 00 00 00 50 49 4E 5F 54 _SCLK3.....PIN_T 0C00- 52 47 5F 46 53 45 4C 10 1D 00 00 00 42 49 54 4D RG_FSEL.....BITM 0C10- 41 53 4B 5F 43 45 4E 10 03 00 00 00 42 49 54 4D ASK_CEN.....BITM 0C20- 41 53 4B 5F 53 43 4C 4B 10 F0 00 00 00 42 49 54 ASK_SCLK.....BIT 0C30- 4D 41 53 4B 5F 53 50 49 10 FF 11 00 00 MASK_SPI..... ______________________________________________________________________________ ********************************************************* File starts here *** Zerocat Chipflasher --- Flash free firmware, kick the Management Engine. Copyright (C) 2020, 2021, 2022 Kai Mertens File serprog-SPI-PASM.spin --- access chip via SPI Bus This file is part of Zerocat Chipflasher. See end of file for terms of use. ****************************************************************************** # SPI Modes Mode# CPOL (Clock Polarity) CPHA (Clock Phase) ----- --------------------- ------------------ 0 0 0 1 0 1 2 1 0 3 1 1 ## Mode Descriptions Mode 0 --- The clock is active when HIGH. Data is written on the rising edge of the clock. Data is read on the falling edge of the clock. (Default mode for most SPI applications and chips.) Mode 3 --- The clock is active when LOW. Data is written on the falling edge of the clock. Data is read on the rising edge of the clock. # Object Summary Object "../../firmware2/src/serprog-SPI-PASM" Interface: PUB go(cfgboard) PUB init PUB power_on(freq) PUB power_off PUB final_trigger PUB chip_enable PUB chip_disable PUB WPn_low PUB WPn_high PUB in(freq, bitlength, bitmask, fid) PUB out(freq, data_out, msbit, fid) Program: 626 Longs Variable: 8 Longs # Objects Load pin configuration object. # Constants Pin Configuration SPI_PNP SPI_CEn0 SPI_CEn1 SPI_MISO SPI_MOSI SPI_WPn SPI_HOLDn SPI_SCLK0 SPI_SCLK1 SPI_SCLK2 SPI_SCLK3 PIN_TRG_FSEL SPI Bitmasks BITMASK_CEn BITMASK_SCLK BITMASK_SPI SPI Power Up Timings in Milliseconds __CLKFREQ (80_000_000): fixed to 80MHz operation, should be set according to CLKFREQ value instead Measurements with Cin=10uF Tantalum, Cout=1000uF Model | POWERUP | Repetitive? | Decay? | POWERDOWN --------------|-----------|---------------|----------|------------- T60/MX | 5.0ms | no | yes | 2.0ms T60/SST | 1.8ms | yes | yes | 4.5ms T60/Atmel | 1.6ms | no | yes | 2.0ms T500/MX | 2.0ms | no | no | 50.0ms X230 64Mbit | instant | no | no | instant Measurements with Cin=10uF Tantalum, Cout=100uF + 100nF Model | POWERUP | Repetitive? | Decay? | POWERDOWN --------------|-----------|---------------|----------|------------- GA-G41M-ES2L | > 8ms | no | ? | ? POWERUP_SPI (10ms): let voltage rise up on target board POWERUP_SPILINES (1ms): give lines some time to settle Is this required?? A value of 100us is fine for GA-G41M-ES2L. LetM-bM-^@M-^?s keep this value otherwise a chain of new tests is needed. POWERDOWN_SPI (50ms): a) blind out spikes on net Vcc_SPI (100us) b) let voltage come down on target board REPETITIVE_POWERUP (1) ENUM t_FUNCID FUNCID__READY, must be zero FUNCID__init1 FUNCID__poweron FUNCID__poweroff FUNCID__trigger FUNCID__lo_CEn FUNCID__hi_CEn FUNCID__lo_WPn FUNCID__hi_WPn FUNCID__read FUNCID__write FUNCID__setspifrq # Variables stack[] --- Provide some stack space board_config # Functions _________________ PUB go(cfgboard) Initialize board_config. Initialize static parameter. Launch PASM code into new cog: SPI_PASM _________ PUB init Launch PASM routine: init1 ___________________ PUB power_on(freq) Repetitive power on. ______________ PUB power_off Launch PASM routine: poweroff __________________ PUB final_trigger Launch a final trigger to break endless loop. ________________ PUB chip_enable Launch PASM routine: lo_CEn _________________ PUB chip_disable Launch PASM routine: hi_CEn ____________ PUB WPn_low Launch PASM routine: lo_WPn _____________ PUB WPn_high Launch PASM routine: hi_WPn ______________________________________ PUB in(freq, bitlength, bitmask, fid) Launch PASM routine: read Return value. ____________________________________ PUB out(freq, data_out, msbit, fid) Launch PASM routine: write # PASM/Data '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' SPI_PASM --- PASM code entry Parameter: * stack[3] = function ID / Ready Flag * stack[4] = mask_SPI_SEL * stack[5] = mode_SPI * stack[6] = t_powerup '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' hi_WPn --- deassert WPn Description: Sets #WP high, disables hardware write protection (if any). Note timing. Parameter: * stack[3] = function ID, will be set to 'ready' when done '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' lo_WPn --- assert WPn Description: Sets #WP low, enables hardware write protection (if configured). Note timing. Parameter: * stack[3] = function ID, will be set to 'ready' when done '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' lo_CEn --- chip enable/select Description: Activates output, CE# goes low. Note timing. Parameter: * stack[3] = function ID, will be set to 'ready' when done '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' hi_CEn --- chip disable/deselect Description: Uses tristate pin, as CE# goes high via pull-up. Note timing. Parameter: * stack[3] = function ID, will be set to 'ready' when done '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' init1 --- initialize SPI bus Description: * set up free wheeling counter modules to provide high frequency clock rates * initialize SPI bus pins to be in tristate mode * clear SPI bus latches * disable hold function * initialize clock pins Parameter: * stack[3] = function ID, will be set to 'ready' when done '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' poweron --- power SPI bus on Entry condition: * all SPI bus pins are in tristate mode * output latches are initialized * PNP MOSFET disabled, thus chip and #CE pull-up are not powered Power-up SPI bus: * activate PNP MOSFET, thus power chip on, with delay * activate SPI bus pins, with delay * the number of SPI clock driver pins is reduced for high frequencies Parameter: * stack[2] = targeted SPI frequency * stack[3] = function ID, will be set to 'ready' when done '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' poweroff --- power off the SPI bus Description: Leaves Propeller pins in tristate condition, as they might be used by other cogs. Parameter: * stack[3] = function ID, will be set to 'ready' when done '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' trigger --- trigger a final, dummy pulse train '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' write --- send a value to SPI bus Description: This routine starts with HUB instructions, which might take odd numbers of cycles. Are we just lucky that the code for high speed data transfer is in sync with the free wheeling clock modules? Do we have to expect an out-of-sync exception at some point in future?? * Case msbit == 128 has been rolled out to speed up byte transfer. * Cases $00 and $ff have been rolled out to speed up byte transfer even more. Parameter: * stack[2] = most significant bit, i.e. 128 for a byte to transfer * stack[1] = data to transmit * stack[0] = freqSPI * stack[3] = function ID, will be set to 'ready' when done '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' read --- read a value from SPI bus, apply bitmask Description: This routine starts with HUB instructions, which might take odd numbers of cycles. Are we just lucky that the code for high speed data transfer is in sync with the free wheeling clock modules? Do we have to expect an out-of-sync exception at some point in future?? Bit length 8 has been rolled out to speed up transfer, using a higher frequency. Parameter: * stack[2] = bitmask / return value * stack[1] = bitlength * stack[0] = freqSPI * stack[3] = function ID, will be set to 'ready' when done * stack[5] = SPI mode The return value is not cleared upon entry. Therefore, bitmask should correspond to bitlength, as higher bits are not neccessarily zero. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Named registers, initialized ready --- used to flag valid data or end of function mask_TRIGGER --- pin bit mask mask_SPI_AND_PNP --- compound bit mask mask_SPI --- compound bit mask mask_SCLK --- compound bit mask mask_CEn --- compound bit mask mask_PNP --- pin bit mask mask_MOSI --- pin bit mask mask_MISO --- pin bit mask mask_HOLDn --- pin bit mask mask_WPn --- pin bit mask time_LINESUP time_POWERDOWN '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Named registers, reserved space, not initialized funcID --- PASM function to call freqSPI --- targeted SPI frequency p_stack --- stack base address, as passed via PAR p_ready --- pointer into stack, func ID and ready flag p --- pointer into stack mask_SPI_SEL --- selected pins of SPI Bus, i.e. different sets of clock pins mode_SPI mbit --- most significant bit / bit mask nbit --- number of bit value --- in/out data timetarget --- temporary future time stamp t_powerup --- give SPI voltage some time to rise ****************************************************************************** Terms of Use: Zerocat Chipflasher 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 3 of the License, or (at your option) any later version. Zerocat Chipflasher 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 Zerocat Chipflasher. If not, see <http://www.gnu.org/licenses/>. ************************************************************** End of File ***