Dobrica Pavlinušić's random unstructured stuff
B3603: Revision 19
newest fork: https://github.com/swegener/b3603 https://hackaday.io/project/4362-power-supply-b3603-alternative-firmware
Specification
Input voltage: 6V ~ 40V backup existing flashpi@rpi2 ~/stm8flash $ sudo ./stm8flash -c stlinkv2 -p stm8s003f3 -s eeprom -r b3606/eeprom.bin action = 1Determine EEPROM area Reading 128 bytes at 0x4000... OK Bytes received: 128 pi@rpi2 ~/stm8flash $ sudo ./stm8flash -c stlinkv2 -p stm8s003f3 -s flash -r b3606/flash.bin action = 1Determine FLASH area Reading 8192 bytes at 0x8000... OK Bytes received: 8192 pi@rpi2 ~/stm8flash $ sudo ./stm8flash -c stlinkv2 -p stm8s003f3 -s ram -r b3606/ram.bin action = 1Determine RAM area Reading 1024 bytes at 0x0... OK Bytes received: 1024 unprotect stm8 using stm8flashhttps://github.com/vdudouyt/stm8flash/issues/38#issuecomment-195123081 $ echo "00" | xxd -r -p >ROP_CLEAR.bin $ stm8flash -c stlinkv2 -p stm8s103f3 -s opt -w ROP_CLEAR.bin compilepi@rpi2 ~ $ git clone https://github.com/swegener/b3603 Cloning into 'b3603'... remote: Counting objects: 1109, done. remote: Total 1109 (delta 0), reused 0 (delta 0), pack-reus Receiving objects: 100% (1109/1109), 11.04 MiB | 2.90 MiB/s Resolving deltas: 100% (770/770), done. Checking connectivity... done. pi@rpi2 ~/b3603/stm8 $ sudo apt-get install sdcc pi@rpi2 ~/b3603/stm8 $ make Code fits the flash, it is 7930 dpavlin@nuc:/nuc/b3603/stm8$ uname -a Linux nuc 4.4.0-1-amd64 #1 SMP Debian 4.4.6-1 (2016-03-17) x86_64 GNU/Linux dpavlin@nuc:/nuc/b3603/stm8$ sdcc -v SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/TININative/ds400/hc08/s08/stm8 3.5.0 #9253 (Mar 21 2016) (Linux) published under GNU General Public License (GPL) dpavlin@nuc:/nuc/b3603/stm8$ scp b3603.ihx rpi2:stm8flash/ flashpi@rpi2 ~/stm8flash $ sudo ./stm8flash -c stlinkv2 -p stm8s003f3 -w ./b3603.ihx action = 2Determine FLASH area Writing Intel hex file 8160 bytes at 0x8000... Tries exceeded # unprotect flash pi@rpi2 ~/stm8flash $ echo "00" | xxd -r -p >ROP_CLEAR.bin pi@rpi2 ~/stm8flash $ sudo ./stm8flash -c stlinkv2 -p stm8s003f3 -s opt -w ROP_CLEAR.bin action = 2Determine OPT area Writing binary file 1 bytes at 0x4800... OK Bytes written: 1 # serialdpavlin@x200:/x200/stm8$ microcom -p /dev/ttyUSB0 -s 38400 connected to /dev/ttyUSB0 Escape character: Ctrl-\ Type the escape character followed by c to get to the menu or q to quit B3603 starting: Version 1.0.1 pi@rpi2 ~/b3603/stm8 $ cat ~/b3603.sh #!/bin/sh -x microcom -s 38400 -p /dev/serial/by-path/platform-3f980000.usb-usb-0\:1.5.1\:1.0-port0 calibratepi@rpi2 ~/b3603/stm8 $ ./calibrate.py -a /dev/serial/by-path/platform-3f980000.usb-usb-0:1.5.1:1.0-port0 `readlink -f /dev/serial/by-path/platform-3f980000.usb-usb-0\:1.5.3\:1.0-port0` uni-t-ut61e-ser OPEN "MODEL: B3603" # ignored ['STATUS', ''] # ignored ['DONE'] # ignored [''] PSU Input voltage is 12.144, will use 20 steps between 1.0 and 11.144 Setting voltage to 1.0 Multimeter samples vary too much, stddev=0.431414, data: [2.295, 1.6859, 1.2426] Failed to read stable value, trying again, maybe Step 0 Set voltage 1.000000 Read voltage 0.546833 PWM 210.0 ADC 197.0 (0.661) Setting voltage to 1.5 Step 1 Set voltage 1.500000 Read voltage 1.007600 PWM 298.0 ADC 284.0 (1.153) Setting voltage to 2.0 Step 2 Set voltage 2.000000 Read voltage 1.496967 PWM 387.0 ADC 373.0 (1.656) Setting voltage to 2.5 Step 3 Set voltage 2.500000 Read voltage 1.980900 PWM 475.0 ADC 462.0 (2.159) Setting voltage to 3.0 Step 4 Set voltage 3.000000 Read voltage 2.468333 PWM 564.0 ADC 551.0 (2.662) Setting voltage to 3.5 Step 5 Set voltage 3.500000 Read voltage 2.952000 PWM 652.0 ADC 638.0 (3.153) Setting voltage to 4.0 Step 6 Set voltage 4.000000 Read voltage 3.442000 PWM 741.0 ADC 727.0 (3.656) Setting voltage to 4.5 Step 7 Set voltage 4.500000 Read voltage 3.925333 PWM 829.0 ADC 815.0 (4.153) Setting voltage to 5.0 Step 8 Set voltage 5.000000 Read voltage 4.415000 PWM 918.0 ADC 0 (0) Setting voltage to 5.5 sr: serial: Error setting serial port parameters (5): Input/output error. No devices found. Traceback (most recent call last): File "./calibrate.py", line 327, in <module> main() File "./calibrate.py", line 318, in main auto_calibration() File "./calibrate.py", line 248, in auto_calibration vout = dmm.sample3(3) # Use three samples File "./calibrate.py", line 182, in sample3 s = self.sample1(count) File "./calibrate.py", line 169, in sample1 data.append(self._sample()) File "./calibrate.py", line 158, in _sample return float(s.split(' ')[1]) IndexError: list index out of range |