Skip to content

Commit

Permalink
perf: Optimize comparator wait routine on 48MHz
Browse files Browse the repository at this point in the history
  • Loading branch information
mathiasvr committed Jan 18, 2021
1 parent cc36361 commit 661be1b
Showing 1 changed file with 11 additions and 17 deletions.
28 changes: 11 additions & 17 deletions Bluejay.asm
Original file line number Diff line number Diff line change
Expand Up @@ -2128,41 +2128,35 @@ wait_for_comp_out_init:

wait_for_comp_out_start:
; Set number of comparator readings
mov Temp3, #1 ; Number of OK readings required
mov Temp4, #1 ; Max number of readings required
jb Flag_High_Rpm, comp_scale_samples ; Branch if high rpm
mov Temp3, #(1 SHL MCU_48MHZ) ; Number of OK readings required
mov Temp4, #(1 SHL MCU_48MHZ) ; Max number of readings required
jb Flag_High_Rpm, comp_check_timeout ; Branch if high rpm

mov A, Flags_Startup ; Clear demag detected flag if start phases
jz ($+4)
clr Flag_Demag_Detected

jnb Flag_Startup_Phase, wait_for_comp_out_not_startup
mov Temp3, #27 ; Set many samples during startup, approximately one pwm period
mov Temp4, #27
sjmp comp_scale_samples
mov Temp3, #(27 SHL MCU_48MHZ) ; Set many samples during startup, approximately one pwm period
mov Temp4, #(27 SHL MCU_48MHZ)
sjmp comp_check_timeout

wait_for_comp_out_not_startup:
; Too low value (~<15) causes rough running at pwm harmonics.
; Too high a value (~>35) causes the RCT4215 630 to run rough on full throttle
mov Temp4, #20
mov Temp4, #(20 SHL MCU_48MHZ)
mov A, Comm_Period4x_H ; Set number of readings higher for lower speeds
IF MCU_48MHZ == 0
clr C
rrc A
ENDIF
jnz ($+3)
inc A ; Minimum 1
mov Temp3, A
clr C
subb A, #20
subb A, #(20 SHL MCU_48MHZ)
jc ($+4)
mov Temp3, #20 ; Maximum 20

comp_scale_samples:
IF MCU_48MHZ == 1
clr C
rlca Temp3
clr C
rlca Temp4
ENDIF
mov Temp3, #(20 SHL MCU_48MHZ) ; Maximum 20

comp_check_timeout:
jb Flag_Timer3_Pending, comp_check_timeout_not_timed_out ; Has zero cross scan timeout elapsed?
Expand Down

0 comments on commit 661be1b

Please sign in to comment.