5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
123
返回列表 发新帖
楼主: 逗倪豌儿
打印 上一主题 下一主题

BLHeli_S 源码解析讨论

[复制链接]
41
发表于 2017-1-10 09:47 | 只看该作者
本帖最后由 sjh2100 于 2017-2-9 23:18 编辑
逗倪豌儿 发表于 2017-1-9 18:39
1 pgm就是允许用户自行配制的参数,说白了就是用户对这些参数是可以修改配置的
2 wrap意识溢出的意识, ...

谢谢您的回复。pgm这样我就理解成programable,wrap如果是溢出,我觉得应该是overflow,Comm_Period4x除以4应该是Divide Comm_Period4x by 4。我能吐槽这个老外英文吗,我都先百度翻译。
我看了一下是除以16,他是用了:
swap         A
anl    A, #00Fh

swap         A
anl    A, #00F0h
来实现的。而不是右移4次。右移4次需要多次对C操作。
**********************************麻烦您看看以下几行程序,非s版程序。
; Load current commutation timing
mov A, Comm_Period4x_H  ; Divide 4 times
swap A
anl A, #00Fh
mov Temp2, A;高四位
mov A, Comm_Period4x_H
swap A
anl A, #0F0h

mov Temp1, A;第四位
mov A, Comm_Period4x_L
swap A
anl A, #00Fh
add A, Temp1
;+低字节高四位
mov Temp1, A;结果在temp2temp1中。以上没有问题
*******************************
mov A, Temp4    ; If erpm below 156k - go to normal case
subb A, #2
jc ($+4)
clr Flags0.HIGH_RPM   ; Clear high rpm bit

mov Temp1, #2   ; Set timing reduction
mov A, Temp4   ; Divide by 2 4 times这里的除法与上面的很不一样
swap A
mov Temp7, A;   ;temp7=低字节高字节
mov Temp4, #0
mov A, Temp3
swap A     ;temp3保留高字节
anl A, #0Fh

orl A, Temp7
mov Temp3, A   ;temp3=高字节低4位_低字节高四位。感觉这行代码没有完成 Divide by 2 4 times的操作。个人以为是bug。
后面几行如下,应该和除法没关系。
clr     C
         mov A, Temp3
         subb          A, Temp1
         mov Temp3, A
         jc      load_min_time_fast                  ; Check that result is still positive
********************
2017——01——10今天下午github无法登陆了!要河蟹?
********************
2017-02-09 在变量定义区发现了:
ISEG AT 080h                                         ; //内部间接寻址绝对数据段
Pgm_Gov_P_Gain:                     DS    1                ;Programmed governorP gain
故pgm就是Programmed 。








欢迎继续阅读楼主其他信息

主题

  • 没有相关信息
  • 没有相关信息
  • 没有相关信息
42
发表于 2017-1-12 09:48 | 只看该作者
逗倪豌儿 发表于 2017-1-9 18:39
1 pgm就是允许用户自行配制的参数,说白了就是用户对这些参数是可以修改配置的
2 wrap意识溢出的意识, ...

只看红色即可
djnz Startup_Zc_Timeout_Cntd, comp_check_timeout_extend_timeout;▲跳出
comp_check_timeout_timeout_extended:
setb Flags1.COMP_TIMED_OUT
ajmp setup_comm_wait
comp_check_timeout_extend_timeout:;▲跳入。为何用djnz不是往前跳?
call setup_zc_scan_timeout
comp_check_timeout_not_timed_out:

comp_read_ok_jmp:
ajmp comp_check_timeout
clr Flags1.COMP_TIMED_OUT
;ret??? 原文无此ret,下面为另一子程序。奇怪啊
;**** **** **** **** **** **** **** **** **** **** **** **** ****
;
; Setup commutation timing routine
;
; No assumptions
;
; Sets up and starts wait from commutation to zero cross
;
;**** **** **** **** **** **** **** **** **** **** **** **** ****
setup_comm_wait:
clr EA
anl EIE1, #7Fh  ; Disable timer3 interrupts
mov TMR3CN, #00h  ; Timer3 disabled and interrupt flag cleared
mov TMR3L, Wt_Comm_Start_L
mov TMR3H, Wt_Comm_Start_H
mov TMR3CN, #04h  ; Timer3 enabled and interrupt flag cleared
; Setup next wait time
mov TMR3RLL, Wt_Adv_Start_L
mov TMR3RLH, Wt_Adv_Start_H
setb Flags0.T3_PENDING
orl EIE1, #80h  ; Enable timer3 interrupts
setb EA    ; Enable interrupts again
;原文也木有此行no ret ????????????????
;**** **** **** **** **** **** **** **** **** **** **** **** ****
;
; Evaluate comparator integrity
;
; No assumptions
;
; Checks comparator signal behaviour versus expected behaviour
;
;**** **** **** **** **** **** **** **** **** **** **** **** ****
evaluate_comparator_integrity:
mov A, Flags1



