Advertisement
Guest User

Untitled

a guest
May 14th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 14.03 KB | None | 0 0
  1.  
  2. seg000:08004480 SetPhaseTiming                          ; CODE XREF: sub_80049A0+23Ep
  3. seg000:08004480
  4. seg000:08004480 var_18          = -0x18
  5. seg000:08004480 arg_1C8         =  0x1C8
  6. seg000:08004480
  7. seg000:08004480                 PUSH    {R3-R7,LR}
  8. seg000:08004482                 LDR     R2, =0x20000228
  9. seg000:08004484                 LDRB    R0, [R2]
  10. seg000:08004486                 STRB    R0, [R2,#2]
  11. seg000:08004488                 MOVS    R0, #1
  12. seg000:0800448A                 STRB    R0, [R2]
  13. seg000:0800448C                 LDRH    R0, [R2,#0x14]
  14. seg000:0800448E                 MOV     R3, R0
  15. seg000:08004490                 B       loc_800449E
  16. seg000:08004492 ; ---------------------------------------------------------------------------
  17. seg000:08004492
  18. /// Read some variables, e.g. (unconfirmed) motor power control/
  19. seg000:08004492 loc_8004492                             ; CODE XREF: SetPhaseTiming+24j
  20. seg000:08004492                 LDR     R1, =0xFFFFEAAB
  21. seg000:08004494                 ADDS    R0, R0, R1
  22. seg000:08004496                 LDRB    R1, [R2]
  23. seg000:08004498                 UXTH    R0, R0
  24. seg000:0800449A                 ADDS    R1, R1, #1
  25. seg000:0800449C                 STRB    R1, [R2]
  26. seg000:0800449E
  27. seg000:0800449E loc_800449E                             ; CODE XREF: SetPhaseTiming+10j
  28. seg000:0800449E                 LDR     R1, =0xFFFFEAAB
  29. seg000:080044A0                 NEGS    R1, R1
  30. seg000:080044A2                 CMP     R0, R1
  31. seg000:080044A4                 BCS     loc_8004492
  32. seg000:080044A6                 LDRB    R0, [R2]
  33. seg000:080044A8                 CMP     R0, #6
  34. seg000:080044AA                 BLS     loc_80044B0
  35. seg000:080044AC                 MOVS    R0, #6
  36. seg000:080044AE                 STRB    R0, [R2]
  37. seg000:080044B0
  38. seg000:080044B0 loc_80044B0                             ; CODE XREF: SetPhaseTiming+2Aj
  39. seg000:080044B0                 LDR     R0, =0x7FFF
  40. seg000:080044B2                 STRH    R3, [R2,#0x16]
  41. seg000:080044B4                 CMP     R3, R0
  42. seg000:080044B6                 BLS     loc_80044BC
  43. seg000:080044B8                 ANDS    R0, R3
  44. seg000:080044BA                 STRH    R0, [R2,#0x16]
  45. seg000:080044BC
  46. seg000:080044BC loc_80044BC                             ; CODE XREF: SetPhaseTiming+36j
  47. seg000:080044BC                 LDR     R1, =0x20000228
  48. seg000:080044BE                 LDR     R2, =0xFFFFEAAB
  49. seg000:080044C0                 LDRB    R0, [R1]
  50. seg000:080044C2                 NEGS    R2, R2
  51. seg000:080044C4                 LDRH    R1, [R1,#0x16]
  52. seg000:080044C6                 MULS    R0, R2
  53. seg000:080044C8                 CMP     R0, R1
  54. seg000:080044CA                 BCC     loc_80044D2
  55. seg000:080044CC                 SUBS    R0, R0, R1
  56. seg000:080044CE                 UXTH    R0, R0
  57. seg000:080044D0                 B       loc_80044D4
  58. seg000:080044D2 ; ---------------------------------------------------------------------------
  59. seg000:080044D2
  60. seg000:080044D2 loc_80044D2                             ; CODE XREF: SetPhaseTiming+4Aj
  61. seg000:080044D2                 MOVS    R0, #0
  62. seg000:080044D4
  63. seg000:080044D4 loc_80044D4      
  64. ////////// DO A BUNCH OF MATH ///////////////////
  65.                       ; CODE XREF: SetPhaseTiming+50j
  66. seg000:080044D4                 BL      sub_8003760
  67. seg000:080044D8                 STR     R0, [SP,#0x18+var_18]
  68. seg000:080044DA                 LDR     R0, =0x20000228
  69. seg000:080044DC                 LDR     R1, =0xFFFFEAAB
  70. seg000:080044DE                 LDRB    R0, [R0]
  71. seg000:080044E0                 NEGS    R1, R1
  72. seg000:080044E2                 MULS    R0, R1
  73. seg000:080044E4                 LDR     R1, =0x20000228
  74. seg000:080044E6                 LDRH    R1, [R1,#0x16]
  75. seg000:080044E8                 SUBS    R1, R1, R0
  76. seg000:080044EA                 LDR     R0, =0xFFFFEAAB
  77. seg000:080044EC                 NEGS    R0, R0
  78. seg000:080044EE                 ADDS    R0, R1, R0
  79. seg000:080044F0                 UXTH    R0, R0
  80. seg000:080044F2                 BL      sub_8003760
  81. seg000:080044F6                 MOVS    R2, #3
  82. seg000:080044F8                 LDR     R1, [SP,#0x18+var_18]
  83. seg000:080044FA                 LSLS    R2, R2, #9
  84. seg000:080044FC                 MULS    R1, R2
  85. seg000:080044FE                 LDR     R3, =0x20000228
  86. seg000:08004500                 MOVS    R2, #0x12
  87. seg000:08004502                 LDRSH   R2, [R3,R2]
  88. seg000:08004504                 LSRS    R1, R1, #0x10
  89. seg000:08004506                 LDR     R3, =0x469
  90. seg000:08004508                 MULS    R1, R2
  91. seg000:0800450A                 MULS    R1, R3
  92. seg000:0800450C                 MOVS    R3, #0x600
  93. seg000:08004510                 MULS    R0, R3
  94. seg000:08004512                 LSRS    R0, R0, #0x10
  95. seg000:08004514                 MULS    R0, R2
  96. seg000:08004516                 LDR     R2, =0x469
  97. seg000:08004518                 LSRS    R1, R1, #0x14
  98. seg000:0800451A                 MULS    R0, R2
  99. seg000:0800451C                 LDR     R2, =0x20000228
  100. seg000:0800451E                 LSRS    R0, R0, #0x14
  101. seg000:08004520                 LDRB    R2, [R2]
  102. seg000:08004522                 STR     R2, [SP,#0x18+var_18]
  103. seg000:08004524                 MOVS    R3, R2
  104. seg000:08004526                 BL      sub_8005D76
  105. seg000:0800452A                 LSLS    R7, R0, #0x14
  106. seg000:0800452C                 ASRS    R2, R1, #0x14
  107. seg000:0800452E                 ADDS    R1, #0x24
  108. seg000:08004530                 LDRB    R0, [R0,#0x19]
  109. seg000:08004532                 LSLS    R5, R1, #1
  110. seg000:08004534                 MOVS    R4, #0x300
  111. seg000:08004538                 MOV     R6, R4
  112. seg000:0800453A                 MOV     R5, R6
  113. seg000:0800453C                 B       loc_80045C4
  114. seg000:0800453E ; ---------------------------------------------------------------------------
  115. seg000:0800453E                 ADDS    R2, R1, R0
  116. seg000:08004540                 LSLS    R4, R2, #0xF
  117. seg000:08004542                 MOVS    R2, #0x600
  118. seg000:08004546                 LSLS    R3, R2, #0xF
  119. seg000:08004548                 ADDS    R3, R4, R3
  120. seg000:0800454A                 SUBS    R1, R2, R1
  121. seg000:0800454C                 ASRS    R6, R3, #0x10
  122. seg000:0800454E                 ADDS    R2, R1, R0
  123. seg000:08004550                 ASRS    R5, R2, #1
  124. seg000:08004552                 B       loc_800456C
  125. seg000:08004554 ; ---------------------------------------------------------------------------
  126. seg000:08004554                 SUBS    R2, R1, R0
  127. seg000:08004556                 MOVS    R4, #3
  128. seg000:08004558                 LSLS    R3, R2, #0xF
  129. seg000:0800455A                 LSLS    R4, R4, #9
  130. seg000:0800455C                 LSLS    R2, R4, #0xF
  131. seg000:0800455E                 ADDS    R3, R3, R2
  132. seg000:08004560                 ASRS    R6, R3, #0x10
  133. seg000:08004562                 ADDS    R3, R1, R0
  134. seg000:08004564                 LSLS    R3, R3, #0xF
  135. seg000:08004566                 ADDS    R2, R3, R2
  136. seg000:08004568                 ASRS    R5, R2, #0x10
  137. seg000:0800456A                 SUBS    R1, R4, R1
  138. seg000:0800456C
  139. seg000:0800456C loc_800456C                             ; CODE XREF: SetPhaseTiming+D2j
  140. seg000:0800456C                 SUBS    R0, R1, R0
  141. seg000:0800456E
  142. seg000:0800456E loc_800456E                             ; CODE XREF: SetPhaseTiming+10Aj
  143. seg000:0800456E                 ASRS    R4, R0, #1
  144. seg000:08004570                 B       loc_80045C4
  145. seg000:08004572 ; ---------------------------------------------------------------------------
  146. seg000:08004572                 MOVS    R2, #0x600
  147. seg000:08004576                 SUBS    R2, R2, R1
  148. seg000:08004578                 SUBS    R3, R2, R0
  149. seg000:0800457A                 ASRS    R6, R3, #1
  150. seg000:0800457C                 ADDS    R1, R1, R0
  151. seg000:0800457E                 LSLS    R3, R1, #0xF
  152. seg000:08004580                 MOVS    R1, #0x3000000
  153. seg000:08004584                 ADDS    R1, R3, R1
  154. seg000:08004586                 ASRS    R5, R1, #0x10
  155. seg000:08004588                 ADDS    R0, R2, R0
  156. seg000:0800458A                 B       loc_800456E
  157. seg000:0800458C ; ---------------------------------------------------------------------------
  158. seg000:0800458C                 MOVS    R2, #0x600
  159. seg000:08004590                 SUBS    R2, R2, R1
  160. seg000:08004592                 SUBS    R2, R2, R0
  161. seg000:08004594                 ASRS    R6, R2, #1
  162. seg000:08004596                 SUBS    R2, R1, R0
  163. seg000:08004598                 LSLS    R3, R2, #0xF
  164. seg000:0800459A                 MOVS    R2, #0x3000000
  165. seg000:0800459E                 ADDS    R3, R3, R2
  166. seg000:080045A0                 ADDS    R0, R1, R0
  167. seg000:080045A2                 ASRS    R5, R3, #0x10
  168. seg000:080045A4                 LSLS    R0, R0, #0xF
  169. seg000:080045A6                 ADDS    R0, R0, R2
  170. seg000:080045A8                 B       loc_80045C2
  171. seg000:080045AA ; ---------------------------------------------------------------------------
  172. seg000:080045AA                 MOVS    R2, #0x600
  173. seg000:080045AE                 SUBS    R2, R2, R1
  174. seg000:080045B0                 ADDS    R3, R2, R0
  175. seg000:080045B2                 SUBS    R2, R2, R0
  176. seg000:080045B4                 ADDS    R0, R1, R0
  177. seg000:080045B6                 LSLS    R1, R0, #0xF
  178. seg000:080045B8                 MOVS    R0, #3
  179. seg000:080045BA                 ASRS    R6, R3, #1
  180. seg000:080045BC                 ASRS    R5, R2, #1
  181. seg000:080045BE                 LSLS    R0, R0, #0x18
  182. seg000:080045C0                 ADDS    R0, R1, R0
  183. seg000:080045C2
  184. seg000:080045C2 loc_80045C2                             ; CODE XREF: SetPhaseTiming+128j
  185. seg000:080045C2                                         ; SetPhaseTiming+1C0j
  186. seg000:080045C2                 ASRS    R4, R0, #0x10
  187. seg000:080045C4
  188. seg000:080045C4 loc_80045C4                             ; CODE XREF: SetPhaseTiming+BCj
  189. seg000:080045C4                                         ; SetPhaseTiming+F0j
  190. /////////// tidy up after math
  191. seg000:080045C4                 LDR     R0, =0x200000DE
  192. seg000:080045C6                 LDRB    R0, [R0]
  193. seg000:080045C8                 LSLS    R0, R0, #0x1D
  194. seg000:080045CA                 BMI     loc_80045E0
  195. seg000:080045CC                 LDR     R0, =0x20000228
  196. seg000:080045CE                 LDRH    R1, [R0,#0x1E]  ; 3 motor phase valuse
  197. seg000:080045D0                 ADDS    R1, R6, R1
  198. seg000:080045D2                 SXTH    R6, R1
  199. seg000:080045D4                 LDRH    R1, [R0,#0x20]
  200. seg000:080045D6                 LDRH    R0, [R0,#0x22]
  201. seg000:080045D8                 ADDS    R1, R5, R1
  202. seg000:080045DA                 ADDS    R0, R4, R0
  203. seg000:080045DC                 SXTH    R5, R1
  204. seg000:080045DE                 SXTH    R4, R0
  205. seg000:080045E0
  206. //// R4,R5,R6 are the three motor H bridge timings - clamp to 0 and 0x600 (100%)
  207. seg000:080045E0 loc_80045E0                             ; CODE XREF: SetPhaseTiming+14Aj
  208. seg000:080045E0                 CMP     R6, #0
  209. seg000:080045E2                 BGE     loc_80045E6
  210. seg000:080045E4                 MOVS    R6, #0
  211. seg000:080045E6
  212. seg000:080045E6 loc_80045E6                             ; CODE XREF: SetPhaseTiming+162j
  213. seg000:080045E6                 CMP     R5, #0
  214. seg000:080045E8                 BGE     loc_80045EC
  215. seg000:080045EA                 MOVS    R5, #0
  216. seg000:080045EC
  217. seg000:080045EC loc_80045EC                             ; CODE XREF: SetPhaseTiming+168j
  218. seg000:080045EC                 CMP     R4, #0
  219. seg000:080045EE                 BGE     loc_80045F2     ; clamp max on time!
  220. seg000:080045F0                 MOVS    R4, #0
  221. seg000:080045F2
  222. seg000:080045F2 loc_80045F2                             ; CODE XREF: SetPhaseTiming+16Ej
  223. seg000:080045F2                 MOVS    R0, #0x600      ; clamp max on time!
  224. seg000:080045F6                 CMP     R6, R0
  225. seg000:080045F8                 BLE     loc_80045FC
  226. seg000:080045FA                 MOV     R6, R0
  227. seg000:080045FC
  228. seg000:080045FC loc_80045FC                             ; CODE XREF: SetPhaseTiming+178j
  229. seg000:080045FC                 CMP     R5, R0
  230. seg000:080045FE                 BLE     loc_8004602
  231. seg000:08004600                 MOV     R5, R0
  232. seg000:08004602
  233. seg000:08004602 loc_8004602                             ; CODE XREF: SetPhaseTiming+17Ej
  234. seg000:08004602                 CMP     R4, R0
  235. seg000:08004604                 BLE     loc_8004608
  236. seg000:08004606                 MOV     R4, R0
  237. seg000:08004608
  238. seg000:08004608 loc_8004608                             ; CODE XREF: SetPhaseTiming+184j
  239. seg000:08004608                 LDR     R0, =0x40012C00
  240. //////////// Writes motor control 3-phase outputs HERE ......
  241. seg000:0800460A                 STR     R6, [R0,#0x34]  ; set CCR1..3 on TIM1
  242. seg000:0800460C                 STR     R5, [R0,#0x38]
  243. seg000:0800460E                 STR     R4, [R0,#0x3C]
  244. seg000:08004610                 LDR     R2, [SP,#0x18+var_18]
  245. seg000:08004612                 LDR     R0, =0x20000228
  246. seg000:08004614                 MOVS    R1, #4
  247. seg000:08004616                 MOVS    R3, R2
  248. seg000:08004618                 BL      sub_8005D76
  249. seg000:0800461C                 PUSH    {R0-R2,LR}
  250. seg000:0800461E                 CMP     R6, #0x13
  251. seg000:08004620                 LDRSH   R1, [R1,R5]
  252. seg000:08004622                 STR     R7, [SP,#0x28+arg_1C8]
  253. seg000:08004624                 LSLS    R3, R6, #2
  254. seg000:08004626                 ADDS    R2, R1, R0
  255. seg000:08004628                 LSLS    R4, R2, #0xF
  256. seg000:0800462A                 MOVS    R2, #0x600
  257. seg000:0800462E                 LSLS    R3, R2, #0xF
  258. seg000:08004630                 SUBS    R2, R2, R1
  259. seg000:08004632                 SUBS    R2, R2, R0
  260. seg000:08004634                 ADDS    R4, R4, R3
  261. seg000:08004636                 SUBS    R0, R1, R0
  262. seg000:08004638                 ASRS    R6, R4, #0x10
  263. seg000:0800463A                 ASRS    R5, R2, #1
  264. seg000:0800463C                 LSLS    R0, R0, #0xF
  265. seg000:0800463E                 ADDS    R0, R0, R3
  266. seg000:08004640                 B       loc_80045C2
  267. seg000:08004640 ; End of function SetPhaseTiming
  268. seg000:08004640
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement