Advertisement
Guest User

Untitled

a guest
Apr 28th, 2017
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.92 KB | None | 0 0
  1. #include "soc/rtc_cntl_reg.h"
  2. #include "soc/rtc_io_reg.h"
  3. #include "soc/soc_ulp.h"
  4.  
  5. .bss
  6. .global loop_counter
  7. loop_counter:
  8. .long 0
  9.  
  10. .global io_number
  11. io_number:
  12. .long 0
  13.  
  14. .global sec_count
  15. sec_count:
  16. .long 0
  17.  
  18. .text
  19. .global entry
  20.  
  21. entry:
  22. /*WRITE_RTC_REG(RTC_IO_TOUCH_PAD1_REG,RTC_IO_TOUCH_PAD1_HOLD_S,1,0)
  23. WRITE_RTC_REG(RTC_IO_TOUCH_PAD1_REG,RTC_IO_TOUCH_PAD1_MUX_SEL_S,1,1)
  24. WRITE_RTC_REG(RTC_IO_TOUCH_PAD1_REG,RTC_IO_TOUCH_PAD1_SLP_OE_S,1,1)
  25. WRITE_RTC_REG(RTC_IO_TOUCH_PAD1_REG,RTC_IO_TOUCH_PAD1_TO_GPIO_S,1,1)
  26. WRITE_RTC_REG(RTC_GPIO_ENABLE_W1TS_REG,RTC_GPIO_ENABLE_W1TS_S+11,1,1)
  27. WRITE_RTC_REG(RTC_GPIO_OUT_W1TS_REG,RTC_GPIO_OUT_DATA_W1TS_S+11,1,1)
  28. move r3, loop_counter
  29. ld r2, r3, 0
  30. and r2, r2, 1
  31. jump set_gpio_one, eq
  32. jump set_gpio_zero*/
  33. //halt
  34. // Check the state of the state machine
  35. move r3, loop_counter
  36. ld r2, r3, 0
  37. and r2, r2, 1
  38. // If loop_counter = 0, check if the SoC is asleep
  39. jump define_gpio, eq
  40. ld r2, r3, 0
  41. rsh r2, r2, 1
  42. and r2, r2, 1
  43. // If loop_counter = 1, check if an interrupt as occurred
  44. //jump check_acc, eq
  45. jump check_sleep,eq
  46. jump check_acc
  47. jump entry
  48. halt
  49. //jump check_acc
  50.  
  51. .global define_gpio
  52. define_gpio:
  53. /*GPIO0 - RTCIO11 pin definitions*/
  54. WRITE_RTC_REG(RTC_IO_TOUCH_PAD1_REG,RTC_IO_TOUCH_PAD1_HOLD_S,1,0)
  55. WRITE_RTC_REG(RTC_IO_TOUCH_PAD1_REG,RTC_IO_TOUCH_PAD1_MUX_SEL_S,1,1)
  56. WRITE_RTC_REG(RTC_IO_TOUCH_PAD1_REG,RTC_IO_TOUCH_PAD1_SLP_OE_S,1,1)
  57. WRITE_RTC_REG(RTC_IO_TOUCH_PAD1_REG,RTC_IO_TOUCH_PAD1_TO_GPIO_S,1,1)
  58. WRITE_RTC_REG(RTC_GPIO_ENABLE_W1TS_REG,RTC_GPIO_ENABLE_W1TS_S+11,1,1)
  59. WRITE_RTC_REG(RTC_GPIO_OUT_W1TS_REG,RTC_GPIO_OUT_DATA_W1TS_S+11,1,1)
  60.  
  61. /*GPIO27 - RTCIO17 pin definitions*/
  62. WRITE_RTC_REG(RTC_IO_TOUCH_PAD7_REG,RTC_IO_TOUCH_PAD7_HOLD_S,1,0)
  63. WRITE_RTC_REG(RTC_IO_TOUCH_PAD7_REG,RTC_IO_TOUCH_PAD7_MUX_SEL_S,1,1)
  64. WRITE_RTC_REG(RTC_IO_TOUCH_PAD7_REG,RTC_IO_TOUCH_PAD7_SLP_OE_S,1,1)
  65. WRITE_RTC_REG(RTC_IO_TOUCH_PAD7_REG,RTC_IO_TOUCH_PAD7_TO_GPIO_S,1,1)
  66. WRITE_RTC_REG(RTC_GPIO_ENABLE_W1TS_REG,RTC_GPIO_ENABLE_W1TS_S+17,1,1)
  67. WRITE_RTC_REG(RTC_GPIO_OUT_W1TS_REG,RTC_GPIO_OUT_DATA_W1TS_S+17,1,1)
  68. WRITE_RTC_REG(RTC_IO_TOUCH_PAD7_REG,RTC_IO_TOUCH_PAD7_HOLD_S,1,1)
  69.  
  70. move r3, loop_counter
  71. ld r2, r3, 0
  72. and r2, r2, 0
  73. or r2, r2, 0x0001
  74. st r2, r3, 0
  75. //jump set_gpio_one
  76. halt
  77.  
  78. .global check_acc
  79. check_acc:
  80. // Check the input value of the Accelerometer Interrupt
  81. READ_RTC_REG(RTC_GPIO_IN_REG,RTC_GPIO_IN_NEXT_S+4,1)
  82. and r0, r0, 1
  83. // If LOW, check the Button
  84. jump check_but, eq
  85. // Else, jump to TEMP blinking code
  86. //jump set_gpio_one
  87. move r3, sec_count
  88. ld r2, r3, 0
  89. and r2, r2, 0
  90. st r2, r3, 0
  91. jump wake_up
  92. halt
  93.  
  94. .global check_but
  95. check_but:
  96. /* Check the input value of BUTTON*/
  97. READ_RTC_REG(RTC_GPIO_IN_REG,RTC_GPIO_IN_NEXT_S+5,1)
  98. //READ_RTC_REG(RTC_GPIO_STATUS_REG,RTC_GPIO_STATUS_INT_S+5,1)
  99. and r0, r0, 1
  100. // If LOW, jump to the sleep_to label to stop the ULP program
  101. jump stop_prog, eq
  102. //jump set_gpio_one, eq
  103. //jump add_test_count, eq
  104. // if HIGH jump to TEMP blinking code
  105. //jump set_gpio_one
  106. move r3, sec_count
  107. ld r2, r3, 0
  108. and r2, r2, 0
  109. st r2, r3, 0
  110. jump wake_up
  111. stop_prog:
  112. halt
  113.  
  114. .global check_sleep
  115. check_sleep:
  116. // Check the frequency of the CPU
  117. READ_RTC_REG(RTC_CNTL_DIAG0_REG,19,1)
  118. and r0, r0, 1
  119. jump stop_prog_s, eq
  120. // If it is sleeping, jump to the soc_sleeping label
  121. jump soc_sleeping
  122. // Else, stop the ULP program
  123. stop_prog_s:
  124. halt
  125.  
  126. .global soc_sleeping
  127. soc_sleeping:
  128. // move r0, 450
  129. //delay_s:
  130. // WAIT 65535
  131. // sub r0, r0, 1
  132. // jumpr delay_s, 1, GE
  133. // Turn off DCDC_En
  134. WRITE_RTC_REG(RTC_IO_TOUCH_PAD7_REG,RTC_IO_TOUCH_PAD7_HOLD_S,1,0)
  135. WRITE_RTC_REG(RTC_GPIO_OUT_W1TC_REG,RTC_GPIO_OUT_DATA_W1TC_S+17,1,1)
  136. WRITE_RTC_REG(RTC_IO_TOUCH_PAD7_REG,RTC_IO_TOUCH_PAD7_HOLD_S,1,1)
  137. // update the loop counter variable for the next stateIT 10000
  138. move r3, loop_counter
  139. ld r2, r3, 0
  140. and r2, r2, 0
  141. or r2, r2, 0x0003
  142. st r2, r3, 0
  143. halt
  144.  
  145. .global add_test_count
  146. add_test_count:
  147. move r3, sec_count
  148. ld r0, r3, 0
  149. add r0, r0, 1
  150. jumpr wak, 5, GE
  151. st r0, r3, 0
  152. jump set_gpio_one
  153. wak:
  154. and r0, r0, 0
  155. st r0, r3, 0
  156. jump wake_up
  157. halt
  158.  
  159.  
  160. .global set_gpio_zero
  161. set_gpio_zero:
  162. WRITE_RTC_REG(RTC_GPIO_OUT_W1TC_REG,RTC_GPIO_OUT_DATA_W1TC_S+11,1,1)
  163. move r3, loop_counter
  164. ld r2, r3, 0
  165. and r2, r2, 0
  166. add r2, r2, 1
  167. st r2, r3, 0
  168. //WRITE_RTC_REG(RTC_GPIO_OUT_W1TC_REG,RTC_GPIO_OUT_DATA_W1TC_S+17,1,1)
  169. /*WAIT 10000
  170. WAIT 10000
  171. WAIT 10000
  172. WAIT 10000
  173. WAIT 10000
  174. WAIT 10000
  175. WAIT 10000
  176. WAIT 10000
  177. WAIT 10000
  178. WAIT 10000
  179. WAIT 10000
  180. WAIT 10000
  181. WAIT 10000
  182. WAIT 10000
  183. WAIT 10000
  184. WAIT 10000
  185. WAIT 10000
  186. WAIT 10000
  187. WAIT 10000
  188. WAIT 10000
  189. WAIT 10000
  190. WAIT 10000
  191. WAIT 10000
  192. WAIT 10000
  193. WAIT 10000
  194. WAIT 10000
  195. WAIT 10000
  196. WAIT 10000
  197. WAIT 10000
  198. WAIT 10000
  199. WAIT 10000
  200. WAIT 10000
  201. WAIT 10000
  202. WAIT 10000
  203. WAIT 10000
  204. WAIT 10000
  205. WAIT 10000
  206. WAIT 10000
  207. WAIT 10000
  208. WAIT 10000
  209. WAIT 10000
  210. WAIT 10000
  211. WAIT 10000
  212. WAIT 10000
  213. WAIT 10000*/
  214.  
  215. //SLEEP 0
  216. /* End program */
  217. //jump entry
  218. //jump set_gpio_one
  219. halt
  220.  
  221. .global set_gpio_one
  222. set_gpio_one:
  223. WRITE_RTC_REG(RTC_GPIO_OUT_W1TS_REG,RTC_GPIO_OUT_DATA_W1TS_S+11,1,1)
  224. move r3, loop_counter
  225. ld r2, r3, 0
  226. and r2, r2, 0
  227. st r2, r3, 0
  228. /*WRITE_RTC_REG(RTC_GPIO_OUT_W1TS_REG,RTC_GPIO_OUT_DATA_W1TS_S+17,1,1)*/
  229. //SLEEP 0
  230. /*WAIT 10000
  231. WAIT 10000
  232. WAIT 10000
  233. WAIT 10000
  234. WAIT 10000
  235. WAIT 10000
  236. WAIT 10000
  237. WAIT 10000
  238. WAIT 10000
  239. WAIT 10000
  240. WAIT 10000
  241. WAIT 10000
  242. WAIT 10000
  243. WAIT 10000
  244. WAIT 10000
  245. WAIT 10000
  246. WAIT 10000
  247. WAIT 10000
  248. WAIT 10000
  249. WAIT 10000
  250. WAIT 10000
  251. WAIT 10000
  252. WAIT 10000
  253. WAIT 10000
  254. WAIT 10000
  255. WAIT 10000
  256. WAIT 10000
  257. WAIT 10000
  258. WAIT 10000
  259. WAIT 10000
  260. WAIT 10000
  261. WAIT 10000
  262. WAIT 10000
  263. WAIT 10000
  264. WAIT 10000
  265. WAIT 10000
  266. WAIT 10000
  267. WAIT 10000
  268. WAIT 10000
  269. WAIT 10000
  270. WAIT 10000
  271. WAIT 10000
  272. WAIT 10000
  273. WAIT 10000
  274. WAIT 10000*/
  275.  
  276. //jump set_gpio_zero
  277. //jump entry
  278. /* End program */
  279.  
  280. halt
  281.  
  282. .global wake_up
  283. wake_up:
  284. WRITE_RTC_REG(RTC_IO_TOUCH_PAD7_REG,RTC_IO_TOUCH_PAD7_HOLD_S,1,0)
  285. WRITE_RTC_REG(RTC_GPIO_OUT_W1TS_REG,RTC_GPIO_OUT_DATA_W1TS_S+17,1,1)
  286. WRITE_RTC_REG(RTC_IO_TOUCH_PAD7_REG,RTC_IO_TOUCH_PAD7_HOLD_S,1,1)
  287. move r3, loop_counter
  288. ld r2, r3, 0
  289. and r2, r2, 0
  290. or r2, r2, 0x0001
  291. st r2, r3, 0
  292. move r0,450
  293. //delay_w:
  294. // WAIT 65535
  295. // sub r0, r0, 1
  296. // jumpr delay_w, 1, GE
  297. wake
  298. halt
  299.  
  300. .global loop
  301. loop:
  302. jump loop
  303. halt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement