|
|
@ -370,11 +370,16 @@ CSEG AT 80h ; Code segment after interrupt vectors |
|
|
|
STARTUP_POWER_TABLE: DB 1, 2, 3, 4, 6, 9, 12, 18, 25, 37, 50, 62, 75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Macros |
|
|
|
; |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
|
|
|
|
|
|
|
|
DSHOT_TLM_CLOCK EQU 24500000 ; 24.5MHz |
|
|
|
DSHOT_TLM_START_DELAY EQU -1 ; Start telemetry after 1 tick (~30us after receiving DShot cmd) |
|
|
|
DSHOT_TLM_PREDELAY EQU 6 ; 6 timer 0 ticks inherent delay |
|
|
@ -502,6 +507,16 @@ skip: |
|
|
|
ENDM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Interrupt handlers |
|
|
|
; |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Timer 0 interrupt routine (High priority) |
|
|
@ -1145,6 +1160,16 @@ ENDIF |
|
|
|
reti |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Misc utility functions |
|
|
|
; |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Wait a number of milliseconds (Multiple entry points) |
|
|
@ -1308,6 +1333,16 @@ led_3_done: |
|
|
|
ret |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Power and temperature control |
|
|
|
; |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Switch power off routine |
|
|
@ -1496,6 +1531,16 @@ temp_increase_pwm_limit: |
|
|
|
ret |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Commutation and timing |
|
|
|
; |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Initialize timing routine |
|
|
@ -2444,6 +2489,16 @@ comm6_comm1_rev: |
|
|
|
ret |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; DShot |
|
|
|
; |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Detect DShot RCP level |
|
|
@ -3036,6 +3091,16 @@ dshot_gcr_encode_F_01111: |
|
|
|
ret |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Settings |
|
|
|
; |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Set default parameters |
|
|
@ -3177,10 +3242,17 @@ ENDIF |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Main program start |
|
|
|
; Main program |
|
|
|
; |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
|
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Main program entry point |
|
|
|
; |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
pgm_start: |
|
|
|
mov Flash_Key_1, #0 ; Initialize flash keys to invalid values |
|
|
|
mov Flash_Key_2, #0 |
|
|
@ -3468,7 +3540,7 @@ wait_for_power_on_nonzero: |
|
|
|
|
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
; |
|
|
|
; Start entry point |
|
|
|
; Motor start entry point |
|
|
|
; |
|
|
|
;**** **** **** **** **** **** **** **** **** **** **** **** **** |
|
|
|
init_start: |
|
|
|