Browse Source

refactor: Reorganize comparator routine

main
Mathias Rasmussen 4 years ago
parent
commit
6597114022
  1. 42
      Bluejay.asm

42
Bluejay.asm

@ -2107,20 +2107,20 @@ wait_before_zc_scan_exit:
;
;**** **** **** **** **** **** **** **** **** **** **** **** ****
wait_for_comp_out_low:
setb Flag_Demag_Detected ; Set demag detected flag as default
mov Comparator_Read_Cnt, #0 ; Reset number of comparator reads
mov B, #00h ; Desired comparator output
jnb Flag_Dir_Change_Brake, ($+6)
mov B, #40h
sjmp wait_for_comp_out_start
sjmp wait_for_comp_out_init
wait_for_comp_out_high:
setb Flag_Demag_Detected ; Set demag detected flag as default
mov Comparator_Read_Cnt, #0 ; Reset number of comparator reads
mov B, #40h ; Desired comparator output
jnb Flag_Dir_Change_Brake, ($+6)
mov B, #00h
wait_for_comp_out_init:
setb Flag_Demag_Detected ; Set demag detected flag as default
mov Comparator_Read_Cnt, #0 ; Reset number of comparator reads
wait_for_comp_out_start:
; Set number of comparator readings
mov Temp3, #1 ; Number of OK readings required
@ -2131,6 +2131,12 @@ wait_for_comp_out_start:
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
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
@ -2146,11 +2152,6 @@ wait_for_comp_out_start:
mov Temp3, #20
jnb Flag_Startup_Phase, comp_scale_samples
mov Temp3, #27 ; Set many samples during startup, approximately one pwm period
mov Temp4, #27
comp_scale_samples:
IF MCU_48MHZ == 1
clr C
@ -2194,8 +2195,17 @@ comp_check_timeout_not_timed_out:
sjmp wait_for_comp_out_exit
comp_read_wrong:
jnb Flag_Startup_Phase, comp_read_wrong_not_startup
jb Flag_Startup_Phase, comp_read_wrong_startup
jb Flag_Demag_Detected, comp_read_wrong_extend_timeout
inc Temp3 ; Increment number of OK readings required
clr C
mov A, Temp3
subb A, Temp4
jc comp_check_timeout ; If below initial requirement - take another reading
sjmp wait_for_comp_out_start ; Otherwise - go back and restart
comp_read_wrong_startup:
inc Temp3 ; Increment number of OK readings required
clr C
mov A, Temp3
@ -2205,16 +2215,6 @@ comp_read_wrong:
sjmp comp_check_timeout ; Continue to look for good ones
comp_read_wrong_not_startup:
jb Flag_Demag_Detected, comp_read_wrong_extend_timeout
inc Temp3 ; Increment number of OK readings required
clr C
mov A, Temp3
subb A, Temp4
jc comp_check_timeout ; If below initial requirement - take another reading
sjmp wait_for_comp_out_start ; Otherwise - go back and restart
comp_read_wrong_extend_timeout:
clr Flag_Demag_Detected ; Clear demag detected flag
anl EIE1, #7Fh ; Disable timer 3 interrupts

Loading…
Cancel
Save