Dobrica Pavlinušić's random unstructured stuff

newest fork: https://github.com/swegener/b3603




Input voltage: 6V ~ 40V
Output voltage: 0V ~ 36V
Output current: 0A ~ 3A
Conversion efficiency: up to 92%
The output ripple: ≤50mV
Working temperature: -40°C ~ +85°C
Working frequency: 150KHz
Short circuit protection: constant current
Voltage regulation/display resolution: 0.01V
Current regulation/display resolution: 0.001A
The minimum display resolution of power: 0.001W
The minimum display resolution of capacity: 0.001AH
Input reverse connect protection: no, if necessary please install diode
Connection mode: terminals
Size: 66 x 50 x 21mm
Weight: 44g

backup existing flash

pi@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 stm8flash


$ echo "00" | xxd -r -p >ROP_CLEAR.bin
$ stm8flash -c stlinkv2 -p stm8s103f3 -s opt -w ROP_CLEAR.bin 


pi@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/


pi@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



dpavlin@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


pi@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
# 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>
  File "./calibrate.py", line 318, in main
  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
  File "./calibrate.py", line 158, in _sample
    return float(s.split(' ')[1])
IndexError: list index out of range


Upload Files

Click "Browse" to find the file you want to upload. When you click "Upload file" your file will be uploaded and added to the list of attachments for this page.

Maximum file size: 50MB

File Name Author Date Uploaded Size

Save Page As

Enter a meaningful and distinctive title for your page.

Page Title:

Tip: You'll be able to find this page later by using the title you choose.

Page Already Exists

There is already a page named XXX. Would you like to:

Save with a different name:

Save the page with the name "XXX"

Append your text to the bottom of the existing page named: "XXX"

Upload Files

Click "Browse" to find the file you want to upload. When you click "Add file" this file will be added to the list of attachments for this page, and uploaded when you save the page.

Add Tags

Enter a tag and click "Add tag". The tag will be saved when you save the page.