diff --git a/Documents/12V_pump_DCDC.pdf b/Documents/12V_pump_DCDC.pdf
new file mode 100644
index 0000000..fec0ffb
Binary files /dev/null and b/Documents/12V_pump_DCDC.pdf differ
diff --git a/Documents/19V_ACU_DCDC.pdf b/Documents/19V_ACU_DCDC.pdf
new file mode 100644
index 0000000..739a9ae
Binary files /dev/null and b/Documents/19V_ACU_DCDC.pdf differ
diff --git a/Documents/8V4_DRS_DCDC.pdf b/Documents/8V4_DRS_DCDC.pdf
new file mode 100644
index 0000000..085403c
Binary files /dev/null and b/Documents/8V4_DRS_DCDC.pdf differ
diff --git a/Documents/ACU_DCDC.pdf b/Documents/ACU_DCDC.pdf
deleted file mode 100644
index 53bb210..0000000
Binary files a/Documents/ACU_DCDC.pdf and /dev/null differ
diff --git a/Documents/DRS_DCDC.pdf b/Documents/DRS_DCDC.pdf
deleted file mode 100644
index 6072f2a..0000000
Binary files a/Documents/DRS_DCDC.pdf and /dev/null differ
diff --git a/Documents/LM5148_calculation_table.xlsm b/Documents/LM5148_calculation_table.xlsm
new file mode 100644
index 0000000..b73411a
Binary files /dev/null and b/Documents/LM5148_calculation_table.xlsm differ
diff --git a/Documents/PDU_Code.drawio b/Documents/PDU_Code.drawio
deleted file mode 100644
index 59be7f7..0000000
--- a/Documents/PDU_Code.drawio
+++ /dev/null
@@ -1,145 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Documents/pump_DCDC.pdf b/Documents/pump_DCDC.pdf
deleted file mode 100644
index 8ac0979..0000000
Binary files a/Documents/pump_DCDC.pdf and /dev/null differ
diff --git a/Hardware/FT25_PDU.kicad_pcb b/Hardware/FT25_PDU.kicad_pcb
index 5305f6c..ba74c0a 100644
--- a/Hardware/FT25_PDU.kicad_pcb
+++ b/Hardware/FT25_PDU.kicad_pcb
@@ -7414,7 +7414,7 @@
)
(fp_arc
(start 0 2.2)
- (mid 0.05 2.25)
+ (mid 0.050001 2.250001)
(end 0 2.300001)
(stroke
(width 0.1)
@@ -82275,343 +82275,6 @@
)
)
)
- (footprint "brain:toasty"
- (layer "F.Cu")
- (uuid "9e661cac-bbf1-4e9c-960e-b242aa83d97e")
- (at 266.25 151.95)
- (property "Reference" "G***"
- (at 0 0 0)
- (layer "F.SilkS")
- (hide yes)
- (uuid "7e0bca53-630b-4887-b616-e4c2eb8beeea")
- (effects
- (font
- (size 1.5 1.5)
- (thickness 0.3)
- )
- )
- )
- (property "Value" "LOGO"
- (at 0.75 0 0)
- (layer "F.SilkS")
- (hide yes)
- (uuid "eb755ed6-df00-4757-8567-7b5d6a6e2185")
- (effects
- (font
- (size 1.5 1.5)
- (thickness 0.3)
- )
- )
- )
- (property "Footprint" "brain:toasty"
- (at 0 0 0)
- (layer "F.Fab")
- (hide yes)
- (uuid "10d06b02-cf3f-4c99-8e26-90feb7730081")
- (effects
- (font
- (size 1.27 1.27)
- (thickness 0.15)
- )
- )
- )
- (property "Datasheet" ""
- (at 0 0 0)
- (layer "F.Fab")
- (hide yes)
- (uuid "703e8053-df44-453a-9e11-8d8d469d0ba2")
- (effects
- (font
- (size 1.27 1.27)
- (thickness 0.15)
- )
- )
- )
- (property "Description" ""
- (at 0 0 0)
- (layer "F.Fab")
- (hide yes)
- (uuid "5b218782-95f3-4013-8a62-463f7a21c34b")
- (effects
- (font
- (size 1.27 1.27)
- (thickness 0.15)
- )
- )
- )
- (attr board_only exclude_from_pos_files exclude_from_bom)
- (fp_poly
- (pts
- (xy 0.531564 -1.226003) (xy 0.625716 -1.217934) (xy 0.734536 -1.204303) (xy 0.838914 -1.187893)
- (xy 0.920967 -1.171586) (xy 0.97572 -1.154922) (xy 1.009053 -1.135908) (xy 1.017495 -1.127455) (xy 1.044009 -1.073651)
- (xy 1.040853 -1.017975) (xy 1.008874 -0.969812) (xy 1.002795 -0.964712) (xy 0.96484 -0.941441) (xy 0.923201 -0.933412)
- (xy 0.867013 -0.939536) (xy 0.830608 -0.947437) (xy 0.78938 -0.955192) (xy 0.725299 -0.964973) (xy 0.648551 -0.97529)
- (xy 0.598038 -0.981424) (xy 0.499321 -0.994987) (xy 0.428925 -1.010369) (xy 0.381949 -1.029453)
- (xy 0.35349 -1.054128) (xy 0.340301 -1.080573) (xy 0.338725 -1.129613) (xy 0.357931 -1.178731) (xy 0.391364 -1.214679)
- (xy 0.410998 -1.223483) (xy 0.458013 -1.228018)
- )
- (stroke
- (width 0)
- (type solid)
- )
- (fill solid)
- (layer "F.SilkS")
- (uuid "e80a966c-20dc-4595-bd88-9a7b448ce97a")
- )
- (fp_poly
- (pts
- (xy 0.134169 0.277157) (xy 0.173265 0.304692) (xy 0.175183 0.30657) (xy 0.194755 0.326913) (xy 0.208907 0.346004)
- (xy 0.215974 0.366119) (xy 0.214295 0.389535) (xy 0.202206 0.418529) (xy 0.178044 0.455378) (xy 0.140146 0.502358)
- (xy 0.08685 0.561746) (xy 0.016493 0.635819) (xy -0.072588 0.726855) (xy -0.182057 0.837129) (xy -0.294928 0.950243)
- (xy -0.419642 1.074914) (xy -0.523279 1.177894) (xy -0.608043 1.26119) (xy -0.67614 1.326812) (xy -0.729777 1.376767)
- (xy -0.77116 1.413065) (xy -0.802494 1.437714) (xy -0.825985 1.452722) (xy -0.843839 1.460097) (xy -0.856846 1.46187)
- (xy -0.914368 1.446443) (xy -0.943998 1.423422) (xy -0.961014 1.404388) (xy -0.972909 1.386256)
- (xy -0.977981 1.366778) (xy -0.974526 1.343707) (xy -0.960845 1.314795) (xy -0.935235 1.277792)
- (xy -0.895994 1.230452) (xy -0.84142 1.170526) (xy -0.769811 1.095765) (xy -0.679466 1.003923) (xy -0.568682 0.89275)
- (xy -0.460378 0.784572) (xy -0.323148 0.648156) (xy -0.20762 0.534581) (xy -0.112538 0.442675) (xy -0.036641 0.371266)
- (xy 0.021328 0.319183) (xy 0.062629 0.285253) (xy 0.088521 0.268305) (xy 0.096885 0.265794)
- )
- (stroke
- (width 0)
- (type solid)
- )
- (fill solid)
- (layer "F.SilkS")
- (uuid "1585b0d2-4ffb-4f00-b352-59967b10326d")
- )
- (fp_poly
- (pts
- (xy 0.921913 1.054988) (xy 0.949482 1.078862) (xy 0.965131 1.09921) (xy 0.975835 1.118446) (xy 0.979862 1.138865)
- (xy 0.975481 1.162761) (xy 0.960961 1.192427) (xy 0.934571 1.230156) (xy 0.894579 1.278242) (xy 0.839254 1.338979)
- (xy 0.766866 1.41466) (xy 0.675683 1.507579) (xy 0.563974 1.62003) (xy 0.469652 1.714586) (xy 0.345483 1.838794)
- (xy 0.242385 1.941354) (xy 0.158121 2.024294) (xy 0.090454 2.089645) (xy 0.037149 2.139435) (xy -0.004031 2.175694)
- (xy -0.035323 2.200451) (xy -0.058962 2.215736) (xy -0.077185 2.223577) (xy -0.092229 2.226006)
- (xy -0.093956 2.22603) (xy -0.146978 2.213486) (xy -0.181528 2.182259) (xy -0.205721 2.141466) (xy -0.215956 2.104278)
- (xy -0.215958 2.103901) (xy -0.204261 2.082436) (xy -0.169076 2.039073) (xy -0.110269 1.973667)
- (xy -0.027702 1.886073) (xy 0.078761 1.776144) (xy 0.209256 1.643734) (xy 0.297413 1.555171) (xy 0.421808 1.430776)
- (xy 0.52512 1.328014) (xy 0.609587 1.244854) (xy 0.67745 1.179266) (xy 0.730949 1.129222) (xy 0.772323 1.092692)
- (xy 0.803812 1.067646) (xy 0.827656 1.052054) (xy 0.846096 1.043887) (xy 0.86137 1.041116) (xy 0.864816 1.041029)
- )
- (stroke
- (width 0)
- (type solid)
- )
- (fill solid)
- (layer "F.SilkS")
- (uuid "5d071925-a521-4eb0-8173-c04a4848b679")
- )
- (fp_poly
- (pts
- (xy 0.744053 0.479333) (xy 0.779092 0.51897) (xy 0.7944 0.57038) (xy 0.791143 0.60339) (xy 0.777982 0.621385)
- (xy 0.743294 0.660595) (xy 0.689164 0.718859) (xy 0.617677 0.794018) (xy 0.530916 0.88391) (xy 0.430966 0.986376)
- (xy 0.319912 1.099255) (xy 0.199837 1.220388) (xy 0.079018 1.341432) (xy -0.068553 1.488649) (xy -0.194584 1.613993)
- (xy -0.300929 1.719187) (xy -0.389441 1.805953) (xy -0.461972 1.876011) (xy -0.520375 1.931085)
- (xy -0.566502 1.972895) (xy -0.602206 2.003165) (xy -0.629341 2.023614) (xy -0.649758 2.035967)
- (xy -0.665311 2.041943) (xy -0.676195 2.043296) (xy -0.729131 2.030305) (xy -0.762954 1.999525)
- (xy -0.78715 1.958699) (xy -0.797382 1.921442) (xy -0.797384 1.921072) (xy -0.785944 1.903496) (xy -0.753276 1.865149)
- (xy -0.70186 1.808537) (xy -0.634176 1.736167) (xy -0.552705 1.650545) (xy -0.459926 1.554176) (xy -0.358319 1.449568)
- (xy -0.250365 1.339225) (xy -0.138542 1.225655) (xy -0.025332 1.111363) (xy 0.086786 0.998856) (xy 0.195332 0.890639)
- (xy 0.297826 0.789218) (xy 0.391789 0.697101) (xy 0.474739 0.616792) (xy 0.544197 0.550798) (xy 0.597683 0.501625)
- (xy 0.632717 0.471779) (xy 0.644655 0.463834) (xy 0.696751 0.458582)
- )
- (stroke
- (width 0)
- (type solid)
- )
- (fill solid)
- (layer "F.SilkS")
- (uuid "4f98e730-28a7-4678-b03d-dd19d50d3be6")
- )
- (fp_poly
- (pts
- (xy 0.486771 -3.93074) (xy 0.527893 -3.911223) (xy 0.549697 -3.890244) (xy 0.560901 -3.859854) (xy 0.564663 -3.809709)
- (xy 0.564813 -3.790316) (xy 0.560846 -3.728601) (xy 0.546613 -3.669363) (xy 0.518622 -3.599756)
- (xy 0.505207 -3.571147) (xy 0.465632 -3.477346) (xy 0.447577 -3.3987) (xy 0.451093 -3.325008) (xy 0.476233 -3.246069)
- (xy 0.50721 -3.181297) (xy 0.536817 -3.122468) (xy 0.554379 -3.077694) (xy 0.562552 -3.034473) (xy 0.563992 -2.980305)
- (xy 0.562161 -2.922678) (xy 0.557153 -2.844046) (xy 0.547412 -2.785322) (xy 0.529785 -2.733229)
- (xy 0.504936 -2.681734) (xy 0.475258 -2.616076) (xy 0.451718 -2.547934) (xy 0.44166 -2.50454) (xy 0.420317 -2.438843)
- (xy 0.382963 -2.394467) (xy 0.335899 -2.373917) (xy 0.285427 -2.379697) (xy 0.237848 -2.414313)
- (xy 0.232076 -2.421223) (xy 0.206221 -2.480643) (xy 0.206853 -2.559845) (xy 0.233945 -2.658594)
- (xy 0.273695 -2.749585) (xy 0.312613 -2.83901) (xy 0.3301 -2.913678) (xy 0.326049 -2.98431) (xy 0.300354 -3.061628)
- (xy 0.269947 -3.124482) (xy 0.238114 -3.188388) (xy 0.219549 -3.237852) (xy 0.210825 -3.287072)
- (xy 0.208515 -3.350245) (xy 0.20859 -3.37863) (xy 0.210687 -3.451702) (xy 0.218167 -3.506346) (xy 0.234635 -3.557311)
- (xy 0.263696 -3.619345) (xy 0.270886 -3.633497) (xy 0.300134 -3.696554) (xy 0.321808 -3.754418)
- (xy 0.331947 -3.796239) (xy 0.332243 -3.801531) (xy 0.345668 -3.86335) (xy 0.380921 -3.908307) (xy 0.430466 -3.932179)
- )
- (stroke
- (width 0)
- (type solid)
- )
- (fill solid)
- (layer "F.SilkS")
- (uuid "e7f4bbcf-3618-40d9-b334-658d13e603e5")
- )
- (fp_poly
- (pts
- (xy -0.285746 -3.933069) (xy -0.238125 -3.898622) (xy -0.232077 -3.8914) (xy -0.206221 -3.83198)
- (xy -0.206854 -3.752778) (xy -0.233945 -3.65403) (xy -0.273696 -3.563038) (xy -0.312614 -3.473611)
- (xy -0.330102 -3.398945) (xy -0.326051 -3.328321) (xy -0.300356 -3.251021) (xy -0.269948 -3.188187)
- (xy -0.23808 -3.124201) (xy -0.219485 -3.074581) (xy -0.210713 -3.0251) (xy -0.208315 -2.96153)
- (xy -0.20834 -2.934039) (xy -0.210198 -2.861659) (xy -0.217253 -2.808102) (xy -0.233052 -2.75901)
- (xy -0.26114 -2.700023) (xy -0.270636 -2.681785) (xy -0.30029 -2.618996) (xy -0.322127 -2.560757)
- (xy -0.332039 -2.518275) (xy -0.332244 -2.513751) (xy -0.345437 -2.450851) (xy -0.380182 -2.405043)
- (xy -0.429224 -2.380494) (xy -0.485308 -2.381369) (xy -0.527893 -2.4014) (xy -0.549697 -2.42238)
- (xy -0.560901 -2.45277) (xy -0.564664 -2.502914) (xy -0.564814 -2.522307) (xy -0.560846 -2.584022)
- (xy -0.546614 -2.64326) (xy -0.518623 -2.712868) (xy -0.505208 -2.741476) (xy -0.465634 -2.835255)
- (xy -0.44757 -2.913858) (xy -0.451074 -2.987477) (xy -0.476202 -3.066306) (xy -0.507393 -3.131393)
- (xy -0.53635 -3.188501) (xy -0.55387 -3.231914) (xy -0.562348 -3.273345) (xy -0.564181 -3.324507)
- (xy -0.561761 -3.39711) (xy -0.561756 -3.397242) (xy -0.556962 -3.475131) (xy -0.548656 -3.531518)
- (xy -0.534019 -3.578117) (xy -0.510238 -3.626644) (xy -0.50385 -3.638118) (xy -0.473376 -3.702127)
- (xy -0.449801 -3.769547) (xy -0.441164 -3.808083) (xy -0.420229 -3.873702) (xy -0.383128 -3.918087)
- (xy -0.33619 -3.938717)
- )
- (stroke
- (width 0)
- (type solid)
- )
- (fill solid)
- (layer "F.SilkS")
- (uuid "3b4f9182-d155-46f5-bae6-c67190cb17e5")
- )
- (fp_poly
- (pts
- (xy -1.065685 -3.931384) (xy -1.016251 -3.898609) (xy -1.014113 -3.896373) (xy -0.985764 -3.842311)
- (xy -0.981774 -3.767888) (xy -1.001921 -3.675103) (xy -1.045985 -3.565951) (xy -1.051815 -3.553978)
- (xy -1.080695 -3.489554) (xy -1.102233 -3.430127) (xy -1.112609 -3.386557) (xy -1.113015 -3.37996)
- (xy -1.105695 -3.341592) (xy -1.086286 -3.284879) (xy -1.058616 -3.220641) (xy -1.051356 -3.205679)
- (xy -1.021179 -3.142231) (xy -1.002797 -3.092454) (xy -0.993265 -3.043413) (xy -0.98964 -2.982173)
- (xy -0.989065 -2.932047) (xy -0.989644 -2.858273) (xy -0.993998 -2.805695) (xy -1.004931 -2.762298)
- (xy -1.025249 -2.716068) (xy -1.050724 -2.667902) (xy -1.081738 -2.604004) (xy -1.10388 -2.545147)
- (xy -1.112975 -2.502547) (xy -1.113015 -2.500523) (xy -1.127251 -2.445459) (xy -1.163872 -2.40118)
- (xy -1.21375 -2.377303) (xy -1.231628 -2.37554) (xy -1.271999 -2.387333) (xy -1.311115 -2.415747)
- (xy -1.311591 -2.41625) (xy -1.339939 -2.470313) (xy -1.34393 -2.544735) (xy -1.323783 -2.63752)
- (xy -1.279718 -2.746672) (xy -1.273889 -2.758645) (xy -1.245009 -2.823069) (xy -1.223471 -2.882496)
- (xy -1.213094 -2.926066) (xy -1.212688 -2.932663) (xy -1.220009 -2.971032) (xy -1.239418 -3.027744)
- (xy -1.267088 -3.091982) (xy -1.274348 -3.106944) (xy -1.304525 -3.170394) (xy -1.322908 -3.220174)
- (xy -1.33244 -3.269219) (xy -1.336067 -3.330466) (xy -1.336643 -3.380576) (xy -1.335994 -3.454892)
- (xy -1.331663 -3.507241) (xy -1.321211 -3.548856) (xy -1.302198 -3.590969) (xy -1.28362 -3.624769)
- (xy -1.252856 -3.687442) (xy -1.2289 -3.751406) (xy -1.219165 -3.79089) (xy -1.197845 -3.861397)
- (xy -1.161688 -3.9101) (xy -1.115899 -3.934322)
- )
- (stroke
- (width 0)
- (type solid)
- )
- (fill solid)
- (layer "F.SilkS")
- (uuid "5b394159-9d6b-4e54-a485-0f9496d85ee2")
- )
- (fp_poly
- (pts
- (xy 1.260018 -3.931384) (xy 1.309452 -3.898609) (xy 1.31159 -3.896373) (xy 1.339939 -3.842311) (xy 1.343929 -3.767888)
- (xy 1.323783 -3.675103) (xy 1.279718 -3.565951) (xy 1.273888 -3.553978) (xy 1.245008 -3.489554)
- (xy 1.22347 -3.430127) (xy 1.213094 -3.386557) (xy 1.212688 -3.37996) (xy 1.220008 -3.341592) (xy 1.239417 -3.284879)
- (xy 1.267088 -3.220641) (xy 1.274347 -3.205679) (xy 1.304524 -3.142231) (xy 1.322906 -3.092454)
- (xy 1.332438 -3.043413) (xy 1.336063 -2.982173) (xy 1.336638 -2.932047) (xy 1.336059 -2.858273)
- (xy 1.331705 -2.805695) (xy 1.320772 -2.762298) (xy 1.300454 -2.716068) (xy 1.274979 -2.667902)
- (xy 1.243965 -2.604004) (xy 1.221823 -2.545147) (xy 1.212728 -2.502547) (xy 1.212688 -2.500523)
- (xy 1.198452 -2.445459) (xy 1.161831 -2.40118) (xy 1.111953 -2.377303) (xy 1.094075 -2.37554) (xy 1.053704 -2.387333)
- (xy 1.014589 -2.415747) (xy 1.014112 -2.41625) (xy 0.985764 -2.470313) (xy 0.981773 -2.544735) (xy 1.00192 -2.63752)
- (xy 1.045985 -2.746672) (xy 1.051814 -2.758645) (xy 1.080695 -2.823069) (xy 1.102232 -2.882496)
- (xy 1.112609 -2.926066) (xy 1.113015 -2.932663) (xy 1.105694 -2.971032) (xy 1.086285 -3.027744)
- (xy 1.058615 -3.091982) (xy 1.051355 -3.106944) (xy 1.021178 -3.170394) (xy 1.002795 -3.220174)
- (xy 0.993263 -3.269219) (xy 0.989636 -3.330466) (xy 0.98906 -3.380576) (xy 0.989709 -3.454892) (xy 0.99404 -3.507241)
- (xy 1.004492 -3.548856) (xy 1.023505 -3.590969) (xy 1.042083 -3.624769) (xy 1.072847 -3.687442)
- (xy 1.096803 -3.751406) (xy 1.106538 -3.79089) (xy 1.127858 -3.861397) (xy 1.164016 -3.9101) (xy 1.209804 -3.934322)
- )
- (stroke
- (width 0)
- (type solid)
- )
- (fill solid)
- (layer "F.SilkS")
- (uuid "3c371b7d-331f-487a-8166-4950056e7a1b")
- )
- (fp_poly
- (pts
- (xy 0.122847 -2.04702) (xy 0.248034 -2.044361) (xy 0.36707 -2.040298) (xy 0.471467 -2.03513) (xy 0.552738 -2.02916)
- (xy 0.564813 -2.027964) (xy 0.91212 -1.98183) (xy 1.232503 -1.919063) (xy 1.5256 -1.839801) (xy 1.791047 -1.744183)
- (xy 2.028482 -1.632349) (xy 2.237541 -1.504437) (xy 2.417861 -1.360585) (xy 2.486698 -1.293629)
- (xy 2.600508 -1.154546) (xy 2.684165 -1.005317) (xy 2.737062 -0.848463) (xy 2.75859 -0.686505) (xy 2.748142 -0.521966)
- (xy 2.709422 -0.369483) (xy 2.647875 -0.224984) (xy 2.565218 -0.088312) (xy 2.457227 0.046919) (xy 2.379692 0.128841)
- (xy 2.242642 0.266269) (xy 2.242642 2.065556) (xy 2.242642 3.864843) (xy 2.204194 3.900963) (xy 2.165746 3.937083)
- (xy -0.002328 3.937083) (xy -2.170402 3.937083) (xy -2.206522 3.898635) (xy -2.242643 3.860187)
- (xy -2.242643 2.062222) (xy -2.242643 0.264257) (xy -2.373549 0.136282) (xy -2.513549 -0.018327)
- (xy -2.622363 -0.177298) (xy -2.699706 -0.339402) (xy -2.745295 -0.503407) (xy -2.757503 -0.651759)
- (xy -2.524697 -0.651759) (xy -2.508898 -0.516082) (xy -2.461125 -0.378973) (xy -2.381144 -0.239797)
- (xy -2.268716 -0.097917) (xy -2.123606 0.047301) (xy -2.08898 0.078262) (xy -2.010072 0.147568)
- (xy -2.010072 1.92604) (xy -2.010072 3.704512) (xy 0 3.704512) (xy 2.010072 3.704512) (xy 2.010072 1.924745)
- (xy 2.010072 0.144977) (xy 2.088979 0.076741) (xy 2.229085 -0.054234) (xy 2.33944 -0.17988) (xy 2.422407 -0.303385)
- (xy 2.48035 -0.427935) (xy 2.494513 -0.47024) (xy 2.520879 -0.609973) (xy 2.515132 -0.74685) (xy 2.478331 -0.879877)
- (xy 2.411537 -1.008056) (xy 2.315809 -1.130391) (xy 2.192207 -1.245887) (xy 2.041789 -1.353546)
- (xy 1.865616 -1.452373) (xy 1.664747 -1.541372) (xy 1.440242 -1.619546) (xy 1.204382 -1.683268)
- (xy 1.063124 -1.715253) (xy 0.934055 -1.741094) (xy 0.81099 -1.761393) (xy 0.687746 -1.776757) (xy 0.558139 -1.787789)
- (xy 0.415987 -1.795096) (xy 0.255104 -1.79928) (xy 0.069309 -1.800947) (xy 0 -1.801048) (xy -0.155616 -1.800819)
- (xy -0.283242 -1.799968) (xy -0.388115 -1.798243) (xy -0.475468 -1.795394) (xy -0.550534 -1.791171)
- (xy -0.618548 -1.785324) (xy -0.684744 -1.777603) (xy -0.754356 -1.767757) (xy -0.780772 -1.763719)
- (xy -1.099692 -1.705161) (xy -1.388553 -1.632955) (xy -1.647628 -1.547008) (xy -1.877192 -1.447228)
- (xy -2.07752 -1.333521) (xy -2.109745 -1.312079) (xy -2.209212 -1.234167) (xy -2.304131 -1.141371)
- (xy -2.386645 -1.042423) (xy -2.448895 -0.946057) (xy -2.461326 -0.921362) (xy -2.508761 -0.786641)
- (xy -2.524697 -0.651759) (xy -2.757503 -0.651759) (xy -2.758846 -0.668082) (xy -2.740073 -0.832197)
- (xy -2.688694 -0.994521) (xy -2.652343 -1.071485) (xy -2.605402 -1.144462) (xy -2.53732 -1.228681)
- (xy -2.454825 -1.317296) (xy -2.364645 -1.403462) (xy -2.273509 -1.480335) (xy -2.195127 -1.536629)
- (xy -1.974687 -1.661297) (xy -1.725922 -1.769851) (xy -1.449707 -1.862027) (xy -1.146914 -1.937561)
- (xy -0.81842 -1.996191) (xy -0.564814 -2.027964) (xy -0.488873 -2.034053) (xy -0.388199 -2.039396)
- (xy -0.271281 -2.043691) (xy -0.146607 -2.046638) (xy -0.022666 -2.047937) (xy 0 -2.047973)
- )
- (stroke
- (width 0)
- (type solid)
- )
- (fill solid)
- (layer "F.SilkS")
- (uuid "397348ab-5c52-413c-8813-ef3d186d043e")
- )
- (fp_poly
- (pts
- (xy 0.080758 -1.649632) (xy 0.307529 -1.640957) (xy 0.53075 -1.625074) (xy 0.741495 -1.60227) (xy 0.863832 -1.584482)
- (xy 1.088874 -1.540985) (xy 1.305381 -1.485705) (xy 1.509836 -1.42017) (xy 1.698725 -1.345909) (xy 1.868531 -1.264451)
- (xy 2.015739 -1.177324) (xy 2.136832 -1.086059) (xy 2.228295 -0.992183) (xy 2.229618 -0.990518)
- (xy 2.288833 -0.907563) (xy 2.32576 -0.83202) (xy 2.344768 -0.751476) (xy 2.350228 -0.653513) (xy 2.350223 -0.647875)
- (xy 2.348386 -0.571565) (xy 2.341773 -0.516249) (xy 2.32796 -0.469779) (xy 2.304942 -0.420803) (xy 2.233217 -0.30759)
- (xy 2.137505 -0.192589) (xy 2.025376 -0.084414) (xy 1.968332 -0.037742) (xy 1.844136 0.058142) (xy 1.844043 1.762146)
- (xy 1.84395 3.466151) (xy 1.805502 3.502271) (xy 1.767054 3.538391) (xy -0.002328 3.538391) (xy -1.77171 3.538391)
- (xy -1.807831 3.499943) (xy -1.843951 3.461495) (xy -1.844044 1.759818) (xy -1.844137 0.058142)
- (xy -1.968332 -0.037742) (xy -2.08353 -0.137567) (xy -2.185949 -0.247521) (xy -2.26837 -0.359359)
- (xy -2.303644 -0.420803) (xy -2.340313 -0.5218) (xy -2.356728 -0.633245) (xy -2.353996 -0.693492)
- (xy -2.120606 -0.693492) (xy -2.117673 -0.611573) (xy -2.085042 -0.521437) (xy -2.024418 -0.425713)
- (xy -1.937507 -0.327029) (xy -1.826016 -0.228014) (xy -1.810711 -0.215958) (xy -1.749703 -0.167997)
- (xy -1.695943 -0.124799) (xy -1.656557 -0.092142) (xy -1.641626 -0.078908) (xy -1.636699 -0.073017)
- (xy -1.632337 -0.06409) (xy -1.628506 -0.05019) (xy -1.625172 -0.029379) (xy -1.622299 0.00028)
- (xy -1.619854 0.040724) (xy -1.617803 0.09389) (xy -1.616111 0.161714) (xy -1.614744 0.246136) (xy -1.613668 0.34909)
- (xy -1.612847 0.472515) (xy -1.612249 0.618348) (xy -1.611838 0.788526) (xy -1.61158 0.984985) (xy -1.611441 1.209664)
- (xy -1.611387 1.464499) (xy -1.61138 1.627992) (xy -1.61138 3.30582) (xy 0 3.30582) (xy 1.61138 3.30582)
- (xy 1.61138 1.627992) (xy 1.611401 1.354655) (xy 1.611486 1.112606) (xy 1.61167 0.899907) (xy 1.611987 0.71462)
- (xy 1.612472 0.55481) (xy 1.613159 0.418538) (xy 1.614082 0.303867) (xy 1.615275 0.208861) (xy 1.616773 0.131582)
- (xy 1.618611 0.070094) (xy 1.620821 0.022458) (xy 1.62344 -0.013262) (xy 1.626501 -0.039004) (xy 1.630038 -0.056703)
- (xy 1.634085 -0.068299) (xy 1.638678 -0.075727) (xy 1.641626 -0.078908) (xy 1.667173 -0.101103)
- (xy 1.711938 -0.137765) (xy 1.768795 -0.183117) (xy 1.81071 -0.215958) (xy 1.925103 -0.314832) (xy 2.015124 -0.413698)
- (xy 2.079068 -0.509928) (xy 2.11523 -0.600892) (xy 2.121903 -0.683962) (xy 2.120605 -0.693492) (xy 2.091129 -0.775931)
- (xy 2.030913 -0.858552) (xy 1.942404 -0.939995) (xy 1.82805 -1.018901) (xy 1.690299 -1.093911) (xy 1.531599 -1.163665)
- (xy 1.354399 -1.226803) (xy 1.161145 -1.281965) (xy 0.991746 -1.32043) (xy 0.674569 -1.371829) (xy 0.340058 -1.402595)
- (xy -0.003081 -1.412728) (xy -0.346142 -1.402226) (xy -0.680419 -1.371091) (xy -0.991746 -1.32043)
- (xy -1.195564 -1.273022) (xy -1.385605 -1.216486) (xy -1.559397 -1.152196) (xy -1.714463 -1.081526)
- (xy -1.848328 -1.00585) (xy -1.958518 -0.926545) (xy -2.042558 -0.844983) (xy -2.097972 -0.76254)
- (xy -2.120606 -0.693492) (xy -2.353996 -0.693492) (xy -2.351786 -0.742226) (xy -2.336505 -0.805909)
- (xy -2.280302 -0.920976) (xy -2.192867 -1.030719) (xy -2.075878 -1.13437) (xy -1.931012 -1.231166)
- (xy -1.759948 -1.32034) (xy -1.564363 -1.401127) (xy -1.345935 -1.47276) (xy -1.106342 -1.534475)
- (xy -0.847262 -1.585506) (xy -0.570373 -1.625087) (xy -0.53159 -1.629526) (xy -0.347727 -1.644205)
- (xy -0.140636 -1.650811)
- )
- (stroke
- (width 0)
- (type solid)
- )
- (fill solid)
- (layer "F.SilkS")
- (uuid "90cc2537-0acd-482e-a478-174d613215f0")
- )
- )
(footprint "824501241:DIOM5127X250N"
(layer "F.Cu")
(uuid "9eab8db0-4919-4e0c-b7ba-c34c2e8c2084")
@@ -146921,19 +146584,6 @@
(justify left bottom)
)
)
- (gr_text "might get toasty"
- (at 256.06 158.74 0)
- (layer "F.SilkS" knockout)
- (uuid "b5d190fe-882b-4a4c-bec8-951082c287ec")
- (effects
- (font
- (size 1.5 1.5)
- (thickness 0.3)
- (bold yes)
- )
- (justify left bottom)
- )
- )
(gr_text "8"
(at 260.6 135 0)
(layer "F.SilkS")
diff --git a/Software/Code/Core/Inc/can_communication.h b/Software/Code/Core/Inc/can_communication.h
index 6703acc..d35635d 100644
--- a/Software/Code/Core/Inc/can_communication.h
+++ b/Software/Code/Core/Inc/can_communication.h
@@ -29,5 +29,6 @@ typedef struct {
void can_init(CAN_HandleTypeDef* hcan);
void can_rxupdateFrame();
void can_sendloop();
+void can_error_report();
#endif /* INC_CAN_COMMUNICATION_H_ */
diff --git a/Software/Code/Core/Inc/current_monitoring.h b/Software/Code/Core/Inc/current_monitoring.h
index f041c36..f2fa187 100644
--- a/Software/Code/Core/Inc/current_monitoring.h
+++ b/Software/Code/Core/Inc/current_monitoring.h
@@ -11,7 +11,7 @@
#include "stm32f3xx_hal.h"
// convert ADC quants to V
-#define ADC_V_FACTOR (3.3f / 4095) // 3.3V / 12bit
+#define ADC_V_FACTOR ((3.3f / 4095) * (3.3f / 3.14f)) // 3.3V / 12bit
// scale to LV by divider to mV
#define LV_SENSE_FACTOR (1e3 * (ADC_V_FACTOR * ((12.f + 1.8f) / 1.8f))) // scaled with voltage divider
diff --git a/Software/Code/Core/Inc/plausibility_check.h b/Software/Code/Core/Inc/plausibility_check.h
index b124b37..ccbf33b 100644
--- a/Software/Code/Core/Inc/plausibility_check.h
+++ b/Software/Code/Core/Inc/plausibility_check.h
@@ -12,6 +12,42 @@
#include "channel_control.h"
#include "can_communication.h"
+typedef union {
+ struct {
+ uint8_t sdc_open : 1;
+ uint8_t noload_acc_cooling : 1;
+ uint8_t noload_ts_cooling : 1;
+ uint8_t noload_drs : 1;
+ uint8_t noload_acu : 1;
+ uint8_t noload_epsc : 1;
+ uint8_t noload_inverter : 1;
+ uint8_t noload_lidar : 1;
+ };
+ uint8_t group1;
+} err_group1;
+
+typedef union {
+ struct {
+ uint8_t noload_misc : 1;
+ uint8_t noload_alwayson : 1;
+ uint8_t noload_sdc : 1;
+ uint8_t noload_ebs1 : 1;
+ uint8_t noload_ebs2 : 1;
+ uint8_t noload_ebs3 : 1;
+ uint8_t power_critcal : 1;
+ uint8_t power_limit : 1;
+ };
+ uint8_t group2;
+} err_group2;
+
+typedef union {
+ struct {
+ err_group1 group1;
+ err_group2 group2;
+ };
+ uint16_t err_bitmask;
+} err_states;
+
void check_plausibility();
#endif /* INC_PLAUSIBILITY_CHECK_H_ */
diff --git a/Software/Code/Core/Src/can_communication.c b/Software/Code/Core/Src/can_communication.c
index 5a46454..982f8ea 100644
--- a/Software/Code/Core/Src/can_communication.c
+++ b/Software/Code/Core/Src/can_communication.c
@@ -14,7 +14,7 @@ rx_status_frame rxstate = {};
volatile uint8_t canmsg_received = 0;
extern enable_gpios update_ports;
extern current_measurements current_measurements_adc_val;
-extern uint8_t error_data[16];
+extern err_states error;
extern uint32_t lastheartbeat;
@@ -93,39 +93,10 @@ void can_sendloop(){
}
void can_error_report(){
-
- static int error_loop = 0;
- uint8_t data[8];
-
- switch (error_loop){
- case 0: // 1 = error 0 = no error
- data[0] = error_data[0]; // SDC-Status
- data[1] = error_data[1]; // power draw critical (550W)
- data[2] = error_data[2]; // power limit (> 600W)
- data[3] = error_data[3]; // acc-cooling false OFF
- data[4] = error_data[4]; // ts-cooling false OFF
- data[5] = error_data[5]; // drs false OFF
- data[6] = error_data[6]; // acu false OFF
- data[7] = error_data[7]; // epsc false OFF
- ftcan_transmit(ERROR_ID, data, 8);
- break;
-
- case 1: // 3 = error 2 = no error
- data[8] = error_data[8]; // inverter false OFF
- data[9] = error_data[9]; // lidar false OFF
- data[10] = error_data[10]; // misc false OFF
- data[11] = error_data[11]; // always on false OFF
- data[12] = error_data[12]; // sdc false OFF
- data[13] = error_data[13]; // ebs1 false OFF
- data[14] = error_data[14]; // ebs2 false OFF
- data[15] = error_data[15]; // ebs3 false OFF
- ftcan_transmit(ERROR_ID, data, 8);
- break;
-
- default:
- break;
- }
- error_loop = (error_loop + 1) % 2;
+ uint8_t error_data[2];
+ error_data[0] = error.group1.group1;
+ error_data[1] = error.group2.group2;
+ ftcan_transmit(ERROR_ID, error_data, 2);
}
void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t* data){
diff --git a/Software/Code/Core/Src/channel_control.c b/Software/Code/Core/Src/channel_control.c
index a869a9d..329c63b 100644
--- a/Software/Code/Core/Src/channel_control.c
+++ b/Software/Code/Core/Src/channel_control.c
@@ -25,7 +25,7 @@ void ChannelControl_init(){
void ChannelControl_UpdateGPIOs(enable_gpios UpdatePorts){
- UpdatePorts.portb.alwayson = 1;
+ UpdatePorts.portb.alwayson = 1; // ensure always on stays always on
if (inhibit_SDC == 1){
UpdatePorts.portb.sdc = 0;
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, 1);
@@ -37,11 +37,9 @@ void ChannelControl_UpdateGPIOs(enable_gpios UpdatePorts){
if (prev_epsc_state == 0 && UpdatePorts.porta.epsc == 1){
HAL_GPIO_WritePin(PC_EN_GPIO_Port, PC_EN_Pin, 1); // enable precharge
- HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, 1);
- if (current_measurements_adc_val.epsc_precharge >= (0.95f * current_measurements_adc_val.asms_v)) { // precharge complete
- HAL_GPIO_WritePin(IN5_GPIO_Port, IN5_Pin, (GPIO_PinState)UpdatePorts.porta.epsc); // switch PROFET
+ if (current_measurements_adc_val.epsc_precharge >= (0.95f * current_measurements_adc_val.asms_v)) { // check if precharge is complete (no while loop needed, this function is called by the main while-loop)
+ HAL_GPIO_WritePin(IN5_GPIO_Port, IN5_Pin, (GPIO_PinState)UpdatePorts.porta.epsc); // switch on PROFET
HAL_GPIO_WritePin(PC_EN_GPIO_Port, PC_EN_Pin, 0); // disengage precharge
- HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, 0);
prev_epsc_state = UpdatePorts.porta.epsc;
}
}
@@ -54,8 +52,8 @@ void ChannelControl_UpdateGPIOs(enable_gpios UpdatePorts){
HAL_GPIO_WritePin(IN6_GPIO_Port, IN6_Pin, (GPIO_PinState)UpdatePorts.porta.inverter); // inverter
HAL_GPIO_WritePin(IN7_GPIO_Port, IN7_Pin, (GPIO_PinState)UpdatePorts.porta.lidar); // lidar
HAL_GPIO_WritePin(IN8_GPIO_Port, IN8_Pin, (GPIO_PinState)UpdatePorts.porta.misc); // MISC
- HAL_GPIO_WritePin(IN9_GPIO_Port, IN9_Pin, (GPIO_PinState)UpdatePorts.portb.alwayson); // always on -> standardmäßig auf HIGH forcen
- HAL_GPIO_WritePin(IN10_GPIO_Port, IN10_Pin, (GPIO_PinState)UpdatePorts.portb.sdc); // SDC -> muss anders controlled werden
+ HAL_GPIO_WritePin(IN9_GPIO_Port, IN9_Pin, (GPIO_PinState)UpdatePorts.portb.alwayson); // always on
+ HAL_GPIO_WritePin(IN10_GPIO_Port, IN10_Pin, (GPIO_PinState)UpdatePorts.portb.sdc); // SDC
HAL_GPIO_WritePin(IN11_GPIO_Port, IN11_Pin, (GPIO_PinState)UpdatePorts.portb.ebs1); // EBS 1
HAL_GPIO_WritePin(IN12_GPIO_Port, IN12_Pin, (GPIO_PinState)UpdatePorts.portb.ebs2); // EBS 2
HAL_GPIO_WritePin(IN13_GPIO_Port, IN13_Pin, (GPIO_PinState)UpdatePorts.portb.ebs3); // EBS 3
diff --git a/Software/Code/Core/Src/main.c b/Software/Code/Core/Src/main.c
index 610636b..451c0b8 100644
--- a/Software/Code/Core/Src/main.c
+++ b/Software/Code/Core/Src/main.c
@@ -23,7 +23,7 @@
/* USER CODE BEGIN Includes */
#include "can_communication.h"
#include "channel_control.h"
-//#include "plausibility_check.h"
+#include "plausibility_check.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@@ -119,6 +119,7 @@ int main(void)
MX_UART4_Init();
MX_TIM6_Init();
/* USER CODE BEGIN 2 */
+
// begin start-up animation
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);
HAL_Delay(100);
@@ -142,6 +143,7 @@ int main(void)
HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_RESET);
// end start-up animation
+
HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_SET); // indicates running STM
ChannelControl_init();
@@ -167,8 +169,9 @@ int main(void)
}
if ((HAL_GetTick() - lasttick) > 100u){
lasttick = HAL_GetTick();
+ check_plausibility();
can_sendloop();
- //can_error_report();
+ can_error_report();
}
if (((HAL_GetTick() - lastheartbeat) > 200U) && (HAL_GetTick() > 1000U)) {
inhibit_SDC = 1;
@@ -176,12 +179,10 @@ int main(void)
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, (GPIO_PinState)!update_ports.portb.sdc); // indicates open SDC
HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, (GPIO_PinState)inhibit_SDC); // indicates watchdog-status
- // overcurrent check (wenn funktioniert, LED schalten)
+
ChannelControl_UpdateGPIOs(update_ports);
current_monitor_checklimits(); // currently not implemented
-
- //check_plausibility();
}
/* USER CODE END 3 */
}
diff --git a/Software/Code/Core/Src/plausibility_check.c b/Software/Code/Core/Src/plausibility_check.c
index 6d9c0d7..cb64357 100644
--- a/Software/Code/Core/Src/plausibility_check.c
+++ b/Software/Code/Core/Src/plausibility_check.c
@@ -8,102 +8,103 @@
extern enable_gpios update_ports;
extern current_measurements current_measurements_adc_val;
-volatile uint8_t error_data[16];
+volatile err_states error;
+extern int inhibit_SDC;
void check_plausibility() {
- if (!update_ports.portb.sdc) {error_data[0] = 1;}
- else {error_data[0] = 0;}
+ if (!update_ports.portb.sdc || inhibit_SDC == 1) {error.group1.sdc_open = 1;}
+ else {error.group1.sdc_open = 0;}
if (update_ports.porta.acc_cooling == 1 && current_measurements_adc_val.acc_cooling == 0) {
- error_data[3] = 1;
+ error.group1.noload_acc_cooling = 1;
}
else {
- error_data[3] = 0;
+ error.group1.noload_acc_cooling = 0;
}
if (update_ports.porta.ts_cooling == 1 && current_measurements_adc_val.ts_cooling == 0) {
- error_data[4] = 1;
- }
- else {
- error_data[4] = 0;
- }
+ error.group1.noload_ts_cooling = 1;
+ }
+ else {
+ error.group1.noload_ts_cooling = 0;
+ }
if (update_ports.porta.drs == 1 && current_measurements_adc_val.drs == 0) {
- error_data[5] = 1;
- }
- else {
- error_data[5] = 0;
- }
+ error.group1.noload_drs = 1;
+ }
+ else {
+ error.group1.noload_drs = 0;
+ }
if (update_ports.porta.acu == 1 && current_measurements_adc_val.acu == 0) {
- error_data[6] = 1;
- }
- else {
- error_data[6] = 0;
- }
+ error.group1.noload_acu = 1;
+ }
+ else {
+ error.group1.noload_acu = 0;
+ }
if (update_ports.porta.epsc == 1 && current_measurements_adc_val.epsc == 0) {
- error_data[7] = 1;
- }
- else {
- error_data[7] = 0;
- }
+ error.group1.noload_epsc = 1;
+ }
+ else {
+ error.group1.noload_epsc = 0;
+ }
if (update_ports.porta.inverter == 1 && current_measurements_adc_val.inverter == 0) {
- error_data[8] = 3;
- }
- else {
- error_data[8] = 2;
- }
+ error.group1.noload_inverter = 1;
+ }
+ else {
+ error.group1.noload_inverter = 0;
+ }
if (update_ports.porta.lidar == 1 && current_measurements_adc_val.lidar == 0) {
- error_data[9] = 3;
- }
- else {
- error_data[9] = 2;
- }
+ error.group1.noload_lidar = 1;
+ }
+ else {
+ error.group1.noload_lidar = 0;
+ }
if (update_ports.porta.misc == 1 && current_measurements_adc_val.misc == 0) {
- error_data[10] = 3;
- }
- else {
- error_data[10] = 2;
- }
+ error.group2.noload_misc = 1;
+ }
+ else {
+ error.group2.noload_misc = 0;
+ }
if (update_ports.portb.alwayson == 1 && current_measurements_adc_val.alwayson == 0) {
- error_data[11] = 3;
- }
- else {
- error_data[11] = 2;
- }
+ error.group2.noload_alwayson = 1;
+ }
+ else {
+ error.group2.noload_alwayson = 0;
+ }
if (update_ports.portb.sdc == 1 && current_measurements_adc_val.sdc == 0) {
- error_data[12] = 3;
- }
- else {
- error_data[12] = 2;
- }
+ error.group2.noload_sdc = 1;
+ }
+ else {
+ error.group2.noload_sdc = 0;
+ }
if (update_ports.portb.ebs1 == 1 && current_measurements_adc_val.ebs1 == 0) {
- error_data[13] = 3;
- }
- else {
- error_data[13] = 2;
- }
+ error.group2.noload_ebs1 = 1;
+ }
+ else {
+ error.group2.noload_ebs1 = 0;
+ }
if (update_ports.portb.ebs2 == 1 && current_measurements_adc_val.ebs2 == 0) {
- error_data[14] = 3;
- }
- else {
- error_data[14] = 2;
- }
+ error.group2.noload_ebs2 = 1;
+ }
+ else {
+ error.group2.noload_ebs2 = 0;
+ }
if (update_ports.portb.ebs3 == 1 && current_measurements_adc_val.ebs3 == 0) {
- error_data[15] = 3;
- }
- else {
- error_data[15] = 2;
- }
+ error.group2.noload_ebs3 = 1;
+ }
+ else {
+ error.group2.noload_ebs3 = 0;
+ }
}
diff --git a/Software/Code/Debug/Core/Src/can_communication.cyclo b/Software/Code/Debug/Core/Src/can_communication.cyclo
index 867b266..677efe4 100644
--- a/Software/Code/Debug/Core/Src/can_communication.cyclo
+++ b/Software/Code/Debug/Core/Src/can_communication.cyclo
@@ -1,4 +1,4 @@
../Core/Src/can_communication.c:23:6:can_init 1
../Core/Src/can_communication.c:28:6:can_sendloop 5
-../Core/Src/can_communication.c:95:6:can_error_report 3
-../Core/Src/can_communication.c:131:6:ftcan_msg_received_cb 4
+../Core/Src/can_communication.c:95:6:can_error_report 1
+../Core/Src/can_communication.c:102:6:ftcan_msg_received_cb 4
diff --git a/Software/Code/Debug/Core/Src/can_communication.o b/Software/Code/Debug/Core/Src/can_communication.o
index dd4b9c8..f1e880d 100644
Binary files a/Software/Code/Debug/Core/Src/can_communication.o and b/Software/Code/Debug/Core/Src/can_communication.o differ
diff --git a/Software/Code/Debug/Core/Src/can_communication.su b/Software/Code/Debug/Core/Src/can_communication.su
index b10d7e8..8ce1dd1 100644
--- a/Software/Code/Debug/Core/Src/can_communication.su
+++ b/Software/Code/Debug/Core/Src/can_communication.su
@@ -1,4 +1,4 @@
../Core/Src/can_communication.c:23:6:can_init 16 static
../Core/Src/can_communication.c:28:6:can_sendloop 24 static
../Core/Src/can_communication.c:95:6:can_error_report 16 static
-../Core/Src/can_communication.c:131:6:ftcan_msg_received_cb 24 static
+../Core/Src/can_communication.c:102:6:ftcan_msg_received_cb 24 static
diff --git a/Software/Code/Debug/Core/Src/channel_control.o b/Software/Code/Debug/Core/Src/channel_control.o
index 1a6563c..a21307e 100644
Binary files a/Software/Code/Debug/Core/Src/channel_control.o and b/Software/Code/Debug/Core/Src/channel_control.o differ
diff --git a/Software/Code/Debug/Core/Src/current_monitoring.o b/Software/Code/Debug/Core/Src/current_monitoring.o
index 3b0a27e..8df7e93 100644
Binary files a/Software/Code/Debug/Core/Src/current_monitoring.o and b/Software/Code/Debug/Core/Src/current_monitoring.o differ
diff --git a/Software/Code/Debug/Core/Src/main.cyclo b/Software/Code/Debug/Core/Src/main.cyclo
index 4ca8531..45c21af 100644
--- a/Software/Code/Debug/Core/Src/main.cyclo
+++ b/Software/Code/Debug/Core/Src/main.cyclo
@@ -1,10 +1,10 @@
../Core/Src/main.c:90:5:main 5
-../Core/Src/main.c:193:6:SystemClock_Config 4
-../Core/Src/main.c:241:13:MX_ADC1_Init 11
-../Core/Src/main.c:370:13:MX_ADC2_Init 8
-../Core/Src/main.c:472:13:MX_CAN_Init 2
-../Core/Src/main.c:509:13:MX_TIM6_Init 3
-../Core/Src/main.c:547:13:MX_UART4_Init 2
-../Core/Src/main.c:580:13:MX_DMA_Init 1
-../Core/Src/main.c:602:13:MX_GPIO_Init 1
-../Core/Src/main.c:665:6:Error_Handler 1
+../Core/Src/main.c:194:6:SystemClock_Config 4
+../Core/Src/main.c:242:13:MX_ADC1_Init 11
+../Core/Src/main.c:371:13:MX_ADC2_Init 8
+../Core/Src/main.c:473:13:MX_CAN_Init 2
+../Core/Src/main.c:510:13:MX_TIM6_Init 3
+../Core/Src/main.c:548:13:MX_UART4_Init 2
+../Core/Src/main.c:581:13:MX_DMA_Init 1
+../Core/Src/main.c:603:13:MX_GPIO_Init 1
+../Core/Src/main.c:666:6:Error_Handler 1
diff --git a/Software/Code/Debug/Core/Src/main.d b/Software/Code/Debug/Core/Src/main.d
index 42c0e9c..64691b8 100644
--- a/Software/Code/Debug/Core/Src/main.d
+++ b/Software/Code/Debug/Core/Src/main.d
@@ -34,7 +34,8 @@ Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \
../Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_uart_ex.h \
../Core/Inc/can_communication.h ../Core/Inc/channel_control.h \
../Core/Inc/can_halal.h ../Core/Inc/current_monitoring.h \
- ../Core/Inc/channel_control.h
+ ../Core/Inc/channel_control.h ../Core/Inc/plausibility_check.h \
+ ../Core/Inc/can_communication.h
../Core/Inc/main.h:
../Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h:
../Core/Inc/stm32f3xx_hal_conf.h:
@@ -74,3 +75,5 @@ Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \
../Core/Inc/can_halal.h:
../Core/Inc/current_monitoring.h:
../Core/Inc/channel_control.h:
+../Core/Inc/plausibility_check.h:
+../Core/Inc/can_communication.h:
diff --git a/Software/Code/Debug/Core/Src/main.o b/Software/Code/Debug/Core/Src/main.o
index 3160faf..a6eebc2 100644
Binary files a/Software/Code/Debug/Core/Src/main.o and b/Software/Code/Debug/Core/Src/main.o differ
diff --git a/Software/Code/Debug/Core/Src/main.su b/Software/Code/Debug/Core/Src/main.su
index 5a9135b..f3ea4f6 100644
--- a/Software/Code/Debug/Core/Src/main.su
+++ b/Software/Code/Debug/Core/Src/main.su
@@ -1,10 +1,10 @@
../Core/Src/main.c:90:5:main 16 static
-../Core/Src/main.c:193:6:SystemClock_Config 120 static
-../Core/Src/main.c:241:13:MX_ADC1_Init 48 static
-../Core/Src/main.c:370:13:MX_ADC2_Init 32 static
-../Core/Src/main.c:472:13:MX_CAN_Init 8 static
-../Core/Src/main.c:509:13:MX_TIM6_Init 24 static
-../Core/Src/main.c:547:13:MX_UART4_Init 8 static
-../Core/Src/main.c:580:13:MX_DMA_Init 16 static
-../Core/Src/main.c:602:13:MX_GPIO_Init 48 static
-../Core/Src/main.c:665:6:Error_Handler 4 static,ignoring_inline_asm
+../Core/Src/main.c:194:6:SystemClock_Config 120 static
+../Core/Src/main.c:242:13:MX_ADC1_Init 48 static
+../Core/Src/main.c:371:13:MX_ADC2_Init 32 static
+../Core/Src/main.c:473:13:MX_CAN_Init 8 static
+../Core/Src/main.c:510:13:MX_TIM6_Init 24 static
+../Core/Src/main.c:548:13:MX_UART4_Init 8 static
+../Core/Src/main.c:581:13:MX_DMA_Init 16 static
+../Core/Src/main.c:603:13:MX_GPIO_Init 48 static
+../Core/Src/main.c:666:6:Error_Handler 4 static,ignoring_inline_asm
diff --git a/Software/Code/Debug/Core/Src/plausibility_check.cyclo b/Software/Code/Debug/Core/Src/plausibility_check.cyclo
index bf4db99..45e45c1 100644
--- a/Software/Code/Debug/Core/Src/plausibility_check.cyclo
+++ b/Software/Code/Debug/Core/Src/plausibility_check.cyclo
@@ -1 +1 @@
-../Core/Src/plausibility_check.c:13:6:check_plausibility 28
+../Core/Src/plausibility_check.c:14:6:check_plausibility 29
diff --git a/Software/Code/Debug/Core/Src/plausibility_check.o b/Software/Code/Debug/Core/Src/plausibility_check.o
index 7a2b364..72b9fff 100644
Binary files a/Software/Code/Debug/Core/Src/plausibility_check.o and b/Software/Code/Debug/Core/Src/plausibility_check.o differ
diff --git a/Software/Code/Debug/Core/Src/plausibility_check.su b/Software/Code/Debug/Core/Src/plausibility_check.su
index 6252965..8cf63cb 100644
--- a/Software/Code/Debug/Core/Src/plausibility_check.su
+++ b/Software/Code/Debug/Core/Src/plausibility_check.su
@@ -1 +1 @@
-../Core/Src/plausibility_check.c:13:6:check_plausibility 4 static
+../Core/Src/plausibility_check.c:14:6:check_plausibility 4 static
diff --git a/Software/Code/Debug/PDU_FT25.elf b/Software/Code/Debug/PDU_FT25.elf
index 40d33a7..a5bf6c2 100644
Binary files a/Software/Code/Debug/PDU_FT25.elf and b/Software/Code/Debug/PDU_FT25.elf differ
diff --git a/Software/Code/Debug/PDU_FT25.list b/Software/Code/Debug/PDU_FT25.list
index 40d0530..354c02a 100644
--- a/Software/Code/Debug/PDU_FT25.list
+++ b/Software/Code/Debug/PDU_FT25.list
@@ -5,47 +5,47 @@ Sections:
Idx Name Size VMA LMA File off Algn
0 .isr_vector 00000188 08000000 08000000 00001000 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
- 1 .text 00007028 08000188 08000188 00001188 2**3
+ 1 .text 000070c4 08000188 08000188 00001188 2**3
CONTENTS, ALLOC, LOAD, READONLY, CODE
- 2 .rodata 00000038 080071b0 080071b0 000081b0 2**2
+ 2 .rodata 00000038 0800724c 0800724c 0000824c 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
- 3 .ARM.extab 00000000 080071e8 080071e8 0000900c 2**0
+ 3 .ARM.extab 00000000 08007284 08007284 0000900c 2**0
CONTENTS
- 4 .ARM 00000000 080071e8 080071e8 0000900c 2**0
+ 4 .ARM 00000000 08007284 08007284 0000900c 2**0
CONTENTS
- 5 .preinit_array 00000000 080071e8 080071e8 0000900c 2**0
+ 5 .preinit_array 00000000 08007284 08007284 0000900c 2**0
CONTENTS, ALLOC, LOAD, DATA
- 6 .init_array 00000004 080071e8 080071e8 000081e8 2**2
+ 6 .init_array 00000004 08007284 08007284 00008284 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
- 7 .fini_array 00000004 080071ec 080071ec 000081ec 2**2
+ 7 .fini_array 00000004 08007288 08007288 00008288 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
- 8 .data 0000000c 20000000 080071f0 00009000 2**2
+ 8 .data 0000000c 20000000 0800728c 00009000 2**2
CONTENTS, ALLOC, LOAD, DATA
- 9 .bss 00000300 2000000c 080071fc 0000900c 2**2
+ 9 .bss 000002f4 2000000c 08007298 0000900c 2**2
ALLOC
- 10 ._user_heap_stack 00000604 2000030c 080071fc 0000930c 2**0
+ 10 ._user_heap_stack 00000600 20000300 08007298 00009300 2**0
ALLOC
11 .ARM.attributes 00000030 00000000 00000000 0000900c 2**0
CONTENTS, READONLY
- 12 .debug_info 00015769 00000000 00000000 0000903c 2**0
+ 12 .debug_info 00015a5c 00000000 00000000 0000903c 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
- 13 .debug_abbrev 00002f63 00000000 00000000 0001e7a5 2**0
+ 13 .debug_abbrev 00002f4b 00000000 00000000 0001ea98 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
- 14 .debug_aranges 00001148 00000000 00000000 00021708 2**3
+ 14 .debug_aranges 00001148 00000000 00000000 000219e8 2**3
CONTENTS, READONLY, DEBUGGING, OCTETS
- 15 .debug_rnglists 00000d75 00000000 00000000 00022850 2**0
+ 15 .debug_rnglists 00000d74 00000000 00000000 00022b30 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
- 16 .debug_macro 0001ea20 00000000 00000000 000235c5 2**0
+ 16 .debug_macro 0001ea2e 00000000 00000000 000238a4 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
- 17 .debug_line 000170ef 00000000 00000000 00041fe5 2**0
+ 17 .debug_line 000170a9 00000000 00000000 000422d2 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
- 18 .debug_str 000b7d41 00000000 00000000 000590d4 2**0
+ 18 .debug_str 000b7e00 00000000 00000000 0005937b 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
- 19 .comment 00000043 00000000 00000000 00110e15 2**0
+ 19 .comment 00000043 00000000 00000000 0011117b 2**0
CONTENTS, READONLY
- 20 .debug_frame 00004948 00000000 00000000 00110e58 2**2
+ 20 .debug_frame 0000494c 00000000 00000000 001111c0 2**2
CONTENTS, READONLY, DEBUGGING, OCTETS
- 21 .debug_line_str 00000071 00000000 00000000 001157a0 2**0
+ 21 .debug_line_str 00000071 00000000 00000000 00115b0c 2**0
CONTENTS, READONLY, DEBUGGING, OCTETS
Disassembly of section .text:
@@ -64,7 +64,7 @@ Disassembly of section .text:
800019e: bd10 pop {r4, pc}
80001a0: 2000000c .word 0x2000000c
80001a4: 00000000 .word 0x00000000
- 80001a8: 08007198 .word 0x08007198
+ 80001a8: 08007234 .word 0x08007234
080001ac :
80001ac: b508 push {r3, lr}
@@ -76,7 +76,7 @@ Disassembly of section .text:
80001ba: bd08 pop {r3, pc}
80001bc: 00000000 .word 0x00000000
80001c0: 20000010 .word 0x20000010
- 80001c4: 08007198 .word 0x08007198
+ 80001c4: 08007234 .word 0x08007234
080001c8 <__aeabi_dmul>:
80001c8: b570 push {r4, r5, r6, lr}
@@ -598,11 +598,11 @@ void can_init(CAN_HandleTypeDef* hcan){
80007da: 6078 str r0, [r7, #4]
ftcan_init(hcan);
80007dc: 6878 ldr r0, [r7, #4]
- 80007de: f000 f93d bl 8000a5c
+ 80007de: f000 f953 bl 8000a88
ftcan_add_filter(0x00, 0x00); // no filter
80007e2: 2100 movs r1, #0
80007e4: 2000 movs r0, #0
- 80007e6: f000 f97d bl 8000ae4
+ 80007e6: f000 f993 bl 8000b10
}
80007ea: bf00 nop
80007ec: 3708 adds r7, #8
@@ -641,7 +641,7 @@ void can_sendloop(){
800081a: 2203 movs r2, #3
800081c: 4619 mov r1, r3
800081e: 20c9 movs r0, #201 @ 0xc9
- 8000820: f000 f93c bl 8000a9c
+ 8000820: f000 f952 bl 8000ac8
uint8_t data[8];
@@ -710,7 +710,7 @@ void can_sendloop(){
8000896: 2208 movs r2, #8
8000898: 4619 mov r1, r3
800089a: 20ca movs r0, #202 @ 0xca
- 800089c: f000 f8fe bl 8000a9c
+ 800089c: f000 f914 bl 8000ac8
break;
80008a0: e08d b.n 80009be
@@ -768,7 +768,7 @@ void can_sendloop(){
80008f4: 2208 movs r2, #8
80008f6: 4619 mov r1, r3
80008f8: 20cb movs r0, #203 @ 0xcb
- 80008fa: f000 f8cf bl 8000a9c
+ 80008fa: f000 f8e5 bl 8000ac8
break;
80008fe: e05e b.n 80009be
@@ -826,7 +826,7 @@ void can_sendloop(){
8000952: 2208 movs r2, #8
8000954: 4619 mov r1, r3
8000956: 20cc movs r0, #204 @ 0xcc
- 8000958: f000 f8a0 bl 8000a9c
+ 8000958: f000 f8b6 bl 8000ac8
break;
800095c: e02f b.n 80009be
@@ -884,7 +884,7 @@ void can_sendloop(){
80009b0: 2208 movs r2, #8
80009b2: 4619 mov r1, r3
80009b4: 20cd movs r0, #205 @ 0xcd
- 80009b6: f000 f871 bl 8000a9c
+ 80009b6: f000 f887 bl 8000ac8
break;
80009ba: e000 b.n 80009be
@@ -915,17179 +915,17232 @@ void can_sendloop(){
80009e8: 2000002d .word 0x2000002d
80009ec: 20000098 .word 0x20000098
-080009f0 :
- break;
- }
- error_loop = (error_loop + 1) % 2;
+080009f0 :
+
+void can_error_report(){
+ 80009f0: b580 push {r7, lr}
+ 80009f2: b082 sub sp, #8
+ 80009f4: af00 add r7, sp, #0
+ uint8_t error_data[2];
+ error_data[0] = error.group1.group1;
+ 80009f6: 4b08 ldr r3, [pc, #32] @ (8000a18 )
+ 80009f8: 781b ldrb r3, [r3, #0]
+ 80009fa: 713b strb r3, [r7, #4]
+ error_data[1] = error.group2.group2;
+ 80009fc: 4b06 ldr r3, [pc, #24] @ (8000a18 )
+ 80009fe: 785b ldrb r3, [r3, #1]
+ 8000a00: 717b strb r3, [r7, #5]
+ ftcan_transmit(ERROR_ID, error_data, 2);
+ 8000a02: 1d3b adds r3, r7, #4
+ 8000a04: 2202 movs r2, #2
+ 8000a06: 4619 mov r1, r3
+ 8000a08: 20ce movs r0, #206 @ 0xce
+ 8000a0a: f000 f85d bl 8000ac8
}
+ 8000a0e: bf00 nop
+ 8000a10: 3708 adds r7, #8
+ 8000a12: 46bd mov sp, r7
+ 8000a14: bd80 pop {r7, pc}
+ 8000a16: bf00 nop
+ 8000a18: 200002f4 .word 0x200002f4
+
+08000a1c :
void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t* data){
- 80009f0: b580 push {r7, lr}
- 80009f2: b084 sub sp, #16
- 80009f4: af00 add r7, sp, #0
- 80009f6: 4603 mov r3, r0
- 80009f8: 60b9 str r1, [r7, #8]
- 80009fa: 607a str r2, [r7, #4]
- 80009fc: 81fb strh r3, [r7, #14]
+ 8000a1c: b580 push {r7, lr}
+ 8000a1e: b084 sub sp, #16
+ 8000a20: af00 add r7, sp, #0
+ 8000a22: 4603 mov r3, r0
+ 8000a24: 60b9 str r1, [r7, #8]
+ 8000a26: 607a str r2, [r7, #4]
+ 8000a28: 81fb strh r3, [r7, #14]
canmsg_received = 1;
- 80009fe: 4b13 ldr r3, [pc, #76] @ (8000a4c )
- 8000a00: 2201 movs r2, #1
- 8000a02: 701a strb r2, [r3, #0]
+ 8000a2a: 4b13 ldr r3, [pc, #76] @ (8000a78 )
+ 8000a2c: 2201 movs r2, #1
+ 8000a2e: 701a strb r2, [r3, #0]
if((id == RX_STATUS_MSG_ID) && (datalen == 3)){
- 8000a04: 89fb ldrh r3, [r7, #14]
- 8000a06: 2bc8 cmp r3, #200 @ 0xc8
- 8000a08: d110 bne.n 8000a2c
- 8000a0a: 68bb ldr r3, [r7, #8]
- 8000a0c: 2b03 cmp r3, #3
- 8000a0e: d10d bne.n 8000a2c
+ 8000a30: 89fb ldrh r3, [r7, #14]
+ 8000a32: 2bc8 cmp r3, #200 @ 0xc8
+ 8000a34: d110 bne.n 8000a58
+ 8000a36: 68bb ldr r3, [r7, #8]
+ 8000a38: 2b03 cmp r3, #3
+ 8000a3a: d10d bne.n 8000a58
rxstate.iostatus.porta.porta = data[0];
- 8000a10: 687b ldr r3, [r7, #4]
- 8000a12: 781a ldrb r2, [r3, #0]
- 8000a14: 4b0e ldr r3, [pc, #56] @ (8000a50 )
- 8000a16: 701a strb r2, [r3, #0]
+ 8000a3c: 687b ldr r3, [r7, #4]
+ 8000a3e: 781a ldrb r2, [r3, #0]
+ 8000a40: 4b0e ldr r3, [pc, #56] @ (8000a7c )
+ 8000a42: 701a strb r2, [r3, #0]
rxstate.iostatus.portb.portb = data[1];
- 8000a18: 687b ldr r3, [r7, #4]
- 8000a1a: 3301 adds r3, #1
- 8000a1c: 781a ldrb r2, [r3, #0]
- 8000a1e: 4b0c ldr r3, [pc, #48] @ (8000a50 )
- 8000a20: 705a strb r2, [r3, #1]
+ 8000a44: 687b ldr r3, [r7, #4]
+ 8000a46: 3301 adds r3, #1
+ 8000a48: 781a ldrb r2, [r3, #0]
+ 8000a4a: 4b0c ldr r3, [pc, #48] @ (8000a7c )
+ 8000a4c: 705a strb r2, [r3, #1]
rxstate.checksum = data[2];
- 8000a22: 687b ldr r3, [r7, #4]
- 8000a24: 3302 adds r3, #2
- 8000a26: 781a ldrb r2, [r3, #0]
- 8000a28: 4b09 ldr r3, [pc, #36] @ (8000a50 )
- 8000a2a: 709a strb r2, [r3, #2]
+ 8000a4e: 687b ldr r3, [r7, #4]
+ 8000a50: 3302 adds r3, #2
+ 8000a52: 781a ldrb r2, [r3, #0]
+ 8000a54: 4b09 ldr r3, [pc, #36] @ (8000a7c )
+ 8000a56: 709a strb r2, [r3, #2]
}
if (id == RX_STATUS_HEARTBEAT){
- 8000a2c: 89fb ldrh r3, [r7, #14]
- 8000a2e: 2bc7 cmp r3, #199 @ 0xc7
- 8000a30: d107 bne.n 8000a42
+ 8000a58: 89fb ldrh r3, [r7, #14]
+ 8000a5a: 2bc7 cmp r3, #199 @ 0xc7
+ 8000a5c: d107 bne.n 8000a6e
lastheartbeat = HAL_GetTick();
- 8000a32: f001 fc19 bl 8002268
- 8000a36: 4603 mov r3, r0
- 8000a38: 4a06 ldr r2, [pc, #24] @ (8000a54 )
- 8000a3a: 6013 str r3, [r2, #0]
+ 8000a5e: f001 fc51 bl 8002304
+ 8000a62: 4603 mov r3, r0
+ 8000a64: 4a06 ldr r2, [pc, #24] @ (8000a80 )
+ 8000a66: 6013 str r3, [r2, #0]
inhibit_SDC = 0;
- 8000a3c: 4b06 ldr r3, [pc, #24] @ (8000a58 )
- 8000a3e: 2200 movs r2, #0
- 8000a40: 601a str r2, [r3, #0]
+ 8000a68: 4b06 ldr r3, [pc, #24] @ (8000a84 )
+ 8000a6a: 2200 movs r2, #0
+ 8000a6c: 601a str r2, [r3, #0]
}
}
- 8000a42: bf00 nop
- 8000a44: 3710 adds r7, #16
- 8000a46: 46bd mov sp, r7
- 8000a48: bd80 pop {r7, pc}
- 8000a4a: bf00 nop
- 8000a4c: 2000002c .word 0x2000002c
- 8000a50: 20000028 .word 0x20000028
- 8000a54: 200002ec .word 0x200002ec
- 8000a58: 200002f0 .word 0x200002f0
+ 8000a6e: bf00 nop
+ 8000a70: 3710 adds r7, #16
+ 8000a72: 46bd mov sp, r7
+ 8000a74: bd80 pop {r7, pc}
+ 8000a76: bf00 nop
+ 8000a78: 2000002c .word 0x2000002c
+ 8000a7c: 20000028 .word 0x20000028
+ 8000a80: 200002ec .word 0x200002ec
+ 8000a84: 200002f0 .word 0x200002f0
-08000a5c :
+08000a88 :
#include
#if defined(FTCAN_IS_BXCAN)
static CAN_HandleTypeDef *hcan;
HAL_StatusTypeDef ftcan_init(CAN_HandleTypeDef *handle) {
- 8000a5c: b580 push {r7, lr}
- 8000a5e: b084 sub sp, #16
- 8000a60: af00 add r7, sp, #0
- 8000a62: 6078 str r0, [r7, #4]
+ 8000a88: b580 push {r7, lr}
+ 8000a8a: b084 sub sp, #16
+ 8000a8c: af00 add r7, sp, #0
+ 8000a8e: 6078 str r0, [r7, #4]
hcan = handle;
- 8000a64: 4a0c ldr r2, [pc, #48] @ (8000a98 )
- 8000a66: 687b ldr r3, [r7, #4]
- 8000a68: 6013 str r3, [r2, #0]
+ 8000a90: 4a0c ldr r2, [pc, #48] @ (8000ac4 )
+ 8000a92: 687b ldr r3, [r7, #4]
+ 8000a94: 6013 str r3, [r2, #0]
HAL_StatusTypeDef status =
HAL_CAN_ActivateNotification(hcan, CAN_IT_RX_FIFO0_MSG_PENDING);
- 8000a6a: 4b0b ldr r3, [pc, #44] @ (8000a98 )
- 8000a6c: 681b ldr r3, [r3, #0]
- 8000a6e: 2102 movs r1, #2
- 8000a70: 4618 mov r0, r3
- 8000a72: f003 f984 bl 8003d7e
- 8000a76: 4603 mov r3, r0
- 8000a78: 73fb strb r3, [r7, #15]
+ 8000a96: 4b0b ldr r3, [pc, #44] @ (8000ac4 )
+ 8000a98: 681b ldr r3, [r3, #0]
+ 8000a9a: 2102 movs r1, #2
+ 8000a9c: 4618 mov r0, r3
+ 8000a9e: f003 f9bc bl 8003e1a
+ 8000aa2: 4603 mov r3, r0
+ 8000aa4: 73fb strb r3, [r7, #15]
if (status != HAL_OK) {
- 8000a7a: 7bfb ldrb r3, [r7, #15]
- 8000a7c: 2b00 cmp r3, #0
- 8000a7e: d001 beq.n 8000a84
+ 8000aa6: 7bfb ldrb r3, [r7, #15]
+ 8000aa8: 2b00 cmp r3, #0
+ 8000aaa: d001 beq.n 8000ab0
return status;
- 8000a80: 7bfb ldrb r3, [r7, #15]
- 8000a82: e005 b.n 8000a90
+ 8000aac: 7bfb ldrb r3, [r7, #15]
+ 8000aae: e005 b.n 8000abc
}
return HAL_CAN_Start(hcan);
- 8000a84: 4b04 ldr r3, [pc, #16] @ (8000a98 )
- 8000a86: 681b ldr r3, [r3, #0]
- 8000a88: 4618 mov r0, r3
- 8000a8a: f002 ff42 bl 8003912
- 8000a8e: 4603 mov r3, r0
+ 8000ab0: 4b04 ldr r3, [pc, #16] @ (8000ac4 )
+ 8000ab2: 681b ldr r3, [r3, #0]
+ 8000ab4: 4618 mov r0, r3
+ 8000ab6: f002 ff7a bl 80039ae
+ 8000aba: 4603 mov r3, r0
}
- 8000a90: 4618 mov r0, r3
- 8000a92: 3710 adds r7, #16
- 8000a94: 46bd mov sp, r7
- 8000a96: bd80 pop {r7, pc}
- 8000a98: 20000030 .word 0x20000030
+ 8000abc: 4618 mov r0, r3
+ 8000abe: 3710 adds r7, #16
+ 8000ac0: 46bd mov sp, r7
+ 8000ac2: bd80 pop {r7, pc}
+ 8000ac4: 20000030 .word 0x20000030
-08000a9c :
+08000ac8 :
HAL_StatusTypeDef ftcan_transmit(uint16_t id, const uint8_t *data,
size_t datalen) {
- 8000a9c: b580 push {r7, lr}
- 8000a9e: b086 sub sp, #24
- 8000aa0: af00 add r7, sp, #0
- 8000aa2: 4603 mov r3, r0
- 8000aa4: 60b9 str r1, [r7, #8]
- 8000aa6: 607a str r2, [r7, #4]
- 8000aa8: 81fb strh r3, [r7, #14]
+ 8000ac8: b580 push {r7, lr}
+ 8000aca: b086 sub sp, #24
+ 8000acc: af00 add r7, sp, #0
+ 8000ace: 4603 mov r3, r0
+ 8000ad0: 60b9 str r1, [r7, #8]
+ 8000ad2: 607a str r2, [r7, #4]
+ 8000ad4: 81fb strh r3, [r7, #14]
static CAN_TxHeaderTypeDef header;
header.StdId = id;
- 8000aaa: 89fb ldrh r3, [r7, #14]
- 8000aac: 4a0b ldr r2, [pc, #44] @ (8000adc )
- 8000aae: 6013 str r3, [r2, #0]
+ 8000ad6: 89fb ldrh r3, [r7, #14]
+ 8000ad8: 4a0b ldr r2, [pc, #44] @ (8000b08 )
+ 8000ada: 6013 str r3, [r2, #0]
header.IDE = CAN_ID_STD;
- 8000ab0: 4b0a ldr r3, [pc, #40] @ (8000adc )
- 8000ab2: 2200 movs r2, #0
- 8000ab4: 609a str r2, [r3, #8]
+ 8000adc: 4b0a ldr r3, [pc, #40] @ (8000b08 )
+ 8000ade: 2200 movs r2, #0
+ 8000ae0: 609a str r2, [r3, #8]
header.RTR = CAN_RTR_DATA;
- 8000ab6: 4b09 ldr r3, [pc, #36] @ (8000adc )
- 8000ab8: 2200 movs r2, #0
- 8000aba: 60da str r2, [r3, #12]
+ 8000ae2: 4b09 ldr r3, [pc, #36] @ (8000b08 )
+ 8000ae4: 2200 movs r2, #0
+ 8000ae6: 60da str r2, [r3, #12]
header.DLC = datalen;
- 8000abc: 4a07 ldr r2, [pc, #28] @ (8000adc )
- 8000abe: 687b ldr r3, [r7, #4]
- 8000ac0: 6113 str r3, [r2, #16]
+ 8000ae8: 4a07 ldr r2, [pc, #28] @ (8000b08 )
+ 8000aea: 687b ldr r3, [r7, #4]
+ 8000aec: 6113 str r3, [r2, #16]
uint32_t mailbox;
return HAL_CAN_AddTxMessage(hcan, &header, data, &mailbox);
- 8000ac2: 4b07 ldr r3, [pc, #28] @ (8000ae0 )
- 8000ac4: 6818 ldr r0, [r3, #0]
- 8000ac6: f107 0314 add.w r3, r7, #20
- 8000aca: 68ba ldr r2, [r7, #8]
- 8000acc: 4903 ldr r1, [pc, #12] @ (8000adc )
- 8000ace: f002 ff64 bl 800399a
- 8000ad2: 4603 mov r3, r0
+ 8000aee: 4b07 ldr r3, [pc, #28] @ (8000b0c )
+ 8000af0: 6818 ldr r0, [r3, #0]
+ 8000af2: f107 0314 add.w r3, r7, #20
+ 8000af6: 68ba ldr r2, [r7, #8]
+ 8000af8: 4903 ldr r1, [pc, #12] @ (8000b08 )
+ 8000afa: f002 ff9c bl 8003a36
+ 8000afe: 4603 mov r3, r0
}
- 8000ad4: 4618 mov r0, r3
- 8000ad6: 3718 adds r7, #24
- 8000ad8: 46bd mov sp, r7
- 8000ada: bd80 pop {r7, pc}
- 8000adc: 20000034 .word 0x20000034
- 8000ae0: 20000030 .word 0x20000030
+ 8000b00: 4618 mov r0, r3
+ 8000b02: 3718 adds r7, #24
+ 8000b04: 46bd mov sp, r7
+ 8000b06: bd80 pop {r7, pc}
+ 8000b08: 20000034 .word 0x20000034
+ 8000b0c: 20000030 .word 0x20000030
-08000ae4 :
+08000b10 :
HAL_StatusTypeDef ftcan_add_filter(uint16_t id, uint16_t mask) {
- 8000ae4: b580 push {r7, lr}
- 8000ae6: b084 sub sp, #16
- 8000ae8: af00 add r7, sp, #0
- 8000aea: 4603 mov r3, r0
- 8000aec: 460a mov r2, r1
- 8000aee: 80fb strh r3, [r7, #6]
- 8000af0: 4613 mov r3, r2
- 8000af2: 80bb strh r3, [r7, #4]
+ 8000b10: b580 push {r7, lr}
+ 8000b12: b084 sub sp, #16
+ 8000b14: af00 add r7, sp, #0
+ 8000b16: 4603 mov r3, r0
+ 8000b18: 460a mov r2, r1
+ 8000b1a: 80fb strh r3, [r7, #6]
+ 8000b1c: 4613 mov r3, r2
+ 8000b1e: 80bb strh r3, [r7, #4]
static uint32_t next_filter_no = 0;
static CAN_FilterTypeDef filter;
if (next_filter_no % 2 == 0) {
- 8000af4: 4b26 ldr r3, [pc, #152] @ (8000b90 )
- 8000af6: 681b ldr r3, [r3, #0]
- 8000af8: f003 0301 and.w r3, r3, #1
- 8000afc: 2b00 cmp r3, #0
- 8000afe: d110 bne.n 8000b22
+ 8000b20: 4b26 ldr r3, [pc, #152] @ (8000bbc )
+ 8000b22: 681b ldr r3, [r3, #0]
+ 8000b24: f003 0301 and.w r3, r3, #1
+ 8000b28: 2b00 cmp r3, #0
+ 8000b2a: d110 bne.n 8000b4e
filter.FilterIdHigh = id << 5;
- 8000b00: 88fb ldrh r3, [r7, #6]
- 8000b02: 015b lsls r3, r3, #5
- 8000b04: 4a23 ldr r2, [pc, #140] @ (8000b94 )
- 8000b06: 6013 str r3, [r2, #0]
+ 8000b2c: 88fb ldrh r3, [r7, #6]
+ 8000b2e: 015b lsls r3, r3, #5
+ 8000b30: 4a23 ldr r2, [pc, #140] @ (8000bc0 )
+ 8000b32: 6013 str r3, [r2, #0]
filter.FilterMaskIdHigh = mask << 5;
- 8000b08: 88bb ldrh r3, [r7, #4]
- 8000b0a: 015b lsls r3, r3, #5
- 8000b0c: 4a21 ldr r2, [pc, #132] @ (8000b94 )
- 8000b0e: 6093 str r3, [r2, #8]
+ 8000b34: 88bb ldrh r3, [r7, #4]
+ 8000b36: 015b lsls r3, r3, #5
+ 8000b38: 4a21 ldr r2, [pc, #132] @ (8000bc0 )
+ 8000b3a: 6093 str r3, [r2, #8]
filter.FilterIdLow = id << 5;
- 8000b10: 88fb ldrh r3, [r7, #6]
- 8000b12: 015b lsls r3, r3, #5
- 8000b14: 4a1f ldr r2, [pc, #124] @ (8000b94 )
- 8000b16: 6053 str r3, [r2, #4]
+ 8000b3c: 88fb ldrh r3, [r7, #6]
+ 8000b3e: 015b lsls r3, r3, #5
+ 8000b40: 4a1f ldr r2, [pc, #124] @ (8000bc0 )
+ 8000b42: 6053 str r3, [r2, #4]
filter.FilterMaskIdLow = mask << 5;
- 8000b18: 88bb ldrh r3, [r7, #4]
- 8000b1a: 015b lsls r3, r3, #5
- 8000b1c: 4a1d ldr r2, [pc, #116] @ (8000b94 )
- 8000b1e: 60d3 str r3, [r2, #12]
- 8000b20: e007 b.n 8000b32
+ 8000b44: 88bb ldrh r3, [r7, #4]
+ 8000b46: 015b lsls r3, r3, #5
+ 8000b48: 4a1d ldr r2, [pc, #116] @ (8000bc0 )
+ 8000b4a: 60d3 str r3, [r2, #12]
+ 8000b4c: e007 b.n 8000b5e
} else {
// Leave high filter untouched from the last configuration
filter.FilterIdLow = id << 5;
- 8000b22: 88fb ldrh r3, [r7, #6]
- 8000b24: 015b lsls r3, r3, #5
- 8000b26: 4a1b ldr r2, [pc, #108] @ (8000b94 )
- 8000b28: 6053 str r3, [r2, #4]
+ 8000b4e: 88fb ldrh r3, [r7, #6]
+ 8000b50: 015b lsls r3, r3, #5
+ 8000b52: 4a1b ldr r2, [pc, #108] @ (8000bc0 )
+ 8000b54: 6053 str r3, [r2, #4]
filter.FilterMaskIdLow = mask << 5;
- 8000b2a: 88bb ldrh r3, [r7, #4]
- 8000b2c: 015b lsls r3, r3, #5
- 8000b2e: 4a19 ldr r2, [pc, #100] @ (8000b94 )
- 8000b30: 60d3 str r3, [r2, #12]
+ 8000b56: 88bb ldrh r3, [r7, #4]
+ 8000b58: 015b lsls r3, r3, #5
+ 8000b5a: 4a19 ldr r2, [pc, #100] @ (8000bc0 )
+ 8000b5c: 60d3 str r3, [r2, #12]
}
filter.FilterFIFOAssignment = CAN_FILTER_FIFO0;
- 8000b32: 4b18 ldr r3, [pc, #96] @ (8000b94 )
- 8000b34: 2200 movs r2, #0
- 8000b36: 611a str r2, [r3, #16]
+ 8000b5e: 4b18 ldr r3, [pc, #96] @ (8000bc0 )
+ 8000b60: 2200 movs r2, #0
+ 8000b62: 611a str r2, [r3, #16]
filter.FilterBank = next_filter_no / 2;
- 8000b38: 4b15 ldr r3, [pc, #84] @ (8000b90 )
- 8000b3a: 681b ldr r3, [r3, #0]
- 8000b3c: 085b lsrs r3, r3, #1
- 8000b3e: 4a15 ldr r2, [pc, #84] @ (8000b94 )
- 8000b40: 6153 str r3, [r2, #20]
+ 8000b64: 4b15 ldr r3, [pc, #84] @ (8000bbc )
+ 8000b66: 681b ldr r3, [r3, #0]
+ 8000b68: 085b lsrs r3, r3, #1
+ 8000b6a: 4a15 ldr r2, [pc, #84] @ (8000bc0 )
+ 8000b6c: 6153 str r3, [r2, #20]
if (filter.FilterBank > FTCAN_NUM_FILTERS + 1) {
- 8000b42: 4b14 ldr r3, [pc, #80] @ (8000b94 )
- 8000b44: 695b ldr r3, [r3, #20]
- 8000b46: 2b0e cmp r3, #14
- 8000b48: d901 bls.n 8000b4e
+ 8000b6e: 4b14 ldr r3, [pc, #80] @ (8000bc0 )
+ 8000b70: 695b ldr r3, [r3, #20]
+ 8000b72: 2b0e cmp r3, #14
+ 8000b74: d901 bls.n 8000b7a
return HAL_ERROR;
- 8000b4a: 2301 movs r3, #1
- 8000b4c: e01c b.n 8000b88
+ 8000b76: 2301 movs r3, #1
+ 8000b78: e01c b.n 8000bb4
}
filter.FilterMode = CAN_FILTERMODE_IDMASK;
- 8000b4e: 4b11 ldr r3, [pc, #68] @ (8000b94 )
- 8000b50: 2200 movs r2, #0
- 8000b52: 619a str r2, [r3, #24]
+ 8000b7a: 4b11 ldr r3, [pc, #68] @ (8000bc0 )
+ 8000b7c: 2200 movs r2, #0
+ 8000b7e: 619a str r2, [r3, #24]
filter.FilterScale = CAN_FILTERSCALE_16BIT;
- 8000b54: 4b0f ldr r3, [pc, #60] @ (8000b94 )
- 8000b56: 2200 movs r2, #0
- 8000b58: 61da str r2, [r3, #28]
+ 8000b80: 4b0f ldr r3, [pc, #60] @ (8000bc0 )
+ 8000b82: 2200 movs r2, #0
+ 8000b84: 61da str r2, [r3, #28]
filter.FilterActivation = CAN_FILTER_ENABLE;
- 8000b5a: 4b0e ldr r3, [pc, #56] @ (8000b94 )
- 8000b5c: 2201 movs r2, #1
- 8000b5e: 621a str r2, [r3, #32]
+ 8000b86: 4b0e ldr r3, [pc, #56] @ (8000bc0 )
+ 8000b88: 2201 movs r2, #1
+ 8000b8a: 621a str r2, [r3, #32]
// Disable slave filters
// TODO: Some STM32 have multiple CAN peripherals, and one uses the slave
// filter bank
filter.SlaveStartFilterBank = FTCAN_NUM_FILTERS;
- 8000b60: 4b0c ldr r3, [pc, #48] @ (8000b94 )
- 8000b62: 220d movs r2, #13
- 8000b64: 625a str r2, [r3, #36] @ 0x24
+ 8000b8c: 4b0c ldr r3, [pc, #48] @ (8000bc0 )
+ 8000b8e: 220d movs r2, #13
+ 8000b90: 625a str r2, [r3, #36] @ 0x24
HAL_StatusTypeDef status = HAL_CAN_ConfigFilter(hcan, &filter);
- 8000b66: 4b0c ldr r3, [pc, #48] @ (8000b98 )
- 8000b68: 681b ldr r3, [r3, #0]
- 8000b6a: 490a ldr r1, [pc, #40] @ (8000b94 )
- 8000b6c: 4618 mov r0, r3
- 8000b6e: f002 fe06 bl 800377e
- 8000b72: 4603 mov r3, r0
- 8000b74: 73fb strb r3, [r7, #15]
+ 8000b92: 4b0c ldr r3, [pc, #48] @ (8000bc4 )
+ 8000b94: 681b ldr r3, [r3, #0]
+ 8000b96: 490a ldr r1, [pc, #40] @ (8000bc0 )
+ 8000b98: 4618 mov r0, r3
+ 8000b9a: f002 fe3e bl 800381a
+ 8000b9e: 4603 mov r3, r0
+ 8000ba0: 73fb strb r3, [r7, #15]
if (status == HAL_OK) {
- 8000b76: 7bfb ldrb r3, [r7, #15]
- 8000b78: 2b00 cmp r3, #0
- 8000b7a: d104 bne.n 8000b86
+ 8000ba2: 7bfb ldrb r3, [r7, #15]
+ 8000ba4: 2b00 cmp r3, #0
+ 8000ba6: d104 bne.n 8000bb2
next_filter_no++;
- 8000b7c: 4b04 ldr r3, [pc, #16] @ (8000b90 )
- 8000b7e: 681b ldr r3, [r3, #0]
- 8000b80: 3301 adds r3, #1
- 8000b82: 4a03 ldr r2, [pc, #12] @ (8000b90 )
- 8000b84: 6013 str r3, [r2, #0]
+ 8000ba8: 4b04 ldr r3, [pc, #16] @ (8000bbc )
+ 8000baa: 681b ldr r3, [r3, #0]
+ 8000bac: 3301 adds r3, #1
+ 8000bae: 4a03 ldr r2, [pc, #12] @ (8000bbc )
+ 8000bb0: 6013 str r3, [r2, #0]
}
return status;
- 8000b86: 7bfb ldrb r3, [r7, #15]
+ 8000bb2: 7bfb ldrb r3, [r7, #15]
}
- 8000b88: 4618 mov r0, r3
- 8000b8a: 3710 adds r7, #16
- 8000b8c: 46bd mov sp, r7
- 8000b8e: bd80 pop {r7, pc}
- 8000b90: 2000004c .word 0x2000004c
- 8000b94: 20000050 .word 0x20000050
- 8000b98: 20000030 .word 0x20000030
+ 8000bb4: 4618 mov r0, r3
+ 8000bb6: 3710 adds r7, #16
+ 8000bb8: 46bd mov sp, r7
+ 8000bba: bd80 pop {r7, pc}
+ 8000bbc: 2000004c .word 0x2000004c
+ 8000bc0: 20000050 .word 0x20000050
+ 8000bc4: 20000030 .word 0x20000030
-08000b9c :
+08000bc8 :
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *handle) {
- 8000b9c: b580 push {r7, lr}
- 8000b9e: b08c sub sp, #48 @ 0x30
- 8000ba0: af00 add r7, sp, #0
- 8000ba2: 6078 str r0, [r7, #4]
+ 8000bc8: b580 push {r7, lr}
+ 8000bca: b08c sub sp, #48 @ 0x30
+ 8000bcc: af00 add r7, sp, #0
+ 8000bce: 6078 str r0, [r7, #4]
if (handle != hcan) {
- 8000ba4: 4b12 ldr r3, [pc, #72] @ (8000bf0 )
- 8000ba6: 681b ldr r3, [r3, #0]
- 8000ba8: 687a ldr r2, [r7, #4]
- 8000baa: 429a cmp r2, r3
- 8000bac: d117 bne.n 8000bde
+ 8000bd0: 4b12 ldr r3, [pc, #72] @ (8000c1c )
+ 8000bd2: 681b ldr r3, [r3, #0]
+ 8000bd4: 687a ldr r2, [r7, #4]
+ 8000bd6: 429a cmp r2, r3
+ 8000bd8: d117 bne.n 8000c0a
return;
}
CAN_RxHeaderTypeDef header;
uint8_t data[8];
if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &header, data) != HAL_OK) {
- 8000bae: 4b10 ldr r3, [pc, #64] @ (8000bf0 )
- 8000bb0: 6818 ldr r0, [r3, #0]
- 8000bb2: f107 030c add.w r3, r7, #12
- 8000bb6: f107 0214 add.w r2, r7, #20
- 8000bba: 2100 movs r1, #0
- 8000bbc: f002 ffbd bl 8003b3a
- 8000bc0: 4603 mov r3, r0
- 8000bc2: 2b00 cmp r3, #0
- 8000bc4: d10d bne.n 8000be2
+ 8000bda: 4b10 ldr r3, [pc, #64] @ (8000c1c )
+ 8000bdc: 6818 ldr r0, [r3, #0]
+ 8000bde: f107 030c add.w r3, r7, #12
+ 8000be2: f107 0214 add.w r2, r7, #20
+ 8000be6: 2100 movs r1, #0
+ 8000be8: f002 fff5 bl 8003bd6
+ 8000bec: 4603 mov r3, r0
+ 8000bee: 2b00 cmp r3, #0
+ 8000bf0: d10d bne.n 8000c0e
return;
}
if (header.IDE != CAN_ID_STD) {
- 8000bc6: 69fb ldr r3, [r7, #28]
- 8000bc8: 2b00 cmp r3, #0
- 8000bca: d10c bne.n 8000be6
+ 8000bf2: 69fb ldr r3, [r7, #28]
+ 8000bf4: 2b00 cmp r3, #0
+ 8000bf6: d10c bne.n 8000c12
return;
}
ftcan_msg_received_cb(header.StdId, header.DLC, data);
- 8000bcc: 697b ldr r3, [r7, #20]
- 8000bce: b29b uxth r3, r3
- 8000bd0: 6a79 ldr r1, [r7, #36] @ 0x24
- 8000bd2: f107 020c add.w r2, r7, #12
- 8000bd6: 4618 mov r0, r3
- 8000bd8: f7ff ff0a bl 80009f0
- 8000bdc: e004 b.n 8000be8
+ 8000bf8: 697b ldr r3, [r7, #20]
+ 8000bfa: b29b uxth r3, r3
+ 8000bfc: 6a79 ldr r1, [r7, #36] @ 0x24
+ 8000bfe: f107 020c add.w r2, r7, #12
+ 8000c02: 4618 mov r0, r3
+ 8000c04: f7ff ff0a bl 8000a1c
+ 8000c08: e004 b.n 8000c14
return;
- 8000bde: bf00 nop
- 8000be0: e002 b.n 8000be8
+ 8000c0a: bf00 nop
+ 8000c0c: e002 b.n 8000c14
return;
- 8000be2: bf00 nop
- 8000be4: e000 b.n 8000be8
+ 8000c0e: bf00 nop
+ 8000c10: e000 b.n 8000c14
return;
- 8000be6: bf00 nop
+ 8000c12: bf00 nop
}
- 8000be8: 3730 adds r7, #48 @ 0x30
- 8000bea: 46bd mov sp, r7
- 8000bec: bd80 pop {r7, pc}
- 8000bee: bf00 nop
- 8000bf0: 20000030 .word 0x20000030
+ 8000c14: 3730 adds r7, #48 @ 0x30
+ 8000c16: 46bd mov sp, r7
+ 8000c18: bd80 pop {r7, pc}
+ 8000c1a: bf00 nop
+ 8000c1c: 20000030 .word 0x20000030
-08000bf4 :
+08000c20 :
extern current_measurements current_measurements_adc_val;
extern int inhibit_SDC;
volatile int prev_epsc_state;
void ChannelControl_init(){
- 8000bf4: b580 push {r7, lr}
- 8000bf6: af00 add r7, sp, #0
+ 8000c20: b580 push {r7, lr}
+ 8000c22: af00 add r7, sp, #0
update_ports.porta.porta = 0;
- 8000bf8: 4b09 ldr r3, [pc, #36] @ (8000c20 )
- 8000bfa: 2200 movs r2, #0
- 8000bfc: 701a strb r2, [r3, #0]
+ 8000c24: 4b09 ldr r3, [pc, #36] @ (8000c4c )
+ 8000c26: 2200 movs r2, #0
+ 8000c28: 701a strb r2, [r3, #0]
update_ports.portb.portb = 0;
- 8000bfe: 4b08 ldr r3, [pc, #32] @ (8000c20 )
- 8000c00: 2200 movs r2, #0
- 8000c02: 705a strb r2, [r3, #1]
+ 8000c2a: 4b08 ldr r3, [pc, #32] @ (8000c4c )
+ 8000c2c: 2200 movs r2, #0
+ 8000c2e: 705a strb r2, [r3, #1]
update_ports.portb.alwayson = 1;
- 8000c04: 4a06 ldr r2, [pc, #24] @ (8000c20 )
- 8000c06: 7853 ldrb r3, [r2, #1]
- 8000c08: f043 0301 orr.w r3, r3, #1
- 8000c0c: 7053 strb r3, [r2, #1]
+ 8000c30: 4a06 ldr r2, [pc, #24] @ (8000c4c )
+ 8000c32: 7853 ldrb r3, [r2, #1]
+ 8000c34: f043 0301 orr.w r3, r3, #1
+ 8000c38: 7053 strb r3, [r2, #1]
ChannelControl_UpdateGPIOs(update_ports);
- 8000c0e: 4b04 ldr r3, [pc, #16] @ (8000c20 )
- 8000c10: 8818 ldrh r0, [r3, #0]
- 8000c12: f000 f809 bl 8000c28
+ 8000c3a: 4b04 ldr r3, [pc, #16] @ (8000c4c )
+ 8000c3c: 8818 ldrh r0, [r3, #0]
+ 8000c3e: f000 f809 bl 8000c54
prev_epsc_state = 0;
- 8000c16: 4b03 ldr r3, [pc, #12] @ (8000c24 )
- 8000c18: 2200 movs r2, #0
- 8000c1a: 601a str r2, [r3, #0]
+ 8000c42: 4b03 ldr r3, [pc, #12] @ (8000c50 )
+ 8000c44: 2200 movs r2, #0
+ 8000c46: 601a str r2, [r3, #0]
}
- 8000c1c: bf00 nop
- 8000c1e: bd80 pop {r7, pc}
- 8000c20: 200002e8 .word 0x200002e8
- 8000c24: 20000078 .word 0x20000078
+ 8000c48: bf00 nop
+ 8000c4a: bd80 pop {r7, pc}
+ 8000c4c: 200002e8 .word 0x200002e8
+ 8000c50: 20000078 .word 0x20000078
-08000c28 :
+08000c54 :
void ChannelControl_UpdateGPIOs(enable_gpios UpdatePorts){
- 8000c28: b580 push {r7, lr}
- 8000c2a: b082 sub sp, #8
- 8000c2c: af00 add r7, sp, #0
- 8000c2e: 80b8 strh r0, [r7, #4]
- UpdatePorts.portb.alwayson = 1;
- 8000c30: 797b ldrb r3, [r7, #5]
- 8000c32: f043 0301 orr.w r3, r3, #1
- 8000c36: 717b strb r3, [r7, #5]
+ 8000c54: b580 push {r7, lr}
+ 8000c56: b082 sub sp, #8
+ 8000c58: af00 add r7, sp, #0
+ 8000c5a: 80b8 strh r0, [r7, #4]
+ UpdatePorts.portb.alwayson = 1; // ensure always on stays always on
+ 8000c5c: 797b ldrb r3, [r7, #5]
+ 8000c5e: f043 0301 orr.w r3, r3, #1
+ 8000c62: 717b strb r3, [r7, #5]
if (inhibit_SDC == 1){
- 8000c38: 4b7b ldr r3, [pc, #492] @ (8000e28 )
- 8000c3a: 681b ldr r3, [r3, #0]
- 8000c3c: 2b01 cmp r3, #1
- 8000c3e: d109 bne.n 8000c54
+ 8000c64: 4b76 ldr r3, [pc, #472] @ (8000e40 )
+ 8000c66: 681b ldr r3, [r3, #0]
+ 8000c68: 2b01 cmp r3, #1
+ 8000c6a: d109 bne.n 8000c80
UpdatePorts.portb.sdc = 0;
- 8000c40: 797b ldrb r3, [r7, #5]
- 8000c42: f36f 0341 bfc r3, #1, #1
- 8000c46: 717b strb r3, [r7, #5]
+ 8000c6c: 797b ldrb r3, [r7, #5]
+ 8000c6e: f36f 0341 bfc r3, #1, #1
+ 8000c72: 717b strb r3, [r7, #5]
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, 1);
- 8000c48: 2201 movs r2, #1
- 8000c4a: f44f 7100 mov.w r1, #512 @ 0x200
- 8000c4e: 4877 ldr r0, [pc, #476] @ (8000e2c )
- 8000c50: f003 ff28 bl 8004aa4
+ 8000c74: 2201 movs r2, #1
+ 8000c76: f44f 7100 mov.w r1, #512 @ 0x200
+ 8000c7a: 4872 ldr r0, [pc, #456] @ (8000e44 )
+ 8000c7c: f003 ff60 bl 8004b40
}
HAL_GPIO_WritePin(IN1_GPIO_Port, IN1_Pin, (GPIO_PinState)UpdatePorts.porta.acc_cooling); // Acc-Cooling
- 8000c54: 793b ldrb r3, [r7, #4]
- 8000c56: f3c3 0300 ubfx r3, r3, #0, #1
- 8000c5a: b2db uxtb r3, r3
- 8000c5c: 461a mov r2, r3
- 8000c5e: f44f 7100 mov.w r1, #512 @ 0x200
- 8000c62: f04f 4090 mov.w r0, #1207959552 @ 0x48000000
- 8000c66: f003 ff1d bl 8004aa4
- HAL_GPIO_WritePin(IN2_GPIO_Port, IN2_Pin, (GPIO_PinState)UpdatePorts.porta.ts_cooling); // TS-Cooling
- 8000c6a: 793b ldrb r3, [r7, #4]
- 8000c6c: f3c3 0340 ubfx r3, r3, #1, #1
- 8000c70: b2db uxtb r3, r3
- 8000c72: 461a mov r2, r3
- 8000c74: f44f 7180 mov.w r1, #256 @ 0x100
- 8000c78: f04f 4090 mov.w r0, #1207959552 @ 0x48000000
- 8000c7c: f003 ff12 bl 8004aa4
- HAL_GPIO_WritePin(IN3_GPIO_Port, IN3_Pin, (GPIO_PinState)UpdatePorts.porta.drs); // DRS
8000c80: 793b ldrb r3, [r7, #4]
- 8000c82: f3c3 0380 ubfx r3, r3, #2, #1
+ 8000c82: f3c3 0300 ubfx r3, r3, #0, #1
8000c86: b2db uxtb r3, r3
8000c88: 461a mov r2, r3
- 8000c8a: f44f 5180 mov.w r1, #4096 @ 0x1000
- 8000c8e: 4868 ldr r0, [pc, #416] @ (8000e30 )
- 8000c90: f003 ff08 bl 8004aa4
+ 8000c8a: f44f 7100 mov.w r1, #512 @ 0x200
+ 8000c8e: f04f 4090 mov.w r0, #1207959552 @ 0x48000000
+ 8000c92: f003 ff55 bl 8004b40
+ HAL_GPIO_WritePin(IN2_GPIO_Port, IN2_Pin, (GPIO_PinState)UpdatePorts.porta.ts_cooling); // TS-Cooling
+ 8000c96: 793b ldrb r3, [r7, #4]
+ 8000c98: f3c3 0340 ubfx r3, r3, #1, #1
+ 8000c9c: b2db uxtb r3, r3
+ 8000c9e: 461a mov r2, r3
+ 8000ca0: f44f 7180 mov.w r1, #256 @ 0x100
+ 8000ca4: f04f 4090 mov.w r0, #1207959552 @ 0x48000000
+ 8000ca8: f003 ff4a bl 8004b40
+ HAL_GPIO_WritePin(IN3_GPIO_Port, IN3_Pin, (GPIO_PinState)UpdatePorts.porta.drs); // DRS
+ 8000cac: 793b ldrb r3, [r7, #4]
+ 8000cae: f3c3 0380 ubfx r3, r3, #2, #1
+ 8000cb2: b2db uxtb r3, r3
+ 8000cb4: 461a mov r2, r3
+ 8000cb6: f44f 5180 mov.w r1, #4096 @ 0x1000
+ 8000cba: 4863 ldr r0, [pc, #396] @ (8000e48 )
+ 8000cbc: f003 ff40 bl 8004b40
HAL_GPIO_WritePin(IN4_GPIO_Port, IN4_Pin, (GPIO_PinState)UpdatePorts.porta.acu); // ACU
- 8000c94: 793b ldrb r3, [r7, #4]
- 8000c96: f3c3 03c0 ubfx r3, r3, #3, #1
- 8000c9a: b2db uxtb r3, r3
- 8000c9c: 461a mov r2, r3
- 8000c9e: f44f 4100 mov.w r1, #32768 @ 0x8000
- 8000ca2: 4863 ldr r0, [pc, #396] @ (8000e30 )
- 8000ca4: f003 fefe bl 8004aa4
+ 8000cc0: 793b ldrb r3, [r7, #4]
+ 8000cc2: f3c3 03c0 ubfx r3, r3, #3, #1
+ 8000cc6: b2db uxtb r3, r3
+ 8000cc8: 461a mov r2, r3
+ 8000cca: f44f 4100 mov.w r1, #32768 @ 0x8000
+ 8000cce: 485e ldr r0, [pc, #376] @ (8000e48 )
+ 8000cd0: f003 ff36 bl 8004b40
if (prev_epsc_state == 0 && UpdatePorts.porta.epsc == 1){
- 8000ca8: 4b62 ldr r3, [pc, #392] @ (8000e34 )
- 8000caa: 681b ldr r3, [r3, #0]
- 8000cac: 2b00 cmp r3, #0
- 8000cae: d13f bne.n 8000d30
- 8000cb0: 793b ldrb r3, [r7, #4]
- 8000cb2: f003 0310 and.w r3, r3, #16
- 8000cb6: b2db uxtb r3, r3
- 8000cb8: 2b00 cmp r3, #0
- 8000cba: d039 beq.n 8000d30
+ 8000cd4: 4b5d ldr r3, [pc, #372] @ (8000e4c )
+ 8000cd6: 681b ldr r3, [r3, #0]
+ 8000cd8: 2b00 cmp r3, #0
+ 8000cda: d135 bne.n 8000d48
+ 8000cdc: 793b ldrb r3, [r7, #4]
+ 8000cde: f003 0310 and.w r3, r3, #16
+ 8000ce2: b2db uxtb r3, r3
+ 8000ce4: 2b00 cmp r3, #0
+ 8000ce6: d02f beq.n 8000d48
HAL_GPIO_WritePin(PC_EN_GPIO_Port, PC_EN_Pin, 1); // enable precharge
- 8000cbc: 2201 movs r2, #1
- 8000cbe: 2140 movs r1, #64 @ 0x40
- 8000cc0: 485b ldr r0, [pc, #364] @ (8000e30 )
- 8000cc2: f003 feef bl 8004aa4
- HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, 1);
- 8000cc6: 2201 movs r2, #1
- 8000cc8: 2180 movs r1, #128 @ 0x80
- 8000cca: 4858 ldr r0, [pc, #352] @ (8000e2c )
- 8000ccc: f003 feea bl 8004aa4
- if (current_measurements_adc_val.epsc_precharge >= (0.95f * current_measurements_adc_val.asms_v)) { // precharge complete
- 8000cd0: 4b59 ldr r3, [pc, #356] @ (8000e38 )
- 8000cd2: 8b5b ldrh r3, [r3, #26]
- 8000cd4: ee07 3a90 vmov s15, r3
- 8000cd8: eeb8 7ae7 vcvt.f32.s32 s14, s15
- 8000cdc: 4b56 ldr r3, [pc, #344] @ (8000e38 )
- 8000cde: 8bdb ldrh r3, [r3, #30]
- 8000ce0: ee07 3a90 vmov s15, r3
- 8000ce4: eef8 7ae7 vcvt.f32.s32 s15, s15
- 8000ce8: eddf 6a54 vldr s13, [pc, #336] @ 8000e3c
- 8000cec: ee67 7aa6 vmul.f32 s15, s15, s13
- 8000cf0: eeb4 7ae7 vcmpe.f32 s14, s15
- 8000cf4: eef1 fa10 vmrs APSR_nzcv, fpscr
- 8000cf8: db1a blt.n 8000d30
- HAL_GPIO_WritePin(IN5_GPIO_Port, IN5_Pin, (GPIO_PinState)UpdatePorts.porta.epsc); // switch PROFET
- 8000cfa: 793b ldrb r3, [r7, #4]
- 8000cfc: f3c3 1300 ubfx r3, r3, #4, #1
- 8000d00: b2db uxtb r3, r3
- 8000d02: 461a mov r2, r3
- 8000d04: f44f 4180 mov.w r1, #16384 @ 0x4000
- 8000d08: 4849 ldr r0, [pc, #292] @ (8000e30 )
- 8000d0a: f003 fecb bl 8004aa4
+ 8000ce8: 2201 movs r2, #1
+ 8000cea: 2140 movs r1, #64 @ 0x40
+ 8000cec: 4856 ldr r0, [pc, #344] @ (8000e48 )
+ 8000cee: f003 ff27 bl 8004b40
+ if (current_measurements_adc_val.epsc_precharge >= (0.95f * current_measurements_adc_val.asms_v)) { // check if precharge is complete (no while loop needed, this function is called by the main while-loop)
+ 8000cf2: 4b57 ldr r3, [pc, #348] @ (8000e50 )
+ 8000cf4: 8b5b ldrh r3, [r3, #26]
+ 8000cf6: ee07 3a90 vmov s15, r3
+ 8000cfa: eeb8 7ae7 vcvt.f32.s32 s14, s15
+ 8000cfe: 4b54 ldr r3, [pc, #336] @ (8000e50 )
+ 8000d00: 8bdb ldrh r3, [r3, #30]
+ 8000d02: ee07 3a90 vmov s15, r3
+ 8000d06: eef8 7ae7 vcvt.f32.s32 s15, s15
+ 8000d0a: eddf 6a52 vldr s13, [pc, #328] @ 8000e54
+ 8000d0e: ee67 7aa6 vmul.f32 s15, s15, s13
+ 8000d12: eeb4 7ae7 vcmpe.f32 s14, s15
+ 8000d16: eef1 fa10 vmrs APSR_nzcv, fpscr
+ 8000d1a: db15 blt.n 8000d48
+ HAL_GPIO_WritePin(IN5_GPIO_Port, IN5_Pin, (GPIO_PinState)UpdatePorts.porta.epsc); // switch on PROFET
+ 8000d1c: 793b ldrb r3, [r7, #4]
+ 8000d1e: f3c3 1300 ubfx r3, r3, #4, #1
+ 8000d22: b2db uxtb r3, r3
+ 8000d24: 461a mov r2, r3
+ 8000d26: f44f 4180 mov.w r1, #16384 @ 0x4000
+ 8000d2a: 4847 ldr r0, [pc, #284] @ (8000e48 )
+ 8000d2c: f003 ff08 bl 8004b40
HAL_GPIO_WritePin(PC_EN_GPIO_Port, PC_EN_Pin, 0); // disengage precharge
- 8000d0e: 2200 movs r2, #0
- 8000d10: 2140 movs r1, #64 @ 0x40
- 8000d12: 4847 ldr r0, [pc, #284] @ (8000e30 )
- 8000d14: f003 fec6 bl 8004aa4
- HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, 0);
- 8000d18: 2200 movs r2, #0
- 8000d1a: 2180 movs r1, #128 @ 0x80
- 8000d1c: 4843 ldr r0, [pc, #268] @ (8000e2c )
- 8000d1e: f003 fec1 bl 8004aa4
+ 8000d30: 2200 movs r2, #0
+ 8000d32: 2140 movs r1, #64 @ 0x40
+ 8000d34: 4844 ldr r0, [pc, #272] @ (8000e48 )
+ 8000d36: f003 ff03 bl 8004b40
prev_epsc_state = UpdatePorts.porta.epsc;
- 8000d22: 793b ldrb r3, [r7, #4]
- 8000d24: f3c3 1300 ubfx r3, r3, #4, #1
- 8000d28: b2db uxtb r3, r3
- 8000d2a: 461a mov r2, r3
- 8000d2c: 4b41 ldr r3, [pc, #260] @ (8000e34 )
- 8000d2e: 601a str r2, [r3, #0]
+ 8000d3a: 793b ldrb r3, [r7, #4]
+ 8000d3c: f3c3 1300 ubfx r3, r3, #4, #1
+ 8000d40: b2db uxtb r3, r3
+ 8000d42: 461a mov r2, r3
+ 8000d44: 4b41 ldr r3, [pc, #260] @ (8000e4c )
+ 8000d46: 601a str r2, [r3, #0]
}
}
if ((prev_epsc_state == 1 && UpdatePorts.porta.epsc == 0) || (prev_epsc_state == UpdatePorts.porta.epsc)){
- 8000d30: 4b40 ldr r3, [pc, #256] @ (8000e34 )
- 8000d32: 681b ldr r3, [r3, #0]
- 8000d34: 2b01 cmp r3, #1
- 8000d36: d105 bne.n 8000d44
- 8000d38: 793b ldrb r3, [r7, #4]
- 8000d3a: f003 0310 and.w r3, r3, #16
- 8000d3e: b2db uxtb r3, r3
- 8000d40: 2b00 cmp r3, #0
- 8000d42: d008 beq.n 8000d56
- 8000d44: 793b ldrb r3, [r7, #4]
- 8000d46: f3c3 1300 ubfx r3, r3, #4, #1
- 8000d4a: b2db uxtb r3, r3
- 8000d4c: 461a mov r2, r3
- 8000d4e: 4b39 ldr r3, [pc, #228] @ (8000e34 )
- 8000d50: 681b ldr r3, [r3, #0]
- 8000d52: 429a cmp r2, r3
- 8000d54: d115 bne.n 8000d82
+ 8000d48: 4b40 ldr r3, [pc, #256] @ (8000e4c )
+ 8000d4a: 681b ldr r3, [r3, #0]
+ 8000d4c: 2b01 cmp r3, #1
+ 8000d4e: d105 bne.n 8000d5c
+ 8000d50: 793b ldrb r3, [r7, #4]
+ 8000d52: f003 0310 and.w r3, r3, #16
+ 8000d56: b2db uxtb r3, r3
+ 8000d58: 2b00 cmp r3, #0
+ 8000d5a: d008 beq.n 8000d6e
+ 8000d5c: 793b ldrb r3, [r7, #4]
+ 8000d5e: f3c3 1300 ubfx r3, r3, #4, #1
+ 8000d62: b2db uxtb r3, r3
+ 8000d64: 461a mov r2, r3
+ 8000d66: 4b39 ldr r3, [pc, #228] @ (8000e4c )
+ 8000d68: 681b ldr r3, [r3, #0]
+ 8000d6a: 429a cmp r2, r3
+ 8000d6c: d115 bne.n 8000d9a
HAL_GPIO_WritePin(PC_EN_GPIO_Port, PC_EN_Pin, 0); // ensure precharge is disabled, when not needed or stopped
- 8000d56: 2200 movs r2, #0
- 8000d58: 2140 movs r1, #64 @ 0x40
- 8000d5a: 4835 ldr r0, [pc, #212] @ (8000e30 )
- 8000d5c: f003 fea2 bl 8004aa4
+ 8000d6e: 2200 movs r2, #0
+ 8000d70: 2140 movs r1, #64 @ 0x40
+ 8000d72: 4835 ldr r0, [pc, #212] @ (8000e48 )
+ 8000d74: f003 fee4 bl 8004b40
HAL_GPIO_WritePin(IN5_GPIO_Port, IN5_Pin, (GPIO_PinState)UpdatePorts.porta.epsc);
- 8000d60: 793b ldrb r3, [r7, #4]
- 8000d62: f3c3 1300 ubfx r3, r3, #4, #1
- 8000d66: b2db uxtb r3, r3
- 8000d68: 461a mov r2, r3
- 8000d6a: f44f 4180 mov.w r1, #16384 @ 0x4000
- 8000d6e: 4830 ldr r0, [pc, #192] @ (8000e30 )
- 8000d70: f003 fe98 bl 8004aa4
+ 8000d78: 793b ldrb r3, [r7, #4]
+ 8000d7a: f3c3 1300 ubfx r3, r3, #4, #1
+ 8000d7e: b2db uxtb r3, r3
+ 8000d80: 461a mov r2, r3
+ 8000d82: f44f 4180 mov.w r1, #16384 @ 0x4000
+ 8000d86: 4830 ldr r0, [pc, #192] @ (8000e48 )
+ 8000d88: f003 feda bl 8004b40
prev_epsc_state = UpdatePorts.porta.epsc;
- 8000d74: 793b ldrb r3, [r7, #4]
- 8000d76: f3c3 1300 ubfx r3, r3, #4, #1
- 8000d7a: b2db uxtb r3, r3
- 8000d7c: 461a mov r2, r3
- 8000d7e: 4b2d ldr r3, [pc, #180] @ (8000e34 )
- 8000d80: 601a str r2, [r3, #0]
+ 8000d8c: 793b ldrb r3, [r7, #4]
+ 8000d8e: f3c3 1300 ubfx r3, r3, #4, #1
+ 8000d92: b2db uxtb r3, r3
+ 8000d94: 461a mov r2, r3
+ 8000d96: 4b2d ldr r3, [pc, #180] @ (8000e4c )
+ 8000d98: 601a str r2, [r3, #0]
}
HAL_GPIO_WritePin(IN6_GPIO_Port, IN6_Pin, (GPIO_PinState)UpdatePorts.porta.inverter); // inverter
- 8000d82: 793b ldrb r3, [r7, #4]
- 8000d84: f3c3 1340 ubfx r3, r3, #5, #1
- 8000d88: b2db uxtb r3, r3
- 8000d8a: 461a mov r2, r3
- 8000d8c: f44f 6180 mov.w r1, #1024 @ 0x400
- 8000d90: f04f 4090 mov.w r0, #1207959552 @ 0x48000000
- 8000d94: f003 fe86 bl 8004aa4
+ 8000d9a: 793b ldrb r3, [r7, #4]
+ 8000d9c: f3c3 1340 ubfx r3, r3, #5, #1
+ 8000da0: b2db uxtb r3, r3
+ 8000da2: 461a mov r2, r3
+ 8000da4: f44f 6180 mov.w r1, #1024 @ 0x400
+ 8000da8: f04f 4090 mov.w r0, #1207959552 @ 0x48000000
+ 8000dac: f003 fec8 bl 8004b40
HAL_GPIO_WritePin(IN7_GPIO_Port, IN7_Pin, (GPIO_PinState)UpdatePorts.porta.lidar); // lidar
- 8000d98: 793b ldrb r3, [r7, #4]
- 8000d9a: f3c3 1380 ubfx r3, r3, #6, #1
- 8000d9e: b2db uxtb r3, r3
- 8000da0: 461a mov r2, r3
- 8000da2: f44f 7180 mov.w r1, #256 @ 0x100
- 8000da6: 4822 ldr r0, [pc, #136] @ (8000e30 )
- 8000da8: f003 fe7c bl 8004aa4
+ 8000db0: 793b ldrb r3, [r7, #4]
+ 8000db2: f3c3 1380 ubfx r3, r3, #6, #1
+ 8000db6: b2db uxtb r3, r3
+ 8000db8: 461a mov r2, r3
+ 8000dba: f44f 7180 mov.w r1, #256 @ 0x100
+ 8000dbe: 4822 ldr r0, [pc, #136] @ (8000e48 )
+ 8000dc0: f003 febe bl 8004b40
HAL_GPIO_WritePin(IN8_GPIO_Port, IN8_Pin, (GPIO_PinState)UpdatePorts.porta.misc); // MISC
- 8000dac: 793b ldrb r3, [r7, #4]
- 8000dae: f3c3 13c0 ubfx r3, r3, #7, #1
- 8000db2: b2db uxtb r3, r3
- 8000db4: 461a mov r2, r3
- 8000db6: f44f 5100 mov.w r1, #8192 @ 0x2000
- 8000dba: 481d ldr r0, [pc, #116] @ (8000e30 )
- 8000dbc: f003 fe72 bl 8004aa4
- HAL_GPIO_WritePin(IN9_GPIO_Port, IN9_Pin, (GPIO_PinState)UpdatePorts.portb.alwayson); // always on -> standardmäßig auf HIGH forcen
- 8000dc0: 797b ldrb r3, [r7, #5]
- 8000dc2: f3c3 0300 ubfx r3, r3, #0, #1
- 8000dc6: b2db uxtb r3, r3
- 8000dc8: 461a mov r2, r3
- 8000dca: f44f 6100 mov.w r1, #2048 @ 0x800
- 8000dce: 4818 ldr r0, [pc, #96] @ (8000e30 )
- 8000dd0: f003 fe68 bl 8004aa4
- HAL_GPIO_WritePin(IN10_GPIO_Port, IN10_Pin, (GPIO_PinState)UpdatePorts.portb.sdc); // SDC -> muss anders controlled werden
- 8000dd4: 797b ldrb r3, [r7, #5]
- 8000dd6: f3c3 0340 ubfx r3, r3, #1, #1
- 8000dda: b2db uxtb r3, r3
- 8000ddc: 461a mov r2, r3
- 8000dde: f44f 7100 mov.w r1, #512 @ 0x200
- 8000de2: 4813 ldr r0, [pc, #76] @ (8000e30 )
- 8000de4: f003 fe5e bl 8004aa4
+ 8000dc4: 793b ldrb r3, [r7, #4]
+ 8000dc6: f3c3 13c0 ubfx r3, r3, #7, #1
+ 8000dca: b2db uxtb r3, r3
+ 8000dcc: 461a mov r2, r3
+ 8000dce: f44f 5100 mov.w r1, #8192 @ 0x2000
+ 8000dd2: 481d ldr r0, [pc, #116] @ (8000e48 )
+ 8000dd4: f003 feb4 bl 8004b40
+ HAL_GPIO_WritePin(IN9_GPIO_Port, IN9_Pin, (GPIO_PinState)UpdatePorts.portb.alwayson); // always on
+ 8000dd8: 797b ldrb r3, [r7, #5]
+ 8000dda: f3c3 0300 ubfx r3, r3, #0, #1
+ 8000dde: b2db uxtb r3, r3
+ 8000de0: 461a mov r2, r3
+ 8000de2: f44f 6100 mov.w r1, #2048 @ 0x800
+ 8000de6: 4818 ldr r0, [pc, #96] @ (8000e48