TIMAS_Bro

Untitled

Sep 20th, 2025
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. # ROOM CONTROLLER IC
  2. alias MasterIC d0
  3. alias AtmosSensor d1
  4. alias IntakeVent d2
  5. alias OutputVent d3
  6.  
  7. define MSG_READY 0
  8. define MSG_TEMP_STATUS 1
  9. define MSG_ATMOS_STATUS 2
  10. define MSG_HEATING_CMD 3
  11. define MSG_COOLING_CMD 4
  12.  
  13. define TEMP_TARGET 293.15
  14. define O2_TARGET 0.21
  15. define CO2_MAX 0.005
  16. define TEMP_TOLERANCE 1.0
  17. define O2_TOLERANCE 0.01
  18.  
  19. alias temp_status r0
  20. alias atmos_status r1
  21. alias heating_cmd r2
  22. alias cooling_cmd r3
  23.  
  24. s db Setting MSG_READY
  25.  
  26. main:
  27. yield
  28.  
  29. # Force send status every cycle - critical fix
  30. jal force_send_status
  31.  
  32. # check for commands
  33. jal check_commands
  34.  
  35. # Control vents
  36. jal control_vents
  37. j main
  38.  
  39. force_send_status:
  40. # Temperature status first
  41. l r6 MasterIC Setting
  42. beqz r6 send_temp
  43.  
  44. yield
  45. j force_send_status
  46.  
  47. send_temp:
  48. move r7 MSG_TEMP_STATUS
  49. s MasterIC Setting r7
  50. yield
  51.  
  52. # wait for master to acknowledge (-1)
  53. wait_master_ack:
  54. l r6 MasterIC Setting
  55. beq r6 -1 temp_ack
  56. yield
  57. j wait_master_ack
  58.  
  59. temp_ack:
  60. # Send temperature value
  61. l r6 AtmosSensor Temperature
  62. s MasterIC Setting r6
  63. yield
  64.  
  65. # wait for master to process (back to 0)
  66. wait_master_ready:
  67. l r6 MasterIC Setting
  68. beqz r6 atmos_start
  69. yield
  70. j wait_master_ready
  71.  
  72. atmos_start:
  73. # Atmosphere status
  74. move r7 MSG_ATMOS_STATUS
  75. s MasterIC Setting r7
  76. yield
  77.  
  78. wait_master_ack2:
  79. l r6 MasterIC Setting
  80. beq r6 -1 atmos_ack
  81. yield
  82. j wait_master_ack2
  83.  
  84. atmos_ack:
  85. # send atmosphere value (1 if needs filtering, 0 if good)
  86. l r7 AtmosSensor RatioOxygen
  87. l r8 AtmosSensor RatioCarbonDioxide
  88.  
  89. sub r9 r7 O2_TARGET
  90. abs r10 r9
  91. sgt r11 r10 O2_TOLERANCE
  92. sgt r12 r8 CO2_MAX
  93. or atmos_status r11 r12
  94.  
  95. s MasterIC Setting atmos_status
  96. j ra
  97.  
  98. check_commands:
  99. l r6 db Setting
  100. beqz r6 no_command
  101.  
  102. seq heating_cmd r6 MSG_HEATING_CMD
  103. seq cooling_cmd r6 MSG_COOLING_CMD
  104. s db Setting MSG_READY
  105. j ra
  106.  
  107. no_command:
  108. j ra
  109.  
  110. control_vents:
  111. # Atmosphere / pull dirty air to filters
  112. s IntakeVent On atmos_status
  113. s IntakeVent Mode 0 # Outward
  114.  
  115. # temperature - push conditioned air to room
  116. or r6 heating_cmd cooling_cmd
  117. s OutputVent On r6
  118. s OutputVent Mode 1 # Inward
  119.  
  120. # Reset commands
  121. move heating_cmd 0
  122. move cooling_cmd 0
  123. j ra
Advertisement
Add Comment
Please, Sign In to add comment