43
发表于 2017-1-12 15:28 | 只看该作者
这个好,顶顶。
44
 楼主| 发表于 2017-1-12 16:44 | 只看该作者
sjh2100 发表于 2017-1-10 09:47
谢谢您的回复。pgm这样我就理解成programable,wrap如果是溢出,我觉得应该是overflow,Comm_Per ...

你这里面怎么突然冒出个Temp3,上面都没提到,无法给你解释
45
 楼主| 发表于 2017-1-12 16:55 | 只看该作者
sjh2100 发表于 2017-1-12 09:48
只看红色即可
djnz Startup_Zc_Timeout_Cntd, comp_check_timeout_extend_timeout;▲跳出
comp_check_ ...

1: Startup_Zc_Timeout_Cntd = 0 就意味着超时了所以要去执行超时处理,直接就往下执行 comp_check_timeout_timeout_extended, 如果不是0 那么就执行comp_check_timeout_extend_timeout ,再去检查下比较器,有什么不妥的吗?
2 : ret??? 原文无此ret,下面为另一子程序。奇怪啊  :这有什么奇怪的 ,这仅仅是个代码段,又不是函数,非得有ret不行,没有ret 就接着往下走执行 setup_comm_wait
3:原文也木有此行no ret ????????????????  这和第二个问题一样,没有ret 就接着往下顺序执行

PS:你这是汇编水平问题,学学汇编的基本语法吧还是·····





46
发表于 2017-1-12 19:41 | 只看该作者
逗倪豌儿 发表于 2017-1-12 16:55
1: Startup_Zc_Timeout_Cntd = 0 就意味着超时了所以要去执行超时处理,直接就往下执行 comp_check_time ...

感谢回复。
说的对。

47
发表于 2017-2-15 09:06 | 只看该作者
给楼主这样无私的分享赞一个
48
发表于 2017-2-15 10:13 | 只看该作者
好东西,做个记号。
49
发表于 2017-2-20 17:15 | 只看该作者
你好,有幸看到你发的这个帖子,刚好有这个需求,冒昧的打扰下可以帮忙开发一款BLS电调软件吗,付费开发

50
 楼主| 发表于 2017-2-21 12:41 | 只看该作者
735998700 发表于 2017-2-20 17:15
你好,有幸看到你发的这个帖子,刚好有这个需求,冒昧的打扰下可以帮忙开发一款BLS电调软件吗,付费开发

...

你需要改什么需求,还是怎么?
51
发表于 2017-2-21 14:50 | 只看该作者
逗倪豌儿 发表于 2017-2-21 12:41
你需要改什么需求,还是怎么?

我手上是有自己做好的硬件,就是根据我的硬件IO口来改下软件就可以了,我自己软件不懂,所以想请你帮个忙,方便加我QQ细聊吗735998700
52
发表于 2017-2-21 19:59 | 只看该作者
逗倪豌儿 发表于 2016-10-22 16:44
# 默认参数加载函数 -- set_default_parameters #

----------

51汇编?

53
发表于 2017-3-18 20:10 | 只看该作者
做个记号,慢慢消化,虽然消化不了
54
发表于 2017-7-17 11:16 | 只看该作者
留下记号,学习硬件
55
发表于 2017-7-17 17:43 | 只看该作者
请教楼主,为什么不用C呢?
56
发表于 2017-7-20 19:51 | 只看该作者
懵进懵出
来自苹果客户端来自苹果客户端
57
 楼主| 发表于 2017-7-27 19:58 | 只看该作者
iamfool 发表于 2017-7-17 17:43
请教楼主,为什么不用C呢?

flash 装不下

58
发表于 2018-10-9 00:19 | 只看该作者
这个太有用了,谢谢分享!
59
发表于 2018-11-14 20:43 | 只看该作者
有硬件电路图吗 想做一个看看
60
发表于 2019-2-26 19:54 | 只看该作者
本帖最后由 QJ寻解惑 于 2019-2-26 20:04 编辑

楼主您好!我现在使用了BLHeli_s源码,原理图如下:

文件我选了C.INC ,确保了引脚没有错,出现的问题是电机不能顺畅的转起来,输入的信号越大抖动越明显。当我只焊接电机的两个相时,它抖了一几秒钟后会启动保护,所以我觉得不是缺相的问题,应该是程序哪里不兼容了。运转视频如下:
https://v.qq.com/x/page/a0842w86gfl.html
希望楼主能给个联系方式,顺便提点建议
QQ:  2467863212

原理图.png (89.75 KB, 下载次数: 53)

原理图.png
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /2 下一条

快速回复 返回顶部 返回列表