adbmsFunctionTest/build/debug/Core/Src/ADBMS_Abstraction.lst

3205 lines
150 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ARM GAS /tmp/cc16Zqrx.s page 1
1 .cpu cortex-m4
2 .arch armv7e-m
3 .fpu fpv4-sp-d16
4 .eabi_attribute 27, 1
5 .eabi_attribute 28, 1
6 .eabi_attribute 20, 1
7 .eabi_attribute 21, 1
8 .eabi_attribute 23, 3
9 .eabi_attribute 24, 1
10 .eabi_attribute 25, 1
11 .eabi_attribute 26, 1
12 .eabi_attribute 30, 1
13 .eabi_attribute 34, 1
14 .eabi_attribute 18, 4
15 .file "ADBMS_Abstraction.c"
16 .text
17 .Ltext0:
18 .cfi_sections .debug_frame
19 .file 1 "Core/Src/ADBMS_Abstraction.c"
20 .section .text.amsConfig,"ax",%progbits
21 .align 1
22 .global amsConfig
23 .syntax unified
24 .thumb
25 .thumb_func
27 amsConfig:
28 .LFB125:
1:Core/Src/ADBMS_Abstraction.c **** /*
2:Core/Src/ADBMS_Abstraction.c **** * ADBMS_Abstraction.c
3:Core/Src/ADBMS_Abstraction.c **** *
4:Core/Src/ADBMS_Abstraction.c **** * Created on: 14.07.2022
5:Core/Src/ADBMS_Abstraction.c **** * Author: max
6:Core/Src/ADBMS_Abstraction.c **** */
7:Core/Src/ADBMS_Abstraction.c ****
8:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_Abstraction.h"
9:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_CMD_MAKROS.h"
10:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_LL_Driver.h"
11:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_I2C.h"
12:Core/Src/ADBMS_Abstraction.c **** #include <stddef.h>
13:Core/Src/ADBMS_Abstraction.c ****
14:Core/Src/ADBMS_Abstraction.c **** uint8 numberofcells;
15:Core/Src/ADBMS_Abstraction.c **** uint8 numberofauxchannels;
16:Core/Src/ADBMS_Abstraction.c ****
17:Core/Src/ADBMS_Abstraction.c **** #define CHECK_RETURN(x) \
18:Core/Src/ADBMS_Abstraction.c **** { \
19:Core/Src/ADBMS_Abstraction.c **** uint8 status = x; \
20:Core/Src/ADBMS_Abstraction.c **** if (status != 0) \
21:Core/Src/ADBMS_Abstraction.c **** return status; \
22:Core/Src/ADBMS_Abstraction.c **** }
23:Core/Src/ADBMS_Abstraction.c ****
24:Core/Src/ADBMS_Abstraction.c **** uint8 amsReset() {
25:Core/Src/ADBMS_Abstraction.c **** amsWakeUp();
26:Core/Src/ADBMS_Abstraction.c **** readCMD(SRST, NULL, 0);
27:Core/Src/ADBMS_Abstraction.c **** mcuDelay(10);
28:Core/Src/ADBMS_Abstraction.c **** amsWakeUp();
29:Core/Src/ADBMS_Abstraction.c **** amsStopBalancing();
30:Core/Src/ADBMS_Abstraction.c **** amsConfigOverUnderVoltage(DEFAULT_OV, DEFAULT_UV);
ARM GAS /tmp/cc16Zqrx.s page 2
31:Core/Src/ADBMS_Abstraction.c ****
32:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
33:Core/Src/ADBMS_Abstraction.c ****
34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLRFLAG, buffer, 6)); //clear flags,
35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags
36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas
37:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement
38:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement
39:Core/Src/ADBMS_Abstraction.c ****
40:Core/Src/ADBMS_Abstraction.c **** return 0;
41:Core/Src/ADBMS_Abstraction.c **** }
42:Core/Src/ADBMS_Abstraction.c ****
43:Core/Src/ADBMS_Abstraction.c **** uint8 initAMS(SPI_HandleTypeDef* hspi, uint8 numofcells, uint8 numofaux) {
44:Core/Src/ADBMS_Abstraction.c **** adbmsDriverInit(hspi);
45:Core/Src/ADBMS_Abstraction.c **** numberofcells = numofcells;
46:Core/Src/ADBMS_Abstraction.c **** numberofauxchannels = numofaux;
47:Core/Src/ADBMS_Abstraction.c ****
48:Core/Src/ADBMS_Abstraction.c **** return amsReset();
49:Core/Src/ADBMS_Abstraction.c **** }
50:Core/Src/ADBMS_Abstraction.c ****
51:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfig() {
29 .loc 1 51 19 view -0
30 .cfi_startproc
31 @ args = 0, pretend = 0, frame = 8
32 @ frame_needed = 0, uses_anonymous_args = 0
33 0000 00B5 push {lr}
34 .cfi_def_cfa_offset 4
35 .cfi_offset 14, -4
36 0002 83B0 sub sp, sp, #12
37 .cfi_def_cfa_offset 16
52:Core/Src/ADBMS_Abstraction.c **** uint8 buf[6] = {};
38 .loc 1 52 3 view .LVU1
39 .loc 1 52 9 is_stmt 0 view .LVU2
40 0004 0023 movs r3, #0
41 0006 0093 str r3, [sp]
42 0008 ADF80430 strh r3, [sp, #4] @ movhi
43 .LBB2:
53:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCFGA, buf, CFG_GROUP_A_SIZE));
44 .loc 1 53 3 is_stmt 1 view .LVU3
45 000c 0622 movs r2, #6
46 000e 6946 mov r1, sp
47 0010 0220 movs r0, #2
48 0012 FFF7FEFF bl readCMD
49 .LVL0:
50 .loc 1 53 3 discriminator 1 view .LVU4
51 0016 10B1 cbz r0, .L4
52 .L1:
53 .LBE2:
54:Core/Src/ADBMS_Abstraction.c **** buf[3] = buf[3] | 0b00011000;
55:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCFGA, buf, CFG_GROUP_A_SIZE))
56:Core/Src/ADBMS_Abstraction.c **** }
54 .loc 1 56 1 is_stmt 0 view .LVU5
55 0018 03B0 add sp, sp, #12
56 .cfi_remember_state
57 .cfi_def_cfa_offset 4
58 @ sp needed
59 001a 5DF804FB ldr pc, [sp], #4
ARM GAS /tmp/cc16Zqrx.s page 3
60 .L4:
61 .cfi_restore_state
53:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCFGA, buf, CFG_GROUP_A_SIZE));
62 .loc 1 53 55 is_stmt 1 discriminator 2 view .LVU6
54:Core/Src/ADBMS_Abstraction.c **** buf[3] = buf[3] | 0b00011000;
63 .loc 1 54 3 view .LVU7
54:Core/Src/ADBMS_Abstraction.c **** buf[3] = buf[3] | 0b00011000;
64 .loc 1 54 15 is_stmt 0 view .LVU8
65 001e 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2
54:Core/Src/ADBMS_Abstraction.c **** buf[3] = buf[3] | 0b00011000;
66 .loc 1 54 10 view .LVU9
67 0022 43F01803 orr r3, r3, #24
68 0026 8DF80330 strb r3, [sp, #3]
69 .LBB3:
55:Core/Src/ADBMS_Abstraction.c **** }
70 .loc 1 55 3 is_stmt 1 view .LVU10
71 002a 0622 movs r2, #6
72 002c 6946 mov r1, sp
73 002e 0120 movs r0, #1
74 0030 FFF7FEFF bl writeCMD
75 .LVL1:
55:Core/Src/ADBMS_Abstraction.c **** }
76 .loc 1 55 3 discriminator 1 view .LVU11
77 0034 F0E7 b .L1
78 .LBE3:
79 .cfi_endproc
80 .LFE125:
82 .section .text.amsWakeUp,"ax",%progbits
83 .align 1
84 .global amsWakeUp
85 .syntax unified
86 .thumb
87 .thumb_func
89 amsWakeUp:
90 .LFB126:
57:Core/Src/ADBMS_Abstraction.c ****
58:Core/Src/ADBMS_Abstraction.c **** uint8 amsWakeUp() {
91 .loc 1 58 19 view -0
92 .cfi_startproc
93 @ args = 0, pretend = 0, frame = 8
94 @ frame_needed = 0, uses_anonymous_args = 0
95 0000 00B5 push {lr}
96 .cfi_def_cfa_offset 4
97 .cfi_offset 14, -4
98 0002 83B0 sub sp, sp, #12
99 .cfi_def_cfa_offset 16
59:Core/Src/ADBMS_Abstraction.c **** uint8 buf[6];
100 .loc 1 59 3 view .LVU13
60:Core/Src/ADBMS_Abstraction.c **** return readCMD(RDCFGA, buf, 6);
101 .loc 1 60 3 view .LVU14
102 .loc 1 60 10 is_stmt 0 view .LVU15
103 0004 0622 movs r2, #6
104 0006 6946 mov r1, sp
105 0008 0220 movs r0, #2
106 000a FFF7FEFF bl readCMD
107 .LVL2:
61:Core/Src/ADBMS_Abstraction.c **** }
ARM GAS /tmp/cc16Zqrx.s page 4
108 .loc 1 61 1 view .LVU16
109 000e 03B0 add sp, sp, #12
110 .cfi_def_cfa_offset 4
111 @ sp needed
112 0010 5DF804FB ldr pc, [sp], #4
113 .cfi_endproc
114 .LFE126:
116 .section .text.amsConfigCellMeasurement,"ax",%progbits
117 .align 1
118 .global amsConfigCellMeasurement
119 .syntax unified
120 .thumb
121 .thumb_func
123 amsConfigCellMeasurement:
124 .LVL3:
125 .LFB128:
62:Core/Src/ADBMS_Abstraction.c ****
63:Core/Src/ADBMS_Abstraction.c **** uint8 amsCellMeasurement(Cell_Module* module) {
64:Core/Src/ADBMS_Abstraction.c **** #warning check conversion counter to ensure that continous conversion has not been stopped
65:Core/Src/ADBMS_Abstraction.c **** #warning check for OW conditions: ADSV | ADSV_OW_0 / ADSV_OW_1
66:Core/Src/ADBMS_Abstraction.c **** return amsReadCellVoltages(module);
67:Core/Src/ADBMS_Abstraction.c **** }
68:Core/Src/ADBMS_Abstraction.c ****
69:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigCellMeasurement(uint8 numberofChannels) {
126 .loc 1 69 56 is_stmt 1 view -0
127 .cfi_startproc
128 @ args = 0, pretend = 0, frame = 0
129 @ frame_needed = 0, uses_anonymous_args = 0
130 @ link register save eliminated.
70:Core/Src/ADBMS_Abstraction.c **** numberofcells = numberofChannels;
131 .loc 1 70 3 view .LVU18
132 .loc 1 70 17 is_stmt 0 view .LVU19
133 0000 014B ldr r3, .L8
134 0002 1870 strb r0, [r3]
71:Core/Src/ADBMS_Abstraction.c **** return 0;
135 .loc 1 71 3 is_stmt 1 view .LVU20
72:Core/Src/ADBMS_Abstraction.c **** }
136 .loc 1 72 1 is_stmt 0 view .LVU21
137 0004 0020 movs r0, #0
138 .LVL4:
139 .loc 1 72 1 view .LVU22
140 0006 7047 bx lr
141 .L9:
142 .align 2
143 .L8:
144 0008 00000000 .word numberofcells
145 .cfi_endproc
146 .LFE128:
148 .global __aeabi_i2d
149 .global __aeabi_dmul
150 .global __aeabi_dadd
151 .global __aeabi_d2iz
152 .global __aeabi_d2uiz
153 .section .text.amsAuxAndStatusMeasurement,"ax",%progbits
154 .align 1
155 .global amsAuxAndStatusMeasurement
156 .syntax unified
ARM GAS /tmp/cc16Zqrx.s page 5
157 .thumb
158 .thumb_func
160 amsAuxAndStatusMeasurement:
161 .LVL5:
162 .LFB129:
73:Core/Src/ADBMS_Abstraction.c ****
74:Core/Src/ADBMS_Abstraction.c **** uint8 amsAuxAndStatusMeasurement(Cell_Module* module) {
163 .loc 1 74 55 is_stmt 1 view -0
164 .cfi_startproc
165 @ args = 0, pretend = 0, frame = 16
166 @ frame_needed = 0, uses_anonymous_args = 0
167 .loc 1 74 55 is_stmt 0 view .LVU24
168 0000 10B5 push {r4, lr}
169 .cfi_def_cfa_offset 8
170 .cfi_offset 4, -8
171 .cfi_offset 14, -4
172 0002 84B0 sub sp, sp, #16
173 .cfi_def_cfa_offset 24
174 0004 0446 mov r4, r0
75:Core/Src/ADBMS_Abstraction.c **** uint8 rxbuf[AUX_GROUP_A_SIZE] = {};
175 .loc 1 75 3 is_stmt 1 view .LVU25
176 .loc 1 75 9 is_stmt 0 view .LVU26
177 0006 0023 movs r3, #0
178 0008 0293 str r3, [sp, #8]
179 000a ADF80C30 strh r3, [sp, #12] @ movhi
180 .LBB4:
76:Core/Src/ADBMS_Abstraction.c ****
77:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATC, rxbuf, STATUS_GROUP_C_SIZE));
181 .loc 1 77 3 is_stmt 1 view .LVU27
182 000e 0622 movs r2, #6
183 0010 02A9 add r1, sp, #8
184 0012 3220 movs r0, #50
185 .LVL6:
186 .loc 1 77 3 is_stmt 0 view .LVU28
187 0014 FFF7FEFF bl readCMD
188 .LVL7:
189 .loc 1 77 3 is_stmt 1 discriminator 1 view .LVU29
190 0018 08B1 cbz r0, .L13
191 .L11:
192 .LBE4:
78:Core/Src/ADBMS_Abstraction.c ****
79:Core/Src/ADBMS_Abstraction.c **** module->status.CS_FLT = rxbuf[0] | (rxbuf[1] << 8);
80:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8);
81:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01;
82:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01;
83:Core/Src/ADBMS_Abstraction.c **** module->status.VD_OV = (rxbuf[4] >> 5) & 0x01;
84:Core/Src/ADBMS_Abstraction.c **** module->status.VD_UV = (rxbuf[4] >> 4) & 0x01;
85:Core/Src/ADBMS_Abstraction.c **** module->status.CED = (rxbuf[4] >> 3) & 0x01;
86:Core/Src/ADBMS_Abstraction.c **** module->status.CMED = (rxbuf[4] >> 2) & 0x01;
87:Core/Src/ADBMS_Abstraction.c **** module->status.SED = (rxbuf[4] >> 1) & 0x01;
88:Core/Src/ADBMS_Abstraction.c **** module->status.SMED = (rxbuf[4] >> 0) & 0x01;
89:Core/Src/ADBMS_Abstraction.c **** module->status.VDEL = (rxbuf[5] >> 7) & 0x01;
90:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01;
91:Core/Src/ADBMS_Abstraction.c **** module->status.COMPARE= (rxbuf[5] >> 5) & 0x01;
92:Core/Src/ADBMS_Abstraction.c **** module->status.SPIFLT = (rxbuf[5] >> 4) & 0x01;
93:Core/Src/ADBMS_Abstraction.c **** module->status.SLEEP = (rxbuf[5] >> 3) & 0x01;
94:Core/Src/ADBMS_Abstraction.c **** module->status.THSD = (rxbuf[5] >> 2) & 0x01;
ARM GAS /tmp/cc16Zqrx.s page 6
95:Core/Src/ADBMS_Abstraction.c **** module->status.TMODCHK= (rxbuf[5] >> 1) & 0x01;
96:Core/Src/ADBMS_Abstraction.c **** module->status.OSCCHK = (rxbuf[5] >> 0) & 0x01;
97:Core/Src/ADBMS_Abstraction.c ****
98:Core/Src/ADBMS_Abstraction.c **** if (pollCMD(PLAUX) == 0x0) { //TODO: check for SPI fault
99:Core/Src/ADBMS_Abstraction.c **** return 0; // aux ADC data not ready
100:Core/Src/ADBMS_Abstraction.c **** }
101:Core/Src/ADBMS_Abstraction.c ****
102:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXA, rxbuf, AUX_GROUP_A_SIZE));
103:Core/Src/ADBMS_Abstraction.c ****
104:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[0] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8));
105:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
106:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[2] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
107:Core/Src/ADBMS_Abstraction.c ****
108:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXB, rxbuf, AUX_GROUP_A_SIZE));
109:Core/Src/ADBMS_Abstraction.c ****
110:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[3] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8));
111:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
112:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[5] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
113:Core/Src/ADBMS_Abstraction.c ****
114:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXC, rxbuf, AUX_GROUP_A_SIZE));
115:Core/Src/ADBMS_Abstraction.c ****
116:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[6] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8));
117:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
118:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[8] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
119:Core/Src/ADBMS_Abstraction.c ****
120:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXD, rxbuf, AUX_GROUP_A_SIZE));
121:Core/Src/ADBMS_Abstraction.c ****
122:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[9] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8));
123:Core/Src/ADBMS_Abstraction.c ****
124:Core/Src/ADBMS_Abstraction.c **** uint8 rxbuffer[STATUS_GROUP_A_SIZE];
125:Core/Src/ADBMS_Abstraction.c ****
126:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATA, rxbuffer, STATUS_GROUP_A_SIZE));
127:Core/Src/ADBMS_Abstraction.c ****
128:Core/Src/ADBMS_Abstraction.c **** module->internalDieTemp = rxbuffer[2] | (rxbuffer[3] << 8);
129:Core/Src/ADBMS_Abstraction.c ****
130:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATB, rxbuffer, STATUS_GROUP_B_SIZE));
131:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
132:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
133:Core/Src/ADBMS_Abstraction.c **** module->refVoltage = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
134:Core/Src/ADBMS_Abstraction.c ****
135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement for next cycle
136:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement
137:Core/Src/ADBMS_Abstraction.c ****
138:Core/Src/ADBMS_Abstraction.c **** return 0;
139:Core/Src/ADBMS_Abstraction.c **** }
193 .loc 1 139 1 is_stmt 0 view .LVU30
194 001a 04B0 add sp, sp, #16
195 .cfi_remember_state
196 .cfi_def_cfa_offset 8
197 @ sp needed
198 001c 10BD pop {r4, pc}
199 .LVL8:
200 .L13:
201 .cfi_restore_state
77:Core/Src/ADBMS_Abstraction.c ****
202 .loc 1 77 61 is_stmt 1 discriminator 2 view .LVU31
79:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8);
ARM GAS /tmp/cc16Zqrx.s page 7
203 .loc 1 79 3 view .LVU32
79:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8);
204 .loc 1 79 32 is_stmt 0 view .LVU33
205 001e 9DF80830 ldrb r3, [sp, #8] @ zero_extendqisi2
79:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8);
206 .loc 1 79 44 view .LVU34
207 0022 9DF80920 ldrb r2, [sp, #9] @ zero_extendqisi2
79:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8);
208 .loc 1 79 36 view .LVU35
209 0026 43EA0223 orr r3, r3, r2, lsl #8
79:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8);
210 .loc 1 79 25 view .LVU36
211 002a A386 strh r3, [r4, #52] @ movhi
80:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01;
212 .loc 1 80 3 is_stmt 1 view .LVU37
80:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01;
213 .loc 1 80 32 is_stmt 0 view .LVU38
214 002c 9DF80A30 ldrb r3, [sp, #10] @ zero_extendqisi2
80:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01;
215 .loc 1 80 44 view .LVU39
216 0030 9DF80B20 ldrb r2, [sp, #11] @ zero_extendqisi2
80:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01;
217 .loc 1 80 36 view .LVU40
218 0034 43EA0223 orr r3, r3, r2, lsl #8
80:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01;
219 .loc 1 80 25 view .LVU41
220 0038 E28E ldrh r2, [r4, #54]
221 003a 63F3CF02 bfi r2, r3, #3, #13
222 003e E286 strh r2, [r4, #54] @ movhi
81:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01;
223 .loc 1 81 3 is_stmt 1 view .LVU42
81:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01;
224 .loc 1 81 33 is_stmt 0 view .LVU43
225 0040 9DF80C30 ldrb r3, [sp, #12] @ zero_extendqisi2
81:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01;
226 .loc 1 81 43 view .LVU44
227 0044 D909 lsrs r1, r3, #7
81:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01;
228 .loc 1 81 25 view .LVU45
229 0046 94F83820 ldrb r2, [r4, #56] @ zero_extendqisi2
230 004a 61F30002 bfi r2, r1, #0, #1
231 004e 84F83820 strb r2, [r4, #56]
82:Core/Src/ADBMS_Abstraction.c **** module->status.VD_OV = (rxbuf[4] >> 5) & 0x01;
232 .loc 1 82 3 is_stmt 1 view .LVU46
82:Core/Src/ADBMS_Abstraction.c **** module->status.VD_OV = (rxbuf[4] >> 5) & 0x01;
233 .loc 1 82 43 is_stmt 0 view .LVU47
234 0052 C3F38011 ubfx r1, r3, #6, #1
82:Core/Src/ADBMS_Abstraction.c **** module->status.VD_OV = (rxbuf[4] >> 5) & 0x01;
235 .loc 1 82 25 view .LVU48
236 0056 D2B2 uxtb r2, r2
237 0058 61F34102 bfi r2, r1, #1, #1
238 005c 84F83820 strb r2, [r4, #56]
83:Core/Src/ADBMS_Abstraction.c **** module->status.VD_UV = (rxbuf[4] >> 4) & 0x01;
239 .loc 1 83 3 is_stmt 1 view .LVU49
83:Core/Src/ADBMS_Abstraction.c **** module->status.VD_UV = (rxbuf[4] >> 4) & 0x01;
240 .loc 1 83 43 is_stmt 0 view .LVU50
241 0060 C3F34011 ubfx r1, r3, #5, #1
ARM GAS /tmp/cc16Zqrx.s page 8
83:Core/Src/ADBMS_Abstraction.c **** module->status.VD_UV = (rxbuf[4] >> 4) & 0x01;
242 .loc 1 83 25 view .LVU51
243 0064 D2B2 uxtb r2, r2
244 0066 61F38202 bfi r2, r1, #2, #1
245 006a 84F83820 strb r2, [r4, #56]
84:Core/Src/ADBMS_Abstraction.c **** module->status.CED = (rxbuf[4] >> 3) & 0x01;
246 .loc 1 84 3 is_stmt 1 view .LVU52
84:Core/Src/ADBMS_Abstraction.c **** module->status.CED = (rxbuf[4] >> 3) & 0x01;
247 .loc 1 84 43 is_stmt 0 view .LVU53
248 006e C3F30011 ubfx r1, r3, #4, #1
84:Core/Src/ADBMS_Abstraction.c **** module->status.CED = (rxbuf[4] >> 3) & 0x01;
249 .loc 1 84 25 view .LVU54
250 0072 D2B2 uxtb r2, r2
251 0074 61F3C302 bfi r2, r1, #3, #1
252 0078 84F83820 strb r2, [r4, #56]
85:Core/Src/ADBMS_Abstraction.c **** module->status.CMED = (rxbuf[4] >> 2) & 0x01;
253 .loc 1 85 3 is_stmt 1 view .LVU55
85:Core/Src/ADBMS_Abstraction.c **** module->status.CMED = (rxbuf[4] >> 2) & 0x01;
254 .loc 1 85 43 is_stmt 0 view .LVU56
255 007c C3F3C001 ubfx r1, r3, #3, #1
85:Core/Src/ADBMS_Abstraction.c **** module->status.CMED = (rxbuf[4] >> 2) & 0x01;
256 .loc 1 85 25 view .LVU57
257 0080 D2B2 uxtb r2, r2
258 0082 61F30412 bfi r2, r1, #4, #1
259 0086 84F83820 strb r2, [r4, #56]
86:Core/Src/ADBMS_Abstraction.c **** module->status.SED = (rxbuf[4] >> 1) & 0x01;
260 .loc 1 86 3 is_stmt 1 view .LVU58
86:Core/Src/ADBMS_Abstraction.c **** module->status.SED = (rxbuf[4] >> 1) & 0x01;
261 .loc 1 86 43 is_stmt 0 view .LVU59
262 008a C3F38001 ubfx r1, r3, #2, #1
86:Core/Src/ADBMS_Abstraction.c **** module->status.SED = (rxbuf[4] >> 1) & 0x01;
263 .loc 1 86 25 view .LVU60
264 008e D2B2 uxtb r2, r2
265 0090 61F34512 bfi r2, r1, #5, #1
266 0094 84F83820 strb r2, [r4, #56]
87:Core/Src/ADBMS_Abstraction.c **** module->status.SMED = (rxbuf[4] >> 0) & 0x01;
267 .loc 1 87 3 is_stmt 1 view .LVU61
87:Core/Src/ADBMS_Abstraction.c **** module->status.SMED = (rxbuf[4] >> 0) & 0x01;
268 .loc 1 87 43 is_stmt 0 view .LVU62
269 0098 C3F34001 ubfx r1, r3, #1, #1
87:Core/Src/ADBMS_Abstraction.c **** module->status.SMED = (rxbuf[4] >> 0) & 0x01;
270 .loc 1 87 25 view .LVU63
271 009c D2B2 uxtb r2, r2
272 009e 61F38612 bfi r2, r1, #6, #1
273 00a2 84F83820 strb r2, [r4, #56]
88:Core/Src/ADBMS_Abstraction.c **** module->status.VDEL = (rxbuf[5] >> 7) & 0x01;
274 .loc 1 88 3 is_stmt 1 view .LVU64
88:Core/Src/ADBMS_Abstraction.c **** module->status.VDEL = (rxbuf[5] >> 7) & 0x01;
275 .loc 1 88 25 is_stmt 0 view .LVU65
276 00a6 D2B2 uxtb r2, r2
277 00a8 63F3C712 bfi r2, r3, #7, #1
278 00ac 84F83820 strb r2, [r4, #56]
89:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01;
279 .loc 1 89 3 is_stmt 1 view .LVU66
89:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01;
280 .loc 1 89 33 is_stmt 0 view .LVU67
281 00b0 9DF80D30 ldrb r3, [sp, #13] @ zero_extendqisi2
ARM GAS /tmp/cc16Zqrx.s page 9
89:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01;
282 .loc 1 89 43 view .LVU68
283 00b4 D909 lsrs r1, r3, #7
89:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01;
284 .loc 1 89 25 view .LVU69
285 00b6 94F83920 ldrb r2, [r4, #57] @ zero_extendqisi2
286 00ba 61F30002 bfi r2, r1, #0, #1
287 00be 84F83920 strb r2, [r4, #57]
90:Core/Src/ADBMS_Abstraction.c **** module->status.COMPARE= (rxbuf[5] >> 5) & 0x01;
288 .loc 1 90 3 is_stmt 1 view .LVU70
90:Core/Src/ADBMS_Abstraction.c **** module->status.COMPARE= (rxbuf[5] >> 5) & 0x01;
289 .loc 1 90 43 is_stmt 0 view .LVU71
290 00c2 C3F38011 ubfx r1, r3, #6, #1
90:Core/Src/ADBMS_Abstraction.c **** module->status.COMPARE= (rxbuf[5] >> 5) & 0x01;
291 .loc 1 90 25 view .LVU72
292 00c6 D2B2 uxtb r2, r2
293 00c8 61F34102 bfi r2, r1, #1, #1
294 00cc 84F83920 strb r2, [r4, #57]
91:Core/Src/ADBMS_Abstraction.c **** module->status.SPIFLT = (rxbuf[5] >> 4) & 0x01;
295 .loc 1 91 3 is_stmt 1 view .LVU73
91:Core/Src/ADBMS_Abstraction.c **** module->status.SPIFLT = (rxbuf[5] >> 4) & 0x01;
296 .loc 1 91 43 is_stmt 0 view .LVU74
297 00d0 C3F34011 ubfx r1, r3, #5, #1
91:Core/Src/ADBMS_Abstraction.c **** module->status.SPIFLT = (rxbuf[5] >> 4) & 0x01;
298 .loc 1 91 25 view .LVU75
299 00d4 D2B2 uxtb r2, r2
300 00d6 61F38202 bfi r2, r1, #2, #1
301 00da 84F83920 strb r2, [r4, #57]
92:Core/Src/ADBMS_Abstraction.c **** module->status.SLEEP = (rxbuf[5] >> 3) & 0x01;
302 .loc 1 92 3 is_stmt 1 view .LVU76
92:Core/Src/ADBMS_Abstraction.c **** module->status.SLEEP = (rxbuf[5] >> 3) & 0x01;
303 .loc 1 92 43 is_stmt 0 view .LVU77
304 00de C3F30011 ubfx r1, r3, #4, #1
92:Core/Src/ADBMS_Abstraction.c **** module->status.SLEEP = (rxbuf[5] >> 3) & 0x01;
305 .loc 1 92 25 view .LVU78
306 00e2 D2B2 uxtb r2, r2
307 00e4 61F3C302 bfi r2, r1, #3, #1
308 00e8 84F83920 strb r2, [r4, #57]
93:Core/Src/ADBMS_Abstraction.c **** module->status.THSD = (rxbuf[5] >> 2) & 0x01;
309 .loc 1 93 3 is_stmt 1 view .LVU79
93:Core/Src/ADBMS_Abstraction.c **** module->status.THSD = (rxbuf[5] >> 2) & 0x01;
310 .loc 1 93 43 is_stmt 0 view .LVU80
311 00ec C3F3C001 ubfx r1, r3, #3, #1
93:Core/Src/ADBMS_Abstraction.c **** module->status.THSD = (rxbuf[5] >> 2) & 0x01;
312 .loc 1 93 25 view .LVU81
313 00f0 D2B2 uxtb r2, r2
314 00f2 61F30412 bfi r2, r1, #4, #1
315 00f6 84F83920 strb r2, [r4, #57]
94:Core/Src/ADBMS_Abstraction.c **** module->status.TMODCHK= (rxbuf[5] >> 1) & 0x01;
316 .loc 1 94 3 is_stmt 1 view .LVU82
94:Core/Src/ADBMS_Abstraction.c **** module->status.TMODCHK= (rxbuf[5] >> 1) & 0x01;
317 .loc 1 94 43 is_stmt 0 view .LVU83
318 00fa C3F38001 ubfx r1, r3, #2, #1
94:Core/Src/ADBMS_Abstraction.c **** module->status.TMODCHK= (rxbuf[5] >> 1) & 0x01;
319 .loc 1 94 25 view .LVU84
320 00fe D2B2 uxtb r2, r2
321 0100 61F34512 bfi r2, r1, #5, #1
ARM GAS /tmp/cc16Zqrx.s page 10
322 0104 84F83920 strb r2, [r4, #57]
95:Core/Src/ADBMS_Abstraction.c **** module->status.OSCCHK = (rxbuf[5] >> 0) & 0x01;
323 .loc 1 95 3 is_stmt 1 view .LVU85
95:Core/Src/ADBMS_Abstraction.c **** module->status.OSCCHK = (rxbuf[5] >> 0) & 0x01;
324 .loc 1 95 43 is_stmt 0 view .LVU86
325 0108 C3F34001 ubfx r1, r3, #1, #1
95:Core/Src/ADBMS_Abstraction.c **** module->status.OSCCHK = (rxbuf[5] >> 0) & 0x01;
326 .loc 1 95 25 view .LVU87
327 010c D2B2 uxtb r2, r2
328 010e 61F38612 bfi r2, r1, #6, #1
329 0112 84F83920 strb r2, [r4, #57]
96:Core/Src/ADBMS_Abstraction.c ****
330 .loc 1 96 3 is_stmt 1 view .LVU88
96:Core/Src/ADBMS_Abstraction.c ****
331 .loc 1 96 25 is_stmt 0 view .LVU89
332 0116 D2B2 uxtb r2, r2
333 0118 63F3C712 bfi r2, r3, #7, #1
334 011c 84F83920 strb r2, [r4, #57]
98:Core/Src/ADBMS_Abstraction.c **** return 0; // aux ADC data not ready
335 .loc 1 98 3 is_stmt 1 view .LVU90
98:Core/Src/ADBMS_Abstraction.c **** return 0; // aux ADC data not ready
336 .loc 1 98 7 is_stmt 0 view .LVU91
337 0120 40F21E70 movw r0, #1822
338 0124 FFF7FEFF bl pollCMD
339 .LVL9:
98:Core/Src/ADBMS_Abstraction.c **** return 0; // aux ADC data not ready
340 .loc 1 98 6 discriminator 1 view .LVU92
341 0128 0028 cmp r0, #0
342 012a 3FF476AF beq .L11
343 .LBB5:
102:Core/Src/ADBMS_Abstraction.c ****
344 .loc 1 102 3 is_stmt 1 view .LVU93
345 012e 0622 movs r2, #6
346 0130 02A9 add r1, sp, #8
347 0132 1920 movs r0, #25
348 0134 FFF7FEFF bl readCMD
349 .LVL10:
102:Core/Src/ADBMS_Abstraction.c ****
350 .loc 1 102 3 discriminator 1 view .LVU94
351 0138 0028 cmp r0, #0
352 013a 7FF46EAF bne .L11
353 .LBE5:
102:Core/Src/ADBMS_Abstraction.c ****
354 .loc 1 102 57 discriminator 2 view .LVU95
104:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
355 .loc 1 104 3 view .LVU96
104:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
356 .loc 1 104 28 is_stmt 0 view .LVU97
357 013e 9DF80800 ldrb r0, [sp, #8] @ zero_extendqisi2
358 .LVL11:
104:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
359 .loc 1 104 28 view .LVU98
360 0142 9DF80930 ldrb r3, [sp, #9] @ zero_extendqisi2
361 0146 40EA0320 orr r0, r0, r3, lsl #8
362 014a 00B2 sxth r0, r0
363 014c FFF7FEFF bl __aeabi_i2d
364 .LVL12:
ARM GAS /tmp/cc16Zqrx.s page 11
365 0150 ABA3 adr r3, .L14
366 0152 D3E90023 ldrd r2, [r3]
367 0156 FFF7FEFF bl __aeabi_dmul
368 .LVL13:
369 015a ABA3 adr r3, .L14+8
370 015c D3E90023 ldrd r2, [r3]
371 0160 FFF7FEFF bl __aeabi_dadd
372 .LVL14:
104:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
373 .loc 1 104 26 view .LVU99
374 0164 FFF7FEFF bl __aeabi_d2iz
375 .LVL15:
376 0168 2084 strh r0, [r4, #32] @ movhi
105:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[2] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
377 .loc 1 105 3 is_stmt 1 view .LVU100
105:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[2] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
378 .loc 1 105 28 is_stmt 0 view .LVU101
379 016a 9DF80A00 ldrb r0, [sp, #10] @ zero_extendqisi2
380 016e 9DF80B30 ldrb r3, [sp, #11] @ zero_extendqisi2
381 0172 40EA0320 orr r0, r0, r3, lsl #8
382 0176 00B2 sxth r0, r0
383 0178 FFF7FEFF bl __aeabi_i2d
384 .LVL16:
385 017c A0A3 adr r3, .L14
386 017e D3E90023 ldrd r2, [r3]
387 0182 FFF7FEFF bl __aeabi_dmul
388 .LVL17:
389 0186 A0A3 adr r3, .L14+8
390 0188 D3E90023 ldrd r2, [r3]
391 018c FFF7FEFF bl __aeabi_dadd
392 .LVL18:
105:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[2] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
393 .loc 1 105 26 view .LVU102
394 0190 FFF7FEFF bl __aeabi_d2iz
395 .LVL19:
396 0194 6084 strh r0, [r4, #34] @ movhi
106:Core/Src/ADBMS_Abstraction.c ****
397 .loc 1 106 3 is_stmt 1 view .LVU103
106:Core/Src/ADBMS_Abstraction.c ****
398 .loc 1 106 28 is_stmt 0 view .LVU104
399 0196 9DF80C00 ldrb r0, [sp, #12] @ zero_extendqisi2
400 019a 9DF80D30 ldrb r3, [sp, #13] @ zero_extendqisi2
401 019e 40EA0320 orr r0, r0, r3, lsl #8
402 01a2 00B2 sxth r0, r0
403 01a4 FFF7FEFF bl __aeabi_i2d
404 .LVL20:
405 01a8 95A3 adr r3, .L14
406 01aa D3E90023 ldrd r2, [r3]
407 01ae FFF7FEFF bl __aeabi_dmul
408 .LVL21:
409 01b2 95A3 adr r3, .L14+8
410 01b4 D3E90023 ldrd r2, [r3]
411 01b8 FFF7FEFF bl __aeabi_dadd
412 .LVL22:
106:Core/Src/ADBMS_Abstraction.c ****
413 .loc 1 106 26 view .LVU105
414 01bc FFF7FEFF bl __aeabi_d2iz
ARM GAS /tmp/cc16Zqrx.s page 12
415 .LVL23:
416 01c0 A084 strh r0, [r4, #36] @ movhi
417 .LBB6:
108:Core/Src/ADBMS_Abstraction.c ****
418 .loc 1 108 3 is_stmt 1 view .LVU106
419 01c2 0622 movs r2, #6
420 01c4 02A9 add r1, sp, #8
421 01c6 1A20 movs r0, #26
422 01c8 FFF7FEFF bl readCMD
423 .LVL24:
108:Core/Src/ADBMS_Abstraction.c ****
424 .loc 1 108 3 discriminator 1 view .LVU107
425 01cc 0028 cmp r0, #0
426 01ce 7FF424AF bne .L11
427 .LBE6:
108:Core/Src/ADBMS_Abstraction.c ****
428 .loc 1 108 57 discriminator 2 view .LVU108
110:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
429 .loc 1 110 3 view .LVU109
110:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
430 .loc 1 110 28 is_stmt 0 view .LVU110
431 01d2 9DF80800 ldrb r0, [sp, #8] @ zero_extendqisi2
432 .LVL25:
110:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
433 .loc 1 110 28 view .LVU111
434 01d6 9DF80930 ldrb r3, [sp, #9] @ zero_extendqisi2
435 01da 40EA0320 orr r0, r0, r3, lsl #8
436 01de 00B2 sxth r0, r0
437 01e0 FFF7FEFF bl __aeabi_i2d
438 .LVL26:
439 01e4 86A3 adr r3, .L14
440 01e6 D3E90023 ldrd r2, [r3]
441 01ea FFF7FEFF bl __aeabi_dmul
442 .LVL27:
443 01ee 86A3 adr r3, .L14+8
444 01f0 D3E90023 ldrd r2, [r3]
445 01f4 FFF7FEFF bl __aeabi_dadd
446 .LVL28:
110:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
447 .loc 1 110 26 view .LVU112
448 01f8 FFF7FEFF bl __aeabi_d2iz
449 .LVL29:
450 01fc E084 strh r0, [r4, #38] @ movhi
111:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[5] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
451 .loc 1 111 3 is_stmt 1 view .LVU113
111:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[5] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
452 .loc 1 111 28 is_stmt 0 view .LVU114
453 01fe 9DF80A00 ldrb r0, [sp, #10] @ zero_extendqisi2
454 0202 9DF80B30 ldrb r3, [sp, #11] @ zero_extendqisi2
455 0206 40EA0320 orr r0, r0, r3, lsl #8
456 020a 00B2 sxth r0, r0
457 020c FFF7FEFF bl __aeabi_i2d
458 .LVL30:
459 0210 7BA3 adr r3, .L14
460 0212 D3E90023 ldrd r2, [r3]
461 0216 FFF7FEFF bl __aeabi_dmul
462 .LVL31:
ARM GAS /tmp/cc16Zqrx.s page 13
463 021a 7BA3 adr r3, .L14+8
464 021c D3E90023 ldrd r2, [r3]
465 0220 FFF7FEFF bl __aeabi_dadd
466 .LVL32:
111:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[5] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
467 .loc 1 111 26 view .LVU115
468 0224 FFF7FEFF bl __aeabi_d2iz
469 .LVL33:
470 0228 2085 strh r0, [r4, #40] @ movhi
112:Core/Src/ADBMS_Abstraction.c ****
471 .loc 1 112 3 is_stmt 1 view .LVU116
112:Core/Src/ADBMS_Abstraction.c ****
472 .loc 1 112 28 is_stmt 0 view .LVU117
473 022a 9DF80C00 ldrb r0, [sp, #12] @ zero_extendqisi2
474 022e 9DF80D30 ldrb r3, [sp, #13] @ zero_extendqisi2
475 0232 40EA0320 orr r0, r0, r3, lsl #8
476 0236 00B2 sxth r0, r0
477 0238 FFF7FEFF bl __aeabi_i2d
478 .LVL34:
479 023c 70A3 adr r3, .L14
480 023e D3E90023 ldrd r2, [r3]
481 0242 FFF7FEFF bl __aeabi_dmul
482 .LVL35:
483 0246 70A3 adr r3, .L14+8
484 0248 D3E90023 ldrd r2, [r3]
485 024c FFF7FEFF bl __aeabi_dadd
486 .LVL36:
112:Core/Src/ADBMS_Abstraction.c ****
487 .loc 1 112 26 view .LVU118
488 0250 FFF7FEFF bl __aeabi_d2iz
489 .LVL37:
490 0254 6085 strh r0, [r4, #42] @ movhi
491 .LBB7:
114:Core/Src/ADBMS_Abstraction.c ****
492 .loc 1 114 3 is_stmt 1 view .LVU119
493 0256 0622 movs r2, #6
494 0258 02A9 add r1, sp, #8
495 025a 1B20 movs r0, #27
496 025c FFF7FEFF bl readCMD
497 .LVL38:
114:Core/Src/ADBMS_Abstraction.c ****
498 .loc 1 114 3 discriminator 1 view .LVU120
499 0260 0028 cmp r0, #0
500 0262 7FF4DAAE bne .L11
501 .LBE7:
114:Core/Src/ADBMS_Abstraction.c ****
502 .loc 1 114 57 discriminator 2 view .LVU121
116:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
503 .loc 1 116 3 view .LVU122
116:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
504 .loc 1 116 28 is_stmt 0 view .LVU123
505 0266 9DF80800 ldrb r0, [sp, #8] @ zero_extendqisi2
506 .LVL39:
116:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
507 .loc 1 116 28 view .LVU124
508 026a 9DF80930 ldrb r3, [sp, #9] @ zero_extendqisi2
509 026e 40EA0320 orr r0, r0, r3, lsl #8
ARM GAS /tmp/cc16Zqrx.s page 14
510 0272 00B2 sxth r0, r0
511 0274 FFF7FEFF bl __aeabi_i2d
512 .LVL40:
513 0278 61A3 adr r3, .L14
514 027a D3E90023 ldrd r2, [r3]
515 027e FFF7FEFF bl __aeabi_dmul
516 .LVL41:
517 0282 61A3 adr r3, .L14+8
518 0284 D3E90023 ldrd r2, [r3]
519 0288 FFF7FEFF bl __aeabi_dadd
520 .LVL42:
116:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
521 .loc 1 116 26 view .LVU125
522 028c FFF7FEFF bl __aeabi_d2iz
523 .LVL43:
524 0290 A085 strh r0, [r4, #44] @ movhi
117:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[8] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
525 .loc 1 117 3 is_stmt 1 view .LVU126
117:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[8] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
526 .loc 1 117 28 is_stmt 0 view .LVU127
527 0292 9DF80A00 ldrb r0, [sp, #10] @ zero_extendqisi2
528 0296 9DF80B30 ldrb r3, [sp, #11] @ zero_extendqisi2
529 029a 40EA0320 orr r0, r0, r3, lsl #8
530 029e 00B2 sxth r0, r0
531 02a0 FFF7FEFF bl __aeabi_i2d
532 .LVL44:
533 02a4 56A3 adr r3, .L14
534 02a6 D3E90023 ldrd r2, [r3]
535 02aa FFF7FEFF bl __aeabi_dmul
536 .LVL45:
537 02ae 56A3 adr r3, .L14+8
538 02b0 D3E90023 ldrd r2, [r3]
539 02b4 FFF7FEFF bl __aeabi_dadd
540 .LVL46:
117:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[8] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
541 .loc 1 117 26 view .LVU128
542 02b8 FFF7FEFF bl __aeabi_d2iz
543 .LVL47:
544 02bc E085 strh r0, [r4, #46] @ movhi
118:Core/Src/ADBMS_Abstraction.c ****
545 .loc 1 118 3 is_stmt 1 view .LVU129
118:Core/Src/ADBMS_Abstraction.c ****
546 .loc 1 118 28 is_stmt 0 view .LVU130
547 02be 9DF80C00 ldrb r0, [sp, #12] @ zero_extendqisi2
548 02c2 9DF80D30 ldrb r3, [sp, #13] @ zero_extendqisi2
549 02c6 40EA0320 orr r0, r0, r3, lsl #8
550 02ca 00B2 sxth r0, r0
551 02cc FFF7FEFF bl __aeabi_i2d
552 .LVL48:
553 02d0 4BA3 adr r3, .L14
554 02d2 D3E90023 ldrd r2, [r3]
555 02d6 FFF7FEFF bl __aeabi_dmul
556 .LVL49:
557 02da 4BA3 adr r3, .L14+8
558 02dc D3E90023 ldrd r2, [r3]
559 02e0 FFF7FEFF bl __aeabi_dadd
560 .LVL50:
ARM GAS /tmp/cc16Zqrx.s page 15
118:Core/Src/ADBMS_Abstraction.c ****
561 .loc 1 118 26 view .LVU131
562 02e4 FFF7FEFF bl __aeabi_d2iz
563 .LVL51:
564 02e8 2086 strh r0, [r4, #48] @ movhi
565 .LBB8:
120:Core/Src/ADBMS_Abstraction.c ****
566 .loc 1 120 3 is_stmt 1 view .LVU132
567 02ea 0622 movs r2, #6
568 02ec 02A9 add r1, sp, #8
569 02ee 1F20 movs r0, #31
570 02f0 FFF7FEFF bl readCMD
571 .LVL52:
120:Core/Src/ADBMS_Abstraction.c ****
572 .loc 1 120 3 discriminator 1 view .LVU133
573 02f4 0028 cmp r0, #0
574 02f6 7FF490AE bne .L11
575 .LBE8:
120:Core/Src/ADBMS_Abstraction.c ****
576 .loc 1 120 57 discriminator 2 view .LVU134
122:Core/Src/ADBMS_Abstraction.c ****
577 .loc 1 122 3 view .LVU135
122:Core/Src/ADBMS_Abstraction.c ****
578 .loc 1 122 28 is_stmt 0 view .LVU136
579 02fa 9DF80800 ldrb r0, [sp, #8] @ zero_extendqisi2
580 .LVL53:
122:Core/Src/ADBMS_Abstraction.c ****
581 .loc 1 122 28 view .LVU137
582 02fe 9DF80930 ldrb r3, [sp, #9] @ zero_extendqisi2
583 0302 40EA0320 orr r0, r0, r3, lsl #8
584 0306 00B2 sxth r0, r0
585 0308 FFF7FEFF bl __aeabi_i2d
586 .LVL54:
587 030c 3CA3 adr r3, .L14
588 030e D3E90023 ldrd r2, [r3]
589 0312 FFF7FEFF bl __aeabi_dmul
590 .LVL55:
591 0316 3CA3 adr r3, .L14+8
592 0318 D3E90023 ldrd r2, [r3]
593 031c FFF7FEFF bl __aeabi_dadd
594 .LVL56:
122:Core/Src/ADBMS_Abstraction.c ****
595 .loc 1 122 26 view .LVU138
596 0320 FFF7FEFF bl __aeabi_d2iz
597 .LVL57:
598 0324 6086 strh r0, [r4, #50] @ movhi
124:Core/Src/ADBMS_Abstraction.c ****
599 .loc 1 124 3 is_stmt 1 view .LVU139
600 .LBB9:
126:Core/Src/ADBMS_Abstraction.c ****
601 .loc 1 126 3 view .LVU140
602 0326 0622 movs r2, #6
603 0328 6946 mov r1, sp
604 032a 3020 movs r0, #48
605 032c FFF7FEFF bl readCMD
606 .LVL58:
126:Core/Src/ADBMS_Abstraction.c ****
ARM GAS /tmp/cc16Zqrx.s page 16
607 .loc 1 126 3 discriminator 1 view .LVU141
608 0330 0028 cmp r0, #0
609 0332 7FF472AE bne .L11
610 .LBE9:
126:Core/Src/ADBMS_Abstraction.c ****
611 .loc 1 126 64 discriminator 2 view .LVU142
128:Core/Src/ADBMS_Abstraction.c ****
612 .loc 1 128 3 view .LVU143
128:Core/Src/ADBMS_Abstraction.c ****
613 .loc 1 128 37 is_stmt 0 view .LVU144
614 0336 9DF80230 ldrb r3, [sp, #2] @ zero_extendqisi2
128:Core/Src/ADBMS_Abstraction.c ****
615 .loc 1 128 52 view .LVU145
616 033a 9DF80320 ldrb r2, [sp, #3] @ zero_extendqisi2
128:Core/Src/ADBMS_Abstraction.c ****
617 .loc 1 128 41 view .LVU146
618 033e 43EA0223 orr r3, r3, r2, lsl #8
128:Core/Src/ADBMS_Abstraction.c ****
619 .loc 1 128 27 view .LVU147
620 0342 6387 strh r3, [r4, #58] @ movhi
621 .LBB10:
130:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
622 .loc 1 130 3 is_stmt 1 view .LVU148
623 0344 0622 movs r2, #6
624 0346 6946 mov r1, sp
625 0348 3120 movs r0, #49
626 .LVL59:
130:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
627 .loc 1 130 3 is_stmt 0 view .LVU149
628 034a FFF7FEFF bl readCMD
629 .LVL60:
130:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
630 .loc 1 130 3 is_stmt 1 discriminator 1 view .LVU150
631 034e 0028 cmp r0, #0
632 0350 7FF463AE bne .L11
633 .LBE10:
130:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
634 .loc 1 130 64 discriminator 2 view .LVU151
131:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
635 .loc 1 131 3 view .LVU152
131:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
636 .loc 1 131 34 is_stmt 0 view .LVU153
637 0354 9DF80000 ldrb r0, [sp] @ zero_extendqisi2
638 .LVL61:
131:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
639 .loc 1 131 34 view .LVU154
640 0358 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2
641 035c 40EA0320 orr r0, r0, r3, lsl #8
642 0360 00B2 sxth r0, r0
643 0362 FFF7FEFF bl __aeabi_i2d
644 .LVL62:
645 0366 26A3 adr r3, .L14
646 0368 D3E90023 ldrd r2, [r3]
647 036c FFF7FEFF bl __aeabi_dmul
648 .LVL63:
649 0370 25A3 adr r3, .L14+8
650 0372 D3E90023 ldrd r2, [r3]
ARM GAS /tmp/cc16Zqrx.s page 17
651 0376 FFF7FEFF bl __aeabi_dadd
652 .LVL64:
131:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
653 .loc 1 131 32 view .LVU155
654 037a FFF7FEFF bl __aeabi_d2uiz
655 .LVL65:
656 037e E087 strh r0, [r4, #62] @ movhi
132:Core/Src/ADBMS_Abstraction.c **** module->refVoltage = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
657 .loc 1 132 3 is_stmt 1 view .LVU156
132:Core/Src/ADBMS_Abstraction.c **** module->refVoltage = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
658 .loc 1 132 34 is_stmt 0 view .LVU157
659 0380 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2
660 0384 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2
661 0388 40EA0320 orr r0, r0, r3, lsl #8
662 038c 00B2 sxth r0, r0
663 038e FFF7FEFF bl __aeabi_i2d
664 .LVL66:
665 0392 1BA3 adr r3, .L14
666 0394 D3E90023 ldrd r2, [r3]
667 0398 FFF7FEFF bl __aeabi_dmul
668 .LVL67:
669 039c 1AA3 adr r3, .L14+8
670 039e D3E90023 ldrd r2, [r3]
671 03a2 FFF7FEFF bl __aeabi_dadd
672 .LVL68:
132:Core/Src/ADBMS_Abstraction.c **** module->refVoltage = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
673 .loc 1 132 32 view .LVU158
674 03a6 FFF7FEFF bl __aeabi_d2uiz
675 .LVL69:
676 03aa A087 strh r0, [r4, #60] @ movhi
133:Core/Src/ADBMS_Abstraction.c ****
677 .loc 1 133 3 is_stmt 1 view .LVU159
133:Core/Src/ADBMS_Abstraction.c ****
678 .loc 1 133 34 is_stmt 0 view .LVU160
679 03ac 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2
680 03b0 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2
681 03b4 40EA0320 orr r0, r0, r3, lsl #8
682 03b8 00B2 sxth r0, r0
683 03ba FFF7FEFF bl __aeabi_i2d
684 .LVL70:
685 03be 10A3 adr r3, .L14
686 03c0 D3E90023 ldrd r2, [r3]
687 03c4 FFF7FEFF bl __aeabi_dmul
688 .LVL71:
689 03c8 0FA3 adr r3, .L14+8
690 03ca D3E90023 ldrd r2, [r3]
691 03ce FFF7FEFF bl __aeabi_dadd
692 .LVL72:
133:Core/Src/ADBMS_Abstraction.c ****
693 .loc 1 133 32 view .LVU161
694 03d2 FFF7FEFF bl __aeabi_d2uiz
695 .LVL73:
696 03d6 A4F84200 strh r0, [r4, #66] @ movhi
697 .LBB11:
135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement
698 .loc 1 135 3 is_stmt 1 view .LVU162
699 03da 0022 movs r2, #0
ARM GAS /tmp/cc16Zqrx.s page 18
700 .LVL74:
135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement
701 .loc 1 135 3 is_stmt 0 view .LVU163
702 03dc 1146 mov r1, r2
703 03de 40F21140 movw r0, #1041
704 03e2 FFF7FEFF bl writeCMD
705 .LVL75:
135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement
706 .loc 1 135 3 is_stmt 1 discriminator 1 view .LVU164
707 03e6 0028 cmp r0, #0
708 03e8 7FF417AE bne .L11
709 .LBE11:
135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement
710 .loc 1 135 40 discriminator 2 view .LVU165
711 .LBB12:
136:Core/Src/ADBMS_Abstraction.c ****
712 .loc 1 136 3 view .LVU166
713 03ec 0022 movs r2, #0
714 .LVL76:
136:Core/Src/ADBMS_Abstraction.c ****
715 .loc 1 136 3 is_stmt 0 view .LVU167
716 03ee 1146 mov r1, r2
717 03f0 40F20140 movw r0, #1025
718 .LVL77:
136:Core/Src/ADBMS_Abstraction.c ****
719 .loc 1 136 3 view .LVU168
720 03f4 FFF7FEFF bl writeCMD
721 .LVL78:
136:Core/Src/ADBMS_Abstraction.c ****
722 .loc 1 136 3 is_stmt 1 discriminator 1 view .LVU169
723 03f8 0FE6 b .L11
724 .L15:
725 03fa 00BFAFF3 .align 3
725 0080
726 .L14:
727 0400 33333333 .word 858993459
728 0404 3333C33F .word 1069757235
729 0408 00000000 .word 0
730 040c 00709740 .word 1083666432
731 .LBE12:
732 .cfi_endproc
733 .LFE129:
735 .section .text.amsConfigBalancing,"ax",%progbits
736 .align 1
737 .global amsConfigBalancing
738 .syntax unified
739 .thumb
740 .thumb_func
742 amsConfigBalancing:
743 .LVL79:
744 .LFB130:
140:Core/Src/ADBMS_Abstraction.c ****
141:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigBalancing(uint32 channels, uint8 dutyCycle) {
745 .loc 1 141 60 view -0
746 .cfi_startproc
747 @ args = 0, pretend = 0, frame = 16
748 @ frame_needed = 0, uses_anonymous_args = 0
ARM GAS /tmp/cc16Zqrx.s page 19
749 .loc 1 141 60 is_stmt 0 view .LVU171
750 0000 30B5 push {r4, r5, lr}
751 .cfi_def_cfa_offset 12
752 .cfi_offset 4, -12
753 .cfi_offset 5, -8
754 .cfi_offset 14, -4
755 0002 85B0 sub sp, sp, #20
756 .cfi_def_cfa_offset 32
757 0004 0446 mov r4, r0
758 0006 0D46 mov r5, r1
142:Core/Src/ADBMS_Abstraction.c **** uint8 buffer_a[PWM_GROUP_A_SIZE] = {};
759 .loc 1 142 3 is_stmt 1 view .LVU172
760 .loc 1 142 9 is_stmt 0 view .LVU173
761 0008 0023 movs r3, #0
762 000a 0293 str r3, [sp, #8]
763 000c ADF80C30 strh r3, [sp, #12] @ movhi
143:Core/Src/ADBMS_Abstraction.c **** uint8 buffer_b[PWM_GROUP_B_SIZE] = {};
764 .loc 1 143 3 is_stmt 1 view .LVU174
765 .loc 1 143 9 is_stmt 0 view .LVU175
766 0010 ADF80430 strh r3, [sp, #4] @ movhi
767 .LBB13:
144:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMA, buffer_a, CFG_GROUP_A_SIZE));
768 .loc 1 144 3 is_stmt 1 view .LVU176
769 0014 0622 movs r2, #6
770 0016 02A9 add r1, sp, #8
771 .LVL80:
772 .loc 1 144 3 is_stmt 0 view .LVU177
773 0018 2220 movs r0, #34
774 .LVL81:
775 .loc 1 144 3 view .LVU178
776 001a FFF7FEFF bl readCMD
777 .LVL82:
778 .loc 1 144 3 is_stmt 1 discriminator 1 view .LVU179
779 001e 0346 mov r3, r0
780 0020 10B1 cbz r0, .L32
781 .LVL83:
782 .L17:
783 .loc 1 144 3 is_stmt 0 discriminator 1 view .LVU180
784 .LBE13:
145:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, CFG_GROUP_B_SIZE));
146:Core/Src/ADBMS_Abstraction.c ****
147:Core/Src/ADBMS_Abstraction.c **** if (dutyCycle > 0x0F) { // there are only 4 bits for duty cycle
148:Core/Src/ADBMS_Abstraction.c **** return 1;
149:Core/Src/ADBMS_Abstraction.c **** }
150:Core/Src/ADBMS_Abstraction.c ****
151:Core/Src/ADBMS_Abstraction.c **** #warning fixme
152:Core/Src/ADBMS_Abstraction.c ****
153:Core/Src/ADBMS_Abstraction.c **** for (size_t i = 0; i < 16; i += 2) {
154:Core/Src/ADBMS_Abstraction.c **** if (i < 12) { // cells 0, 1 are in regbuffer[0], cells 2, 3 in regbuffer[1], ...
155:Core/Src/ADBMS_Abstraction.c **** buffer_a[i / 2] = ((channels & (1 << (i + 1))) ? (dutyCycle << 4) : 0) |
156:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
157:Core/Src/ADBMS_Abstraction.c **** } else {
158:Core/Src/ADBMS_Abstraction.c **** buffer_b[(i - 12) / 2] = ((channels & (1 << (i + 1))) ? (dutyCycle << 4) : 0) |
159:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
160:Core/Src/ADBMS_Abstraction.c **** }
161:Core/Src/ADBMS_Abstraction.c **** }
162:Core/Src/ADBMS_Abstraction.c ****
ARM GAS /tmp/cc16Zqrx.s page 20
163:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMA, buffer_a, CFG_GROUP_A_SIZE));
164:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMB, buffer_b, CFG_GROUP_B_SIZE));
165:Core/Src/ADBMS_Abstraction.c ****
166:Core/Src/ADBMS_Abstraction.c **** return 0;
167:Core/Src/ADBMS_Abstraction.c **** }
785 .loc 1 167 1 view .LVU181
786 0022 1846 mov r0, r3
787 0024 05B0 add sp, sp, #20
788 .cfi_remember_state
789 .cfi_def_cfa_offset 12
790 @ sp needed
791 0026 30BD pop {r4, r5, pc}
792 .LVL84:
793 .L32:
794 .cfi_restore_state
144:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMA, buffer_a, CFG_GROUP_A_SIZE));
795 .loc 1 144 60 is_stmt 1 discriminator 2 view .LVU182
796 .LBB14:
145:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, CFG_GROUP_B_SIZE));
797 .loc 1 145 3 view .LVU183
798 0028 0622 movs r2, #6
799 002a 01A9 add r1, sp, #4
800 002c 2320 movs r0, #35
801 .LVL85:
145:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, CFG_GROUP_B_SIZE));
802 .loc 1 145 3 is_stmt 0 view .LVU184
803 002e FFF7FEFF bl readCMD
804 .LVL86:
145:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, CFG_GROUP_B_SIZE));
805 .loc 1 145 3 is_stmt 1 discriminator 1 view .LVU185
806 0032 0346 mov r3, r0
807 0034 0028 cmp r0, #0
808 0036 F4D1 bne .L17
809 .LBE14:
145:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, CFG_GROUP_B_SIZE));
810 .loc 1 145 60 discriminator 2 view .LVU186
147:Core/Src/ADBMS_Abstraction.c **** return 1;
811 .loc 1 147 3 view .LVU187
147:Core/Src/ADBMS_Abstraction.c **** return 1;
812 .loc 1 147 6 is_stmt 0 view .LVU188
813 0038 0F2D cmp r5, #15
814 003a 44D8 bhi .L26
815 .LBB15:
153:Core/Src/ADBMS_Abstraction.c **** if (i < 12) { // cells 0, 1 are in regbuffer[0], cells 2, 3 in regbuffer[1], ...
816 .loc 1 153 15 view .LVU189
817 003c 0023 movs r3, #0
818 003e 09E0 b .L18
819 .LVL87:
820 .L27:
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
821 .loc 1 155 78 discriminator 2 view .LVU190
822 0040 0022 movs r2, #0
823 0042 12E0 b .L20
824 .L28:
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
825 .loc 1 155 78 discriminator 6 view .LVU191
826 0044 0021 movs r1, #0
ARM GAS /tmp/cc16Zqrx.s page 21
827 .L21:
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
828 .loc 1 155 78 discriminator 8 view .LVU192
829 0046 0A43 orrs r2, r2, r1
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
830 .loc 1 155 23 discriminator 8 view .LVU193
831 0048 04A9 add r1, sp, #16
832 004a 01EB5301 add r1, r1, r3, lsr #1
833 004e 01F8082C strb r2, [r1, #-8]
834 .L22:
153:Core/Src/ADBMS_Abstraction.c **** if (i < 12) { // cells 0, 1 are in regbuffer[0], cells 2, 3 in regbuffer[1], ...
835 .loc 1 153 32 is_stmt 1 discriminator 2 view .LVU194
836 0052 0233 adds r3, r3, #2
837 .LVL88:
838 .L18:
153:Core/Src/ADBMS_Abstraction.c **** if (i < 12) { // cells 0, 1 are in regbuffer[0], cells 2, 3 in regbuffer[1], ...
839 .loc 1 153 24 discriminator 1 view .LVU195
840 0054 0F2B cmp r3, #15
841 0056 27D8 bhi .L33
154:Core/Src/ADBMS_Abstraction.c **** buffer_a[i / 2] = ((channels & (1 << (i + 1))) ? (dutyCycle << 4) : 0) |
842 .loc 1 154 5 view .LVU196
154:Core/Src/ADBMS_Abstraction.c **** buffer_a[i / 2] = ((channels & (1 << (i + 1))) ? (dutyCycle << 4) : 0) |
843 .loc 1 154 8 is_stmt 0 view .LVU197
844 0058 0B2B cmp r3, #11
845 005a 0CD8 bhi .L19
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
846 .loc 1 155 7 is_stmt 1 view .LVU198
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
847 .loc 1 155 47 is_stmt 0 view .LVU199
848 005c 591C adds r1, r3, #1
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
849 .loc 1 155 41 view .LVU200
850 005e 0122 movs r2, #1
851 0060 8A40 lsls r2, r2, r1
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
852 .loc 1 155 78 view .LVU201
853 0062 2242 tst r2, r4
854 0064 ECD0 beq .L27
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
855 .loc 1 155 78 discriminator 1 view .LVU202
856 0066 2A01 lsls r2, r5, #4
857 0068 52B2 sxtb r2, r2
858 .L20:
156:Core/Src/ADBMS_Abstraction.c **** } else {
859 .loc 1 156 42 view .LVU203
860 006a 0120 movs r0, #1
861 006c 9840 lsls r0, r0, r3
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
862 .loc 1 155 78 discriminator 4 view .LVU204
863 006e 2042 tst r0, r4
864 0070 E8D0 beq .L28
155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
865 .loc 1 155 78 discriminator 5 view .LVU205
866 0072 69B2 sxtb r1, r5
867 0074 E7E7 b .L21
868 .L19:
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
ARM GAS /tmp/cc16Zqrx.s page 22
869 .loc 1 158 7 is_stmt 1 view .LVU206
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
870 .loc 1 158 54 is_stmt 0 view .LVU207
871 0076 591C adds r1, r3, #1
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
872 .loc 1 158 48 view .LVU208
873 0078 0122 movs r2, #1
874 007a 8A40 lsls r2, r2, r1
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
875 .loc 1 158 85 view .LVU209
876 007c 2242 tst r2, r4
877 007e 0FD0 beq .L29
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
878 .loc 1 158 85 discriminator 1 view .LVU210
879 0080 2901 lsls r1, r5, #4
880 0082 49B2 sxtb r1, r1
881 .L23:
159:Core/Src/ADBMS_Abstraction.c **** }
882 .loc 1 159 49 view .LVU211
883 0084 0122 movs r2, #1
884 0086 9A40 lsls r2, r2, r3
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
885 .loc 1 158 85 discriminator 4 view .LVU212
886 0088 2242 tst r2, r4
887 008a 0BD0 beq .L30
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
888 .loc 1 158 85 discriminator 5 view .LVU213
889 008c 68B2 sxtb r0, r5
890 .L24:
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
891 .loc 1 158 19 discriminator 8 view .LVU214
892 008e A3F10C02 sub r2, r3, #12
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
893 .loc 1 158 85 discriminator 8 view .LVU215
894 0092 0143 orrs r1, r1, r0
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
895 .loc 1 158 30 discriminator 8 view .LVU216
896 0094 04A8 add r0, sp, #16
897 0096 00EB5202 add r2, r0, r2, lsr #1
898 009a 02F80C1C strb r1, [r2, #-12]
899 009e D8E7 b .L22
900 .L29:
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
901 .loc 1 158 85 discriminator 2 view .LVU217
902 00a0 0021 movs r1, #0
903 00a2 EFE7 b .L23
904 .L30:
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
905 .loc 1 158 85 discriminator 6 view .LVU218
906 00a4 0020 movs r0, #0
907 00a6 F2E7 b .L24
908 .L33:
158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0);
909 .loc 1 158 85 discriminator 6 view .LVU219
910 .LBE15:
911 .LBB16:
163:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMB, buffer_b, CFG_GROUP_B_SIZE));
ARM GAS /tmp/cc16Zqrx.s page 23
912 .loc 1 163 3 is_stmt 1 view .LVU220
913 00a8 0622 movs r2, #6
914 00aa 02A9 add r1, sp, #8
915 00ac 2020 movs r0, #32
916 00ae FFF7FEFF bl writeCMD
917 .LVL89:
163:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMB, buffer_b, CFG_GROUP_B_SIZE));
918 .loc 1 163 3 discriminator 1 view .LVU221
919 00b2 0346 mov r3, r0
920 00b4 0028 cmp r0, #0
921 00b6 B4D1 bne .L17
922 .LBE16:
163:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMB, buffer_b, CFG_GROUP_B_SIZE));
923 .loc 1 163 61 discriminator 2 view .LVU222
924 .LBB17:
164:Core/Src/ADBMS_Abstraction.c ****
925 .loc 1 164 3 view .LVU223
926 00b8 0622 movs r2, #6
927 00ba 01A9 add r1, sp, #4
928 00bc 2120 movs r0, #33
929 .LVL90:
164:Core/Src/ADBMS_Abstraction.c ****
930 .loc 1 164 3 is_stmt 0 view .LVU224
931 00be FFF7FEFF bl writeCMD
932 .LVL91:
164:Core/Src/ADBMS_Abstraction.c ****
933 .loc 1 164 3 view .LVU225
934 00c2 0346 mov r3, r0
935 .LVL92:
164:Core/Src/ADBMS_Abstraction.c ****
936 .loc 1 164 3 is_stmt 1 discriminator 1 view .LVU226
937 00c4 ADE7 b .L17
938 .LVL93:
939 .L26:
164:Core/Src/ADBMS_Abstraction.c ****
940 .loc 1 164 3 is_stmt 0 discriminator 1 view .LVU227
941 .LBE17:
148:Core/Src/ADBMS_Abstraction.c **** }
942 .loc 1 148 12 view .LVU228
943 00c6 0123 movs r3, #1
944 00c8 ABE7 b .L17
945 .cfi_endproc
946 .LFE130:
948 .section .text.amsStartBalancing,"ax",%progbits
949 .align 1
950 .global amsStartBalancing
951 .syntax unified
952 .thumb
953 .thumb_func
955 amsStartBalancing:
956 .LVL94:
957 .LFB131:
168:Core/Src/ADBMS_Abstraction.c ****
169:Core/Src/ADBMS_Abstraction.c **** uint8 amsStartBalancing(uint8 dutyCycle) { return writeCMD(UNMUTE, NULL, 0); }
958 .loc 1 169 42 is_stmt 1 view -0
959 .cfi_startproc
960 @ args = 0, pretend = 0, frame = 0
ARM GAS /tmp/cc16Zqrx.s page 24
961 @ frame_needed = 0, uses_anonymous_args = 0
962 .loc 1 169 42 is_stmt 0 view .LVU230
963 0000 08B5 push {r3, lr}
964 .cfi_def_cfa_offset 8
965 .cfi_offset 3, -8
966 .cfi_offset 14, -4
967 .loc 1 169 44 is_stmt 1 view .LVU231
968 .loc 1 169 51 is_stmt 0 view .LVU232
969 0002 0022 movs r2, #0
970 0004 1146 mov r1, r2
971 0006 2920 movs r0, #41
972 .LVL95:
973 .loc 1 169 51 view .LVU233
974 0008 FFF7FEFF bl writeCMD
975 .LVL96:
976 .loc 1 169 78 view .LVU234
977 000c 08BD pop {r3, pc}
978 .cfi_endproc
979 .LFE131:
981 .section .text.amsStopBalancing,"ax",%progbits
982 .align 1
983 .global amsStopBalancing
984 .syntax unified
985 .thumb
986 .thumb_func
988 amsStopBalancing:
989 .LFB132:
170:Core/Src/ADBMS_Abstraction.c ****
171:Core/Src/ADBMS_Abstraction.c **** uint8 amsStopBalancing() { return writeCMD(MUTE, NULL, 0); }
990 .loc 1 171 26 is_stmt 1 view -0
991 .cfi_startproc
992 @ args = 0, pretend = 0, frame = 0
993 @ frame_needed = 0, uses_anonymous_args = 0
994 0000 08B5 push {r3, lr}
995 .cfi_def_cfa_offset 8
996 .cfi_offset 3, -8
997 .cfi_offset 14, -4
998 .loc 1 171 28 view .LVU236
999 .loc 1 171 35 is_stmt 0 view .LVU237
1000 0002 0022 movs r2, #0
1001 0004 1146 mov r1, r2
1002 0006 2820 movs r0, #40
1003 0008 FFF7FEFF bl writeCMD
1004 .LVL97:
1005 .loc 1 171 60 view .LVU238
1006 000c 08BD pop {r3, pc}
1007 .cfi_endproc
1008 .LFE132:
1010 .section .text.amsSelfTest,"ax",%progbits
1011 .align 1
1012 .global amsSelfTest
1013 .syntax unified
1014 .thumb
1015 .thumb_func
1017 amsSelfTest:
1018 .LFB133:
172:Core/Src/ADBMS_Abstraction.c ****
ARM GAS /tmp/cc16Zqrx.s page 25
173:Core/Src/ADBMS_Abstraction.c **** uint8 amsSelfTest() { return 0; }
1019 .loc 1 173 21 is_stmt 1 view -0
1020 .cfi_startproc
1021 @ args = 0, pretend = 0, frame = 0
1022 @ frame_needed = 0, uses_anonymous_args = 0
1023 @ link register save eliminated.
1024 .loc 1 173 23 view .LVU240
1025 .loc 1 173 33 is_stmt 0 view .LVU241
1026 0000 0020 movs r0, #0
1027 0002 7047 bx lr
1028 .cfi_endproc
1029 .LFE133:
1031 .section .text.amsConfigOverUnderVoltage,"ax",%progbits
1032 .align 1
1033 .global amsConfigOverUnderVoltage
1034 .syntax unified
1035 .thumb
1036 .thumb_func
1038 amsConfigOverUnderVoltage:
1039 .LVL98:
1040 .LFB134:
174:Core/Src/ADBMS_Abstraction.c ****
175:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigOverUnderVoltage(uint16 overVoltage, uint16 underVoltage) {
1041 .loc 1 175 74 is_stmt 1 view -0
1042 .cfi_startproc
1043 @ args = 0, pretend = 0, frame = 8
1044 @ frame_needed = 0, uses_anonymous_args = 0
176:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[CFG_GROUP_A_SIZE];
1045 .loc 1 176 3 view .LVU243
177:Core/Src/ADBMS_Abstraction.c ****
178:Core/Src/ADBMS_Abstraction.c **** if (underVoltage & 0xF000 || overVoltage & 0xF000) { // only 12 bits allowed
1046 .loc 1 178 3 view .LVU244
1047 .loc 1 178 6 is_stmt 0 view .LVU245
1048 0000 B1F5805F cmp r1, #4096
1049 0004 30D2 bcs .L41
175:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[CFG_GROUP_A_SIZE];
1050 .loc 1 175 74 view .LVU246
1051 0006 30B5 push {r4, r5, lr}
1052 .cfi_def_cfa_offset 12
1053 .cfi_offset 4, -12
1054 .cfi_offset 5, -8
1055 .cfi_offset 14, -4
1056 0008 83B0 sub sp, sp, #12
1057 .cfi_def_cfa_offset 24
1058 000a 0546 mov r5, r0
1059 000c 0C46 mov r4, r1
1060 .loc 1 178 29 discriminator 1 view .LVU247
1061 000e B0F5805F cmp r0, #4096
1062 0012 02D3 bcc .L47
179:Core/Src/ADBMS_Abstraction.c **** return 1;
1063 .loc 1 179 12 view .LVU248
1064 0014 0120 movs r0, #1
1065 .LVL99:
1066 .L40:
180:Core/Src/ADBMS_Abstraction.c **** }
181:Core/Src/ADBMS_Abstraction.c ****
182:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCFGB, buffer, CFG_GROUP_A_SIZE));
ARM GAS /tmp/cc16Zqrx.s page 26
183:Core/Src/ADBMS_Abstraction.c ****
184:Core/Src/ADBMS_Abstraction.c **** //UV
185:Core/Src/ADBMS_Abstraction.c **** buffer[0] = (uint8) (underVoltage & 0xFF);
186:Core/Src/ADBMS_Abstraction.c **** buffer[1] &= 0xF0;
187:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) ((underVoltage >> 8) & 0x0F);
188:Core/Src/ADBMS_Abstraction.c ****
189:Core/Src/ADBMS_Abstraction.c **** //OV
190:Core/Src/ADBMS_Abstraction.c **** buffer[1] &= 0x0F;
191:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) (overVoltage << 4);
192:Core/Src/ADBMS_Abstraction.c **** buffer[2] = (uint8) (overVoltage >> 4);
193:Core/Src/ADBMS_Abstraction.c ****
194:Core/Src/ADBMS_Abstraction.c **** return writeCMD(WRCFGB, buffer, CFG_GROUP_A_SIZE);
195:Core/Src/ADBMS_Abstraction.c **** }
1067 .loc 1 195 1 view .LVU249
1068 0016 03B0 add sp, sp, #12
1069 .cfi_remember_state
1070 .cfi_def_cfa_offset 12
1071 @ sp needed
1072 0018 30BD pop {r4, r5, pc}
1073 .LVL100:
1074 .L47:
1075 .cfi_restore_state
1076 .LBB18:
182:Core/Src/ADBMS_Abstraction.c ****
1077 .loc 1 182 3 is_stmt 1 view .LVU250
1078 001a 0622 movs r2, #6
1079 001c 6946 mov r1, sp
1080 .LVL101:
182:Core/Src/ADBMS_Abstraction.c ****
1081 .loc 1 182 3 is_stmt 0 view .LVU251
1082 001e 2620 movs r0, #38
1083 .LVL102:
182:Core/Src/ADBMS_Abstraction.c ****
1084 .loc 1 182 3 view .LVU252
1085 0020 FFF7FEFF bl readCMD
1086 .LVL103:
182:Core/Src/ADBMS_Abstraction.c ****
1087 .loc 1 182 3 is_stmt 1 discriminator 1 view .LVU253
1088 0024 0028 cmp r0, #0
1089 0026 F6D1 bne .L40
1090 .LBE18:
182:Core/Src/ADBMS_Abstraction.c ****
1091 .loc 1 182 58 discriminator 2 view .LVU254
185:Core/Src/ADBMS_Abstraction.c **** buffer[1] &= 0xF0;
1092 .loc 1 185 3 view .LVU255
185:Core/Src/ADBMS_Abstraction.c **** buffer[1] &= 0xF0;
1093 .loc 1 185 13 is_stmt 0 view .LVU256
1094 0028 8DF80040 strb r4, [sp]
186:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) ((underVoltage >> 8) & 0x0F);
1095 .loc 1 186 3 is_stmt 1 view .LVU257
186:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) ((underVoltage >> 8) & 0x0F);
1096 .loc 1 186 9 is_stmt 0 view .LVU258
1097 002c 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2
186:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) ((underVoltage >> 8) & 0x0F);
1098 .loc 1 186 13 view .LVU259
1099 0030 03F0F003 and r3, r3, #240
1100 0034 8DF80130 strb r3, [sp, #1]
ARM GAS /tmp/cc16Zqrx.s page 27
187:Core/Src/ADBMS_Abstraction.c ****
1101 .loc 1 187 3 is_stmt 1 view .LVU260
187:Core/Src/ADBMS_Abstraction.c ****
1102 .loc 1 187 16 is_stmt 0 view .LVU261
1103 0038 C4F30324 ubfx r4, r4, #8, #4
1104 .LVL104:
187:Core/Src/ADBMS_Abstraction.c ****
1105 .loc 1 187 13 view .LVU262
1106 003c 2343 orrs r3, r3, r4
1107 003e 8DF80130 strb r3, [sp, #1]
190:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) (overVoltage << 4);
1108 .loc 1 190 3 is_stmt 1 view .LVU263
190:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) (overVoltage << 4);
1109 .loc 1 190 13 is_stmt 0 view .LVU264
1110 0042 03F00F03 and r3, r3, #15
1111 0046 8DF80130 strb r3, [sp, #1]
191:Core/Src/ADBMS_Abstraction.c **** buffer[2] = (uint8) (overVoltage >> 4);
1112 .loc 1 191 3 is_stmt 1 view .LVU265
191:Core/Src/ADBMS_Abstraction.c **** buffer[2] = (uint8) (overVoltage >> 4);
1113 .loc 1 191 16 is_stmt 0 view .LVU266
1114 004a 2A01 lsls r2, r5, #4
1115 004c D2B2 uxtb r2, r2
191:Core/Src/ADBMS_Abstraction.c **** buffer[2] = (uint8) (overVoltage >> 4);
1116 .loc 1 191 13 view .LVU267
1117 004e 1343 orrs r3, r3, r2
1118 0050 8DF80130 strb r3, [sp, #1]
192:Core/Src/ADBMS_Abstraction.c ****
1119 .loc 1 192 3 is_stmt 1 view .LVU268
192:Core/Src/ADBMS_Abstraction.c ****
1120 .loc 1 192 15 is_stmt 0 view .LVU269
1121 0054 C5F30715 ubfx r5, r5, #4, #8
1122 .LVL105:
192:Core/Src/ADBMS_Abstraction.c ****
1123 .loc 1 192 13 view .LVU270
1124 0058 8DF80250 strb r5, [sp, #2]
194:Core/Src/ADBMS_Abstraction.c **** }
1125 .loc 1 194 3 is_stmt 1 view .LVU271
194:Core/Src/ADBMS_Abstraction.c **** }
1126 .loc 1 194 10 is_stmt 0 view .LVU272
1127 005c 0622 movs r2, #6
1128 005e 6946 mov r1, sp
1129 0060 2420 movs r0, #36
1130 .LVL106:
194:Core/Src/ADBMS_Abstraction.c **** }
1131 .loc 1 194 10 view .LVU273
1132 0062 FFF7FEFF bl writeCMD
1133 .LVL107:
1134 0066 D6E7 b .L40
1135 .LVL108:
1136 .L41:
1137 .cfi_def_cfa_offset 0
1138 .cfi_restore 4
1139 .cfi_restore 5
1140 .cfi_restore 14
179:Core/Src/ADBMS_Abstraction.c **** }
1141 .loc 1 179 12 view .LVU274
1142 0068 0120 movs r0, #1
ARM GAS /tmp/cc16Zqrx.s page 28
1143 .LVL109:
1144 .loc 1 195 1 view .LVU275
1145 006a 7047 bx lr
1146 .cfi_endproc
1147 .LFE134:
1149 .section .rodata.amsReset.str1.4,"aMS",%progbits,1
1150 .align 2
1151 .LC0:
1152 0000 FFFFFFFF .ascii "\377\377\377\377\377\377\000"
1152 FFFF00
1153 .section .text.amsReset,"ax",%progbits
1154 .align 1
1155 .global amsReset
1156 .syntax unified
1157 .thumb
1158 .thumb_func
1160 amsReset:
1161 .LFB123:
24:Core/Src/ADBMS_Abstraction.c **** amsWakeUp();
1162 .loc 1 24 18 is_stmt 1 view -0
1163 .cfi_startproc
1164 @ args = 0, pretend = 0, frame = 8
1165 @ frame_needed = 0, uses_anonymous_args = 0
1166 0000 00B5 push {lr}
1167 .cfi_def_cfa_offset 4
1168 .cfi_offset 14, -4
1169 0002 83B0 sub sp, sp, #12
1170 .cfi_def_cfa_offset 16
25:Core/Src/ADBMS_Abstraction.c **** readCMD(SRST, NULL, 0);
1171 .loc 1 25 3 view .LVU277
1172 0004 FFF7FEFF bl amsWakeUp
1173 .LVL110:
26:Core/Src/ADBMS_Abstraction.c **** mcuDelay(10);
1174 .loc 1 26 3 view .LVU278
1175 0008 0022 movs r2, #0
1176 000a 1146 mov r1, r2
1177 000c 2720 movs r0, #39
1178 000e FFF7FEFF bl readCMD
1179 .LVL111:
27:Core/Src/ADBMS_Abstraction.c **** amsWakeUp();
1180 .loc 1 27 3 view .LVU279
1181 0012 0A20 movs r0, #10
1182 0014 FFF7FEFF bl mcuDelay
1183 .LVL112:
28:Core/Src/ADBMS_Abstraction.c **** amsStopBalancing();
1184 .loc 1 28 3 view .LVU280
1185 0018 FFF7FEFF bl amsWakeUp
1186 .LVL113:
29:Core/Src/ADBMS_Abstraction.c **** amsConfigOverUnderVoltage(DEFAULT_OV, DEFAULT_UV);
1187 .loc 1 29 3 view .LVU281
1188 001c FFF7FEFF bl amsStopBalancing
1189 .LVL114:
30:Core/Src/ADBMS_Abstraction.c ****
1190 .loc 1 30 3 view .LVU282
1191 0020 40F2A111 movw r1, #417
1192 0024 40F26540 movw r0, #1125
1193 0028 FFF7FEFF bl amsConfigOverUnderVoltage
ARM GAS /tmp/cc16Zqrx.s page 29
1194 .LVL115:
32:Core/Src/ADBMS_Abstraction.c ****
1195 .loc 1 32 3 view .LVU283
32:Core/Src/ADBMS_Abstraction.c ****
1196 .loc 1 32 9 is_stmt 0 view .LVU284
1197 002c 1A4B ldr r3, .L52
1198 002e 93E80300 ldm r3, {r0, r1}
1199 0032 0090 str r0, [sp]
1200 0034 ADF80410 strh r1, [sp, #4] @ movhi
1201 .LBB19:
34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags
1202 .loc 1 34 3 is_stmt 1 view .LVU285
1203 0038 0622 movs r2, #6
1204 003a 6946 mov r1, sp
1205 003c 40F21770 movw r0, #1815
1206 0040 FFF7FEFF bl writeCMD
1207 .LVL116:
34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags
1208 .loc 1 34 3 discriminator 1 view .LVU286
1209 0044 0346 mov r3, r0
1210 0046 18B1 cbz r0, .L51
1211 .LVL117:
1212 .L49:
34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags
1213 .loc 1 34 3 is_stmt 0 discriminator 1 view .LVU287
1214 .LBE19:
41:Core/Src/ADBMS_Abstraction.c ****
1215 .loc 1 41 1 view .LVU288
1216 0048 1846 mov r0, r3
1217 004a 03B0 add sp, sp, #12
1218 .cfi_remember_state
1219 .cfi_def_cfa_offset 4
1220 @ sp needed
1221 004c 5DF804FB ldr pc, [sp], #4
1222 .LVL118:
1223 .L51:
1224 .cfi_restore_state
34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags
1225 .loc 1 34 45 is_stmt 1 discriminator 2 view .LVU289
1226 .LBB20:
35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas
1227 .loc 1 35 3 view .LVU290
1228 0050 0622 movs r2, #6
1229 0052 6946 mov r1, sp
1230 0054 40F21570 movw r0, #1813
1231 .LVL119:
35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas
1232 .loc 1 35 3 is_stmt 0 view .LVU291
1233 0058 FFF7FEFF bl writeCMD
1234 .LVL120:
35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas
1235 .loc 1 35 3 is_stmt 1 discriminator 1 view .LVU292
1236 005c 0346 mov r3, r0
1237 005e 0028 cmp r0, #0
1238 0060 F2D1 bne .L49
1239 .LBE20:
35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas
ARM GAS /tmp/cc16Zqrx.s page 30
1240 .loc 1 35 44 discriminator 2 view .LVU293
1241 .LBB21:
36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement
1242 .loc 1 36 3 view .LVU294
1243 0062 0022 movs r2, #0
1244 0064 1146 mov r1, r2
1245 0066 4FF47870 mov r0, #992
1246 .LVL121:
36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement
1247 .loc 1 36 3 is_stmt 0 view .LVU295
1248 006a FFF7FEFF bl writeCMD
1249 .LVL122:
36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement
1250 .loc 1 36 3 is_stmt 1 discriminator 1 view .LVU296
1251 006e 0346 mov r3, r0
1252 0070 0028 cmp r0, #0
1253 0072 E9D1 bne .L49
1254 .LBE21:
36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement
1255 .loc 1 36 62 discriminator 2 view .LVU297
1256 .LBB22:
37:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement
1257 .loc 1 37 3 view .LVU298
1258 0074 0022 movs r2, #0
1259 0076 1146 mov r1, r2
1260 0078 40F21140 movw r0, #1041
1261 .LVL123:
37:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement
1262 .loc 1 37 3 is_stmt 0 view .LVU299
1263 007c FFF7FEFF bl writeCMD
1264 .LVL124:
37:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement
1265 .loc 1 37 3 is_stmt 1 discriminator 1 view .LVU300
1266 0080 0346 mov r3, r0
1267 0082 0028 cmp r0, #0
1268 0084 E0D1 bne .L49
1269 .LBE22:
37:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement
1270 .loc 1 37 40 discriminator 2 view .LVU301
1271 .LBB23:
38:Core/Src/ADBMS_Abstraction.c ****
1272 .loc 1 38 3 view .LVU302
1273 0086 0022 movs r2, #0
1274 0088 1146 mov r1, r2
1275 008a 40F20140 movw r0, #1025
1276 .LVL125:
38:Core/Src/ADBMS_Abstraction.c ****
1277 .loc 1 38 3 is_stmt 0 view .LVU303
1278 008e FFF7FEFF bl writeCMD
1279 .LVL126:
38:Core/Src/ADBMS_Abstraction.c ****
1280 .loc 1 38 3 view .LVU304
1281 0092 0346 mov r3, r0
1282 .LVL127:
38:Core/Src/ADBMS_Abstraction.c ****
1283 .loc 1 38 3 is_stmt 1 discriminator 1 view .LVU305
1284 0094 D8E7 b .L49
ARM GAS /tmp/cc16Zqrx.s page 31
1285 .L53:
1286 0096 00BF .align 2
1287 .L52:
1288 0098 00000000 .word .LC0
1289 .LBE23:
1290 .cfi_endproc
1291 .LFE123:
1293 .section .text.initAMS,"ax",%progbits
1294 .align 1
1295 .global initAMS
1296 .syntax unified
1297 .thumb
1298 .thumb_func
1300 initAMS:
1301 .LVL128:
1302 .LFB124:
43:Core/Src/ADBMS_Abstraction.c **** adbmsDriverInit(hspi);
1303 .loc 1 43 74 view -0
1304 .cfi_startproc
1305 @ args = 0, pretend = 0, frame = 0
1306 @ frame_needed = 0, uses_anonymous_args = 0
43:Core/Src/ADBMS_Abstraction.c **** adbmsDriverInit(hspi);
1307 .loc 1 43 74 is_stmt 0 view .LVU307
1308 0000 38B5 push {r3, r4, r5, lr}
1309 .cfi_def_cfa_offset 16
1310 .cfi_offset 3, -16
1311 .cfi_offset 4, -12
1312 .cfi_offset 5, -8
1313 .cfi_offset 14, -4
1314 0002 0D46 mov r5, r1
1315 0004 1446 mov r4, r2
44:Core/Src/ADBMS_Abstraction.c **** numberofcells = numofcells;
1316 .loc 1 44 3 is_stmt 1 view .LVU308
1317 0006 FFF7FEFF bl adbmsDriverInit
1318 .LVL129:
45:Core/Src/ADBMS_Abstraction.c **** numberofauxchannels = numofaux;
1319 .loc 1 45 3 view .LVU309
45:Core/Src/ADBMS_Abstraction.c **** numberofauxchannels = numofaux;
1320 .loc 1 45 17 is_stmt 0 view .LVU310
1321 000a 034B ldr r3, .L56
1322 000c 1D70 strb r5, [r3]
46:Core/Src/ADBMS_Abstraction.c ****
1323 .loc 1 46 3 is_stmt 1 view .LVU311
46:Core/Src/ADBMS_Abstraction.c ****
1324 .loc 1 46 23 is_stmt 0 view .LVU312
1325 000e 034B ldr r3, .L56+4
1326 0010 1C70 strb r4, [r3]
48:Core/Src/ADBMS_Abstraction.c **** }
1327 .loc 1 48 3 is_stmt 1 view .LVU313
48:Core/Src/ADBMS_Abstraction.c **** }
1328 .loc 1 48 10 is_stmt 0 view .LVU314
1329 0012 FFF7FEFF bl amsReset
1330 .LVL130:
49:Core/Src/ADBMS_Abstraction.c ****
1331 .loc 1 49 1 view .LVU315
1332 0016 38BD pop {r3, r4, r5, pc}
1333 .LVL131:
ARM GAS /tmp/cc16Zqrx.s page 32
1334 .L57:
49:Core/Src/ADBMS_Abstraction.c ****
1335 .loc 1 49 1 view .LVU316
1336 .align 2
1337 .L56:
1338 0018 00000000 .word numberofcells
1339 001c 00000000 .word numberofauxchannels
1340 .cfi_endproc
1341 .LFE124:
1343 .section .text.amsCheckUnderOverVoltage,"ax",%progbits
1344 .align 1
1345 .global amsCheckUnderOverVoltage
1346 .syntax unified
1347 .thumb
1348 .thumb_func
1350 amsCheckUnderOverVoltage:
1351 .LVL132:
1352 .LFB135:
196:Core/Src/ADBMS_Abstraction.c ****
197:Core/Src/ADBMS_Abstraction.c **** uint8 amsCheckUnderOverVoltage(Cell_Module* module) {
1353 .loc 1 197 53 is_stmt 1 view -0
1354 .cfi_startproc
1355 @ args = 0, pretend = 0, frame = 8
1356 @ frame_needed = 0, uses_anonymous_args = 0
1357 .loc 1 197 53 is_stmt 0 view .LVU318
1358 0000 10B5 push {r4, lr}
1359 .cfi_def_cfa_offset 8
1360 .cfi_offset 4, -8
1361 .cfi_offset 14, -4
1362 0002 82B0 sub sp, sp, #8
1363 .cfi_def_cfa_offset 16
1364 0004 0446 mov r4, r0
198:Core/Src/ADBMS_Abstraction.c **** uint8 regbuffer[STATUS_GROUP_D_SIZE];
1365 .loc 1 198 3 is_stmt 1 view .LVU319
199:Core/Src/ADBMS_Abstraction.c **** uint32 ov_uv_data = 0;
1366 .loc 1 199 3 view .LVU320
1367 .LVL133:
1368 .LBB24:
200:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATD, regbuffer, STATUS_GROUP_D_SIZE));
1369 .loc 1 200 3 view .LVU321
1370 0006 0622 movs r2, #6
1371 0008 6946 mov r1, sp
1372 000a 3320 movs r0, #51
1373 .LVL134:
1374 .loc 1 200 3 is_stmt 0 view .LVU322
1375 000c FFF7FEFF bl readCMD
1376 .LVL135:
1377 .loc 1 200 3 is_stmt 1 discriminator 1 view .LVU323
1378 0010 38BB cbnz r0, .L59
1379 .LBE24:
1380 .loc 1 200 65 discriminator 2 view .LVU324
201:Core/Src/ADBMS_Abstraction.c **** ov_uv_data = (regbuffer[0] << 0) | (regbuffer[1] << 8) |
1381 .loc 1 201 3 view .LVU325
1382 .loc 1 201 26 is_stmt 0 view .LVU326
1383 0012 9DF800E0 ldrb lr, [sp] @ zero_extendqisi2
1384 .loc 1 201 49 view .LVU327
1385 0016 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2
ARM GAS /tmp/cc16Zqrx.s page 33
1386 .loc 1 201 37 view .LVU328
1387 001a 4EEA032E orr lr, lr, r3, lsl #8
202:Core/Src/ADBMS_Abstraction.c **** (regbuffer[2] << 16) | (regbuffer[3] << 24);
1388 .loc 1 202 26 view .LVU329
1389 001e 9DF80230 ldrb r3, [sp, #2] @ zero_extendqisi2
201:Core/Src/ADBMS_Abstraction.c **** ov_uv_data = (regbuffer[0] << 0) | (regbuffer[1] << 8) |
1390 .loc 1 201 60 view .LVU330
1391 0022 4EEA034E orr lr, lr, r3, lsl #16
1392 .loc 1 202 49 view .LVU331
1393 0026 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2
1394 .loc 1 202 37 view .LVU332
1395 002a 4EEA036E orr lr, lr, r3, lsl #24
1396 .LVL136:
203:Core/Src/ADBMS_Abstraction.c ****
204:Core/Src/ADBMS_Abstraction.c **** module->overVoltage = 0;
1397 .loc 1 204 3 is_stmt 1 view .LVU333
1398 .loc 1 204 23 is_stmt 0 view .LVU334
1399 002e 0022 movs r2, #0
1400 0030 A265 str r2, [r4, #88]
205:Core/Src/ADBMS_Abstraction.c **** module->underVoltage = 0;
1401 .loc 1 205 3 is_stmt 1 view .LVU335
1402 .loc 1 205 24 is_stmt 0 view .LVU336
1403 0032 E265 str r2, [r4, #92]
206:Core/Src/ADBMS_Abstraction.c ****
207:Core/Src/ADBMS_Abstraction.c **** for (size_t i = 0; i < numberofcells; i++) { // ov/uv flags are 1-bit flags for each cell C0UV, C
1404 .loc 1 207 3 is_stmt 1 view .LVU337
1405 .LBB25:
1406 .loc 1 207 8 view .LVU338
1407 .LVL137:
1408 .loc 1 207 3 is_stmt 0 view .LVU339
1409 0034 11E0 b .L60
1410 .LVL138:
1411 .L61:
208:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01;
1412 .loc 1 208 5 is_stmt 1 view .LVU340
1413 .loc 1 208 11 is_stmt 0 view .LVU341
1414 0036 E16D ldr r1, [r4, #92]
1415 .loc 1 208 47 view .LVU342
1416 0038 5300 lsls r3, r2, #1
1417 .loc 1 208 41 view .LVU343
1418 003a 2EFA03FC lsr ip, lr, r3
1419 .loc 1 208 53 view .LVU344
1420 003e 0CF0010C and ip, ip, #1
1421 .loc 1 208 26 view .LVU345
1422 0042 41EA0C01 orr r1, r1, ip
1423 0046 E165 str r1, [r4, #92]
209:Core/Src/ADBMS_Abstraction.c **** module->overVoltage |= (ov_uv_data >> (i * 2 + 1)) & 0x01;
1424 .loc 1 209 5 is_stmt 1 view .LVU346
1425 .loc 1 209 11 is_stmt 0 view .LVU347
1426 0048 A16D ldr r1, [r4, #88]
1427 .loc 1 209 51 view .LVU348
1428 004a 0133 adds r3, r3, #1
1429 .loc 1 209 41 view .LVU349
1430 004c 2EFA03F3 lsr r3, lr, r3
1431 .loc 1 209 57 view .LVU350
1432 0050 03F00103 and r3, r3, #1
1433 .loc 1 209 26 view .LVU351
ARM GAS /tmp/cc16Zqrx.s page 34
1434 0054 1943 orrs r1, r1, r3
1435 0056 A165 str r1, [r4, #88]
207:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01;
1436 .loc 1 207 42 is_stmt 1 discriminator 3 view .LVU352
1437 0058 0132 adds r2, r2, #1
1438 .LVL139:
1439 .L60:
207:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01;
1440 .loc 1 207 24 discriminator 1 view .LVU353
1441 005a 034B ldr r3, .L63
1442 005c 1B78 ldrb r3, [r3] @ zero_extendqisi2
1443 005e 9342 cmp r3, r2
1444 0060 E9D8 bhi .L61
1445 .LVL140:
1446 .L59:
207:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01;
1447 .loc 1 207 24 is_stmt 0 discriminator 1 view .LVU354
1448 .LBE25:
210:Core/Src/ADBMS_Abstraction.c **** }
211:Core/Src/ADBMS_Abstraction.c ****
212:Core/Src/ADBMS_Abstraction.c **** return 0;
213:Core/Src/ADBMS_Abstraction.c **** }
1449 .loc 1 213 1 view .LVU355
1450 0062 02B0 add sp, sp, #8
1451 .cfi_def_cfa_offset 8
1452 @ sp needed
1453 0064 10BD pop {r4, pc}
1454 .LVL141:
1455 .L64:
1456 .loc 1 213 1 view .LVU356
1457 0066 00BF .align 2
1458 .L63:
1459 0068 00000000 .word numberofcells
1460 .cfi_endproc
1461 .LFE135:
1463 .section .text.amsClearAux,"ax",%progbits
1464 .align 1
1465 .global amsClearAux
1466 .syntax unified
1467 .thumb
1468 .thumb_func
1470 amsClearAux:
1471 .LFB136:
214:Core/Src/ADBMS_Abstraction.c ****
215:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearAux() {
1472 .loc 1 215 21 is_stmt 1 view -0
1473 .cfi_startproc
1474 @ args = 0, pretend = 0, frame = 8
1475 @ frame_needed = 0, uses_anonymous_args = 0
1476 0000 00B5 push {lr}
1477 .cfi_def_cfa_offset 4
1478 .cfi_offset 14, -4
1479 0002 83B0 sub sp, sp, #12
1480 .cfi_def_cfa_offset 16
216:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[6];
1481 .loc 1 216 3 view .LVU358
217:Core/Src/ADBMS_Abstraction.c **** return writeCMD(CLRAUX, buffer, 0);
ARM GAS /tmp/cc16Zqrx.s page 35
1482 .loc 1 217 3 view .LVU359
1483 .loc 1 217 10 is_stmt 0 view .LVU360
1484 0004 0022 movs r2, #0
1485 0006 6946 mov r1, sp
1486 0008 40F21270 movw r0, #1810
1487 000c FFF7FEFF bl writeCMD
1488 .LVL142:
218:Core/Src/ADBMS_Abstraction.c **** }
1489 .loc 1 218 1 view .LVU361
1490 0010 03B0 add sp, sp, #12
1491 .cfi_def_cfa_offset 4
1492 @ sp needed
1493 0012 5DF804FB ldr pc, [sp], #4
1494 .cfi_endproc
1495 .LFE136:
1497 .section .text.amsClearCells,"ax",%progbits
1498 .align 1
1499 .global amsClearCells
1500 .syntax unified
1501 .thumb
1502 .thumb_func
1504 amsClearCells:
1505 .LFB137:
219:Core/Src/ADBMS_Abstraction.c ****
220:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearCells() {
1506 .loc 1 220 23 is_stmt 1 view -0
1507 .cfi_startproc
1508 @ args = 0, pretend = 0, frame = 8
1509 @ frame_needed = 0, uses_anonymous_args = 0
1510 0000 00B5 push {lr}
1511 .cfi_def_cfa_offset 4
1512 .cfi_offset 14, -4
1513 0002 83B0 sub sp, sp, #12
1514 .cfi_def_cfa_offset 16
221:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[6];
1515 .loc 1 221 3 view .LVU363
222:Core/Src/ADBMS_Abstraction.c **** return writeCMD(CLRCELL, buffer, 0);
1516 .loc 1 222 3 view .LVU364
1517 .loc 1 222 10 is_stmt 0 view .LVU365
1518 0004 0022 movs r2, #0
1519 0006 6946 mov r1, sp
1520 0008 40F21170 movw r0, #1809
1521 000c FFF7FEFF bl writeCMD
1522 .LVL143:
223:Core/Src/ADBMS_Abstraction.c **** }
1523 .loc 1 223 1 view .LVU366
1524 0010 03B0 add sp, sp, #12
1525 .cfi_def_cfa_offset 4
1526 @ sp needed
1527 0012 5DF804FB ldr pc, [sp], #4
1528 .cfi_endproc
1529 .LFE137:
1531 .section .text.amsReadCellVoltages,"ax",%progbits
1532 .align 1
1533 .global amsReadCellVoltages
1534 .syntax unified
1535 .thumb
ARM GAS /tmp/cc16Zqrx.s page 36
1536 .thumb_func
1538 amsReadCellVoltages:
1539 .LVL144:
1540 .LFB138:
224:Core/Src/ADBMS_Abstraction.c ****
225:Core/Src/ADBMS_Abstraction.c **** uint8 amsReadCellVoltages(Cell_Module* module) {
1541 .loc 1 225 48 is_stmt 1 view -0
1542 .cfi_startproc
1543 @ args = 0, pretend = 0, frame = 8
1544 @ frame_needed = 0, uses_anonymous_args = 0
1545 .loc 1 225 48 is_stmt 0 view .LVU368
1546 0000 30B5 push {r4, r5, lr}
1547 .cfi_def_cfa_offset 12
1548 .cfi_offset 4, -12
1549 .cfi_offset 5, -8
1550 .cfi_offset 14, -4
1551 0002 83B0 sub sp, sp, #12
1552 .cfi_def_cfa_offset 24
1553 0004 0446 mov r4, r0
226:Core/Src/ADBMS_Abstraction.c **** uint8 rxbuffer[CV_GROUP_A_SIZE];
1554 .loc 1 226 3 is_stmt 1 view .LVU369
1555 .LBB26:
227:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVA, rxbuffer, CV_GROUP_A_SIZE));
1556 .loc 1 227 3 view .LVU370
1557 0006 0622 movs r2, #6
1558 0008 6946 mov r1, sp
1559 000a 0420 movs r0, #4
1560 .LVL145:
1561 .loc 1 227 3 is_stmt 0 view .LVU371
1562 000c FFF7FEFF bl readCMD
1563 .LVL146:
1564 .loc 1 227 3 is_stmt 1 discriminator 1 view .LVU372
1565 0010 0546 mov r5, r0
1566 0012 10B1 cbz r0, .L72
1567 .LVL147:
1568 .L70:
1569 .loc 1 227 3 is_stmt 0 discriminator 1 view .LVU373
1570 .LBE26:
228:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
229:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[1] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
230:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[2] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
231:Core/Src/ADBMS_Abstraction.c ****
232:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVB, rxbuffer, CV_GROUP_A_SIZE));
233:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
234:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
235:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[5] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
236:Core/Src/ADBMS_Abstraction.c ****
237:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVC, rxbuffer, CV_GROUP_A_SIZE));
238:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
239:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
240:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[8] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
241:Core/Src/ADBMS_Abstraction.c ****
242:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVD, rxbuffer, CV_GROUP_A_SIZE));
243:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
244:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
245:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[11] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
246:Core/Src/ADBMS_Abstraction.c ****
ARM GAS /tmp/cc16Zqrx.s page 37
247:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVE, rxbuffer, CV_GROUP_A_SIZE));
248:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
249:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
250:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[14] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
251:Core/Src/ADBMS_Abstraction.c ****
252:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVF, rxbuffer, CV_GROUP_A_SIZE));
253:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
254:Core/Src/ADBMS_Abstraction.c ****
255:Core/Src/ADBMS_Abstraction.c **** return 0;
256:Core/Src/ADBMS_Abstraction.c **** }
1571 .loc 1 256 1 view .LVU374
1572 0014 2846 mov r0, r5
1573 0016 03B0 add sp, sp, #12
1574 .cfi_remember_state
1575 .cfi_def_cfa_offset 12
1576 @ sp needed
1577 0018 30BD pop {r4, r5, pc}
1578 .LVL148:
1579 .L72:
1580 .cfi_restore_state
227:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVA, rxbuffer, CV_GROUP_A_SIZE));
1581 .loc 1 227 58 is_stmt 1 discriminator 2 view .LVU375
228:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1582 .loc 1 228 3 view .LVU376
228:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1583 .loc 1 228 29 is_stmt 0 view .LVU377
1584 001a 9DF80000 ldrb r0, [sp] @ zero_extendqisi2
1585 .LVL149:
228:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1586 .loc 1 228 29 view .LVU378
1587 001e 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2
1588 0022 40EA0320 orr r0, r0, r3, lsl #8
1589 0026 00B2 sxth r0, r0
1590 0028 FFF7FEFF bl __aeabi_i2d
1591 .LVL150:
1592 002c C2A3 adr r3, .L73
1593 002e D3E90023 ldrd r2, [r3]
1594 0032 FFF7FEFF bl __aeabi_dmul
1595 .LVL151:
1596 0036 C2A3 adr r3, .L73+8
1597 0038 D3E90023 ldrd r2, [r3]
1598 003c FFF7FEFF bl __aeabi_dadd
1599 .LVL152:
228:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1600 .loc 1 228 27 view .LVU379
1601 0040 FFF7FEFF bl __aeabi_d2iz
1602 .LVL153:
1603 0044 2080 strh r0, [r4] @ movhi
229:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[2] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1604 .loc 1 229 3 is_stmt 1 view .LVU380
229:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[2] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1605 .loc 1 229 29 is_stmt 0 view .LVU381
1606 0046 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2
1607 004a 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2
1608 004e 40EA0320 orr r0, r0, r3, lsl #8
1609 0052 00B2 sxth r0, r0
1610 0054 FFF7FEFF bl __aeabi_i2d
ARM GAS /tmp/cc16Zqrx.s page 38
1611 .LVL154:
1612 0058 B7A3 adr r3, .L73
1613 005a D3E90023 ldrd r2, [r3]
1614 005e FFF7FEFF bl __aeabi_dmul
1615 .LVL155:
1616 0062 B7A3 adr r3, .L73+8
1617 0064 D3E90023 ldrd r2, [r3]
1618 0068 FFF7FEFF bl __aeabi_dadd
1619 .LVL156:
229:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[2] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1620 .loc 1 229 27 view .LVU382
1621 006c FFF7FEFF bl __aeabi_d2iz
1622 .LVL157:
1623 0070 6080 strh r0, [r4, #2] @ movhi
230:Core/Src/ADBMS_Abstraction.c ****
1624 .loc 1 230 3 is_stmt 1 view .LVU383
230:Core/Src/ADBMS_Abstraction.c ****
1625 .loc 1 230 29 is_stmt 0 view .LVU384
1626 0072 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2
1627 0076 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2
1628 007a 40EA0320 orr r0, r0, r3, lsl #8
1629 007e 00B2 sxth r0, r0
1630 0080 FFF7FEFF bl __aeabi_i2d
1631 .LVL158:
1632 0084 ACA3 adr r3, .L73
1633 0086 D3E90023 ldrd r2, [r3]
1634 008a FFF7FEFF bl __aeabi_dmul
1635 .LVL159:
1636 008e ACA3 adr r3, .L73+8
1637 0090 D3E90023 ldrd r2, [r3]
1638 0094 FFF7FEFF bl __aeabi_dadd
1639 .LVL160:
230:Core/Src/ADBMS_Abstraction.c ****
1640 .loc 1 230 27 view .LVU385
1641 0098 FFF7FEFF bl __aeabi_d2iz
1642 .LVL161:
1643 009c A080 strh r0, [r4, #4] @ movhi
1644 .LBB27:
232:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1645 .loc 1 232 3 is_stmt 1 view .LVU386
1646 009e 0622 movs r2, #6
1647 00a0 6946 mov r1, sp
1648 00a2 1046 mov r0, r2
1649 00a4 FFF7FEFF bl readCMD
1650 .LVL162:
232:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1651 .loc 1 232 3 discriminator 1 view .LVU387
1652 00a8 0546 mov r5, r0
1653 .LVL163:
232:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1654 .loc 1 232 3 is_stmt 0 discriminator 1 view .LVU388
1655 00aa 0028 cmp r0, #0
1656 00ac B2D1 bne .L70
1657 .LBE27:
232:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1658 .loc 1 232 58 is_stmt 1 discriminator 2 view .LVU389
233:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
ARM GAS /tmp/cc16Zqrx.s page 39
1659 .loc 1 233 3 view .LVU390
233:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1660 .loc 1 233 29 is_stmt 0 view .LVU391
1661 00ae 9DF80000 ldrb r0, [sp] @ zero_extendqisi2
1662 .LVL164:
233:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1663 .loc 1 233 29 view .LVU392
1664 00b2 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2
1665 00b6 40EA0320 orr r0, r0, r3, lsl #8
1666 00ba 00B2 sxth r0, r0
1667 00bc FFF7FEFF bl __aeabi_i2d
1668 .LVL165:
1669 00c0 9DA3 adr r3, .L73
1670 00c2 D3E90023 ldrd r2, [r3]
1671 00c6 FFF7FEFF bl __aeabi_dmul
1672 .LVL166:
1673 00ca 9DA3 adr r3, .L73+8
1674 00cc D3E90023 ldrd r2, [r3]
1675 00d0 FFF7FEFF bl __aeabi_dadd
1676 .LVL167:
233:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1677 .loc 1 233 27 view .LVU393
1678 00d4 FFF7FEFF bl __aeabi_d2iz
1679 .LVL168:
1680 00d8 E080 strh r0, [r4, #6] @ movhi
234:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[5] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1681 .loc 1 234 3 is_stmt 1 view .LVU394
234:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[5] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1682 .loc 1 234 29 is_stmt 0 view .LVU395
1683 00da 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2
1684 00de 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2
1685 00e2 40EA0320 orr r0, r0, r3, lsl #8
1686 00e6 00B2 sxth r0, r0
1687 00e8 FFF7FEFF bl __aeabi_i2d
1688 .LVL169:
1689 00ec 92A3 adr r3, .L73
1690 00ee D3E90023 ldrd r2, [r3]
1691 00f2 FFF7FEFF bl __aeabi_dmul
1692 .LVL170:
1693 00f6 92A3 adr r3, .L73+8
1694 00f8 D3E90023 ldrd r2, [r3]
1695 00fc FFF7FEFF bl __aeabi_dadd
1696 .LVL171:
234:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[5] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1697 .loc 1 234 27 view .LVU396
1698 0100 FFF7FEFF bl __aeabi_d2iz
1699 .LVL172:
1700 0104 2081 strh r0, [r4, #8] @ movhi
235:Core/Src/ADBMS_Abstraction.c ****
1701 .loc 1 235 3 is_stmt 1 view .LVU397
235:Core/Src/ADBMS_Abstraction.c ****
1702 .loc 1 235 29 is_stmt 0 view .LVU398
1703 0106 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2
1704 010a 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2
1705 010e 40EA0320 orr r0, r0, r3, lsl #8
1706 0112 00B2 sxth r0, r0
1707 0114 FFF7FEFF bl __aeabi_i2d
ARM GAS /tmp/cc16Zqrx.s page 40
1708 .LVL173:
1709 0118 87A3 adr r3, .L73
1710 011a D3E90023 ldrd r2, [r3]
1711 011e FFF7FEFF bl __aeabi_dmul
1712 .LVL174:
1713 0122 87A3 adr r3, .L73+8
1714 0124 D3E90023 ldrd r2, [r3]
1715 0128 FFF7FEFF bl __aeabi_dadd
1716 .LVL175:
235:Core/Src/ADBMS_Abstraction.c ****
1717 .loc 1 235 27 view .LVU399
1718 012c FFF7FEFF bl __aeabi_d2iz
1719 .LVL176:
1720 0130 6081 strh r0, [r4, #10] @ movhi
1721 .LBB28:
237:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1722 .loc 1 237 3 is_stmt 1 view .LVU400
1723 0132 0622 movs r2, #6
1724 0134 6946 mov r1, sp
1725 0136 0820 movs r0, #8
1726 0138 FFF7FEFF bl readCMD
1727 .LVL177:
237:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1728 .loc 1 237 3 discriminator 1 view .LVU401
1729 013c 0546 mov r5, r0
1730 .LVL178:
237:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1731 .loc 1 237 3 is_stmt 0 discriminator 1 view .LVU402
1732 013e 0028 cmp r0, #0
1733 0140 7FF468AF bne .L70
1734 .LBE28:
237:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1735 .loc 1 237 58 is_stmt 1 discriminator 2 view .LVU403
238:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1736 .loc 1 238 3 view .LVU404
238:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1737 .loc 1 238 29 is_stmt 0 view .LVU405
1738 0144 9DF80000 ldrb r0, [sp] @ zero_extendqisi2
1739 .LVL179:
238:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1740 .loc 1 238 29 view .LVU406
1741 0148 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2
1742 014c 40EA0320 orr r0, r0, r3, lsl #8
1743 0150 00B2 sxth r0, r0
1744 0152 FFF7FEFF bl __aeabi_i2d
1745 .LVL180:
1746 0156 78A3 adr r3, .L73
1747 0158 D3E90023 ldrd r2, [r3]
1748 015c FFF7FEFF bl __aeabi_dmul
1749 .LVL181:
1750 0160 77A3 adr r3, .L73+8
1751 0162 D3E90023 ldrd r2, [r3]
1752 0166 FFF7FEFF bl __aeabi_dadd
1753 .LVL182:
238:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1754 .loc 1 238 27 view .LVU407
1755 016a FFF7FEFF bl __aeabi_d2iz
ARM GAS /tmp/cc16Zqrx.s page 41
1756 .LVL183:
1757 016e A081 strh r0, [r4, #12] @ movhi
239:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[8] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1758 .loc 1 239 3 is_stmt 1 view .LVU408
239:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[8] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1759 .loc 1 239 29 is_stmt 0 view .LVU409
1760 0170 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2
1761 0174 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2
1762 0178 40EA0320 orr r0, r0, r3, lsl #8
1763 017c 00B2 sxth r0, r0
1764 017e FFF7FEFF bl __aeabi_i2d
1765 .LVL184:
1766 0182 6DA3 adr r3, .L73
1767 0184 D3E90023 ldrd r2, [r3]
1768 0188 FFF7FEFF bl __aeabi_dmul
1769 .LVL185:
1770 018c 6CA3 adr r3, .L73+8
1771 018e D3E90023 ldrd r2, [r3]
1772 0192 FFF7FEFF bl __aeabi_dadd
1773 .LVL186:
239:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[8] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1774 .loc 1 239 27 view .LVU410
1775 0196 FFF7FEFF bl __aeabi_d2iz
1776 .LVL187:
1777 019a E081 strh r0, [r4, #14] @ movhi
240:Core/Src/ADBMS_Abstraction.c ****
1778 .loc 1 240 3 is_stmt 1 view .LVU411
240:Core/Src/ADBMS_Abstraction.c ****
1779 .loc 1 240 29 is_stmt 0 view .LVU412
1780 019c 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2
1781 01a0 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2
1782 01a4 40EA0320 orr r0, r0, r3, lsl #8
1783 01a8 00B2 sxth r0, r0
1784 01aa FFF7FEFF bl __aeabi_i2d
1785 .LVL188:
1786 01ae 62A3 adr r3, .L73
1787 01b0 D3E90023 ldrd r2, [r3]
1788 01b4 FFF7FEFF bl __aeabi_dmul
1789 .LVL189:
1790 01b8 61A3 adr r3, .L73+8
1791 01ba D3E90023 ldrd r2, [r3]
1792 01be FFF7FEFF bl __aeabi_dadd
1793 .LVL190:
240:Core/Src/ADBMS_Abstraction.c ****
1794 .loc 1 240 27 view .LVU413
1795 01c2 FFF7FEFF bl __aeabi_d2iz
1796 .LVL191:
1797 01c6 2082 strh r0, [r4, #16] @ movhi
1798 .LBB29:
242:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1799 .loc 1 242 3 is_stmt 1 view .LVU414
1800 01c8 0622 movs r2, #6
1801 01ca 6946 mov r1, sp
1802 01cc 0A20 movs r0, #10
1803 01ce FFF7FEFF bl readCMD
1804 .LVL192:
242:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
ARM GAS /tmp/cc16Zqrx.s page 42
1805 .loc 1 242 3 discriminator 1 view .LVU415
1806 01d2 0546 mov r5, r0
1807 .LVL193:
242:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1808 .loc 1 242 3 is_stmt 0 discriminator 1 view .LVU416
1809 01d4 0028 cmp r0, #0
1810 01d6 7FF41DAF bne .L70
1811 .LBE29:
242:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1812 .loc 1 242 58 is_stmt 1 discriminator 2 view .LVU417
243:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1813 .loc 1 243 3 view .LVU418
243:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1814 .loc 1 243 30 is_stmt 0 view .LVU419
1815 01da 9DF80000 ldrb r0, [sp] @ zero_extendqisi2
1816 .LVL194:
243:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1817 .loc 1 243 30 view .LVU420
1818 01de 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2
1819 01e2 40EA0320 orr r0, r0, r3, lsl #8
1820 01e6 00B2 sxth r0, r0
1821 01e8 FFF7FEFF bl __aeabi_i2d
1822 .LVL195:
1823 01ec 52A3 adr r3, .L73
1824 01ee D3E90023 ldrd r2, [r3]
1825 01f2 FFF7FEFF bl __aeabi_dmul
1826 .LVL196:
1827 01f6 52A3 adr r3, .L73+8
1828 01f8 D3E90023 ldrd r2, [r3]
1829 01fc FFF7FEFF bl __aeabi_dadd
1830 .LVL197:
243:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1831 .loc 1 243 28 view .LVU421
1832 0200 FFF7FEFF bl __aeabi_d2iz
1833 .LVL198:
1834 0204 6082 strh r0, [r4, #18] @ movhi
244:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[11] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1835 .loc 1 244 3 is_stmt 1 view .LVU422
244:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[11] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1836 .loc 1 244 30 is_stmt 0 view .LVU423
1837 0206 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2
1838 020a 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2
1839 020e 40EA0320 orr r0, r0, r3, lsl #8
1840 0212 00B2 sxth r0, r0
1841 0214 FFF7FEFF bl __aeabi_i2d
1842 .LVL199:
1843 0218 47A3 adr r3, .L73
1844 021a D3E90023 ldrd r2, [r3]
1845 021e FFF7FEFF bl __aeabi_dmul
1846 .LVL200:
1847 0222 47A3 adr r3, .L73+8
1848 0224 D3E90023 ldrd r2, [r3]
1849 0228 FFF7FEFF bl __aeabi_dadd
1850 .LVL201:
244:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[11] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1851 .loc 1 244 28 view .LVU424
1852 022c FFF7FEFF bl __aeabi_d2iz
ARM GAS /tmp/cc16Zqrx.s page 43
1853 .LVL202:
1854 0230 A082 strh r0, [r4, #20] @ movhi
245:Core/Src/ADBMS_Abstraction.c ****
1855 .loc 1 245 3 is_stmt 1 view .LVU425
245:Core/Src/ADBMS_Abstraction.c ****
1856 .loc 1 245 30 is_stmt 0 view .LVU426
1857 0232 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2
1858 0236 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2
1859 023a 40EA0320 orr r0, r0, r3, lsl #8
1860 023e 00B2 sxth r0, r0
1861 0240 FFF7FEFF bl __aeabi_i2d
1862 .LVL203:
1863 0244 3CA3 adr r3, .L73
1864 0246 D3E90023 ldrd r2, [r3]
1865 024a FFF7FEFF bl __aeabi_dmul
1866 .LVL204:
1867 024e 3CA3 adr r3, .L73+8
1868 0250 D3E90023 ldrd r2, [r3]
1869 0254 FFF7FEFF bl __aeabi_dadd
1870 .LVL205:
245:Core/Src/ADBMS_Abstraction.c ****
1871 .loc 1 245 28 view .LVU427
1872 0258 FFF7FEFF bl __aeabi_d2iz
1873 .LVL206:
1874 025c E082 strh r0, [r4, #22] @ movhi
1875 .LBB30:
247:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1876 .loc 1 247 3 is_stmt 1 view .LVU428
1877 025e 0622 movs r2, #6
1878 0260 6946 mov r1, sp
1879 0262 0920 movs r0, #9
1880 0264 FFF7FEFF bl readCMD
1881 .LVL207:
247:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1882 .loc 1 247 3 discriminator 1 view .LVU429
1883 0268 0546 mov r5, r0
1884 .LVL208:
247:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1885 .loc 1 247 3 is_stmt 0 discriminator 1 view .LVU430
1886 026a 0028 cmp r0, #0
1887 026c 7FF4D2AE bne .L70
1888 .LBE30:
247:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1889 .loc 1 247 58 is_stmt 1 discriminator 2 view .LVU431
248:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1890 .loc 1 248 3 view .LVU432
248:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1891 .loc 1 248 30 is_stmt 0 view .LVU433
1892 0270 9DF80000 ldrb r0, [sp] @ zero_extendqisi2
1893 .LVL209:
248:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1894 .loc 1 248 30 view .LVU434
1895 0274 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2
1896 0278 40EA0320 orr r0, r0, r3, lsl #8
1897 027c 00B2 sxth r0, r0
1898 027e FFF7FEFF bl __aeabi_i2d
1899 .LVL210:
ARM GAS /tmp/cc16Zqrx.s page 44
1900 0282 2DA3 adr r3, .L73
1901 0284 D3E90023 ldrd r2, [r3]
1902 0288 FFF7FEFF bl __aeabi_dmul
1903 .LVL211:
1904 028c 2CA3 adr r3, .L73+8
1905 028e D3E90023 ldrd r2, [r3]
1906 0292 FFF7FEFF bl __aeabi_dadd
1907 .LVL212:
248:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1908 .loc 1 248 28 view .LVU435
1909 0296 FFF7FEFF bl __aeabi_d2iz
1910 .LVL213:
1911 029a 2083 strh r0, [r4, #24] @ movhi
249:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[14] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1912 .loc 1 249 3 is_stmt 1 view .LVU436
249:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[14] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1913 .loc 1 249 30 is_stmt 0 view .LVU437
1914 029c 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2
1915 02a0 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2
1916 02a4 40EA0320 orr r0, r0, r3, lsl #8
1917 02a8 00B2 sxth r0, r0
1918 02aa FFF7FEFF bl __aeabi_i2d
1919 .LVL214:
1920 02ae 22A3 adr r3, .L73
1921 02b0 D3E90023 ldrd r2, [r3]
1922 02b4 FFF7FEFF bl __aeabi_dmul
1923 .LVL215:
1924 02b8 21A3 adr r3, .L73+8
1925 02ba D3E90023 ldrd r2, [r3]
1926 02be FFF7FEFF bl __aeabi_dadd
1927 .LVL216:
249:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[14] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1928 .loc 1 249 28 view .LVU438
1929 02c2 FFF7FEFF bl __aeabi_d2iz
1930 .LVL217:
1931 02c6 6083 strh r0, [r4, #26] @ movhi
250:Core/Src/ADBMS_Abstraction.c ****
1932 .loc 1 250 3 is_stmt 1 view .LVU439
250:Core/Src/ADBMS_Abstraction.c ****
1933 .loc 1 250 30 is_stmt 0 view .LVU440
1934 02c8 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2
1935 02cc 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2
1936 02d0 40EA0320 orr r0, r0, r3, lsl #8
1937 02d4 00B2 sxth r0, r0
1938 02d6 FFF7FEFF bl __aeabi_i2d
1939 .LVL218:
1940 02da 17A3 adr r3, .L73
1941 02dc D3E90023 ldrd r2, [r3]
1942 02e0 FFF7FEFF bl __aeabi_dmul
1943 .LVL219:
1944 02e4 16A3 adr r3, .L73+8
1945 02e6 D3E90023 ldrd r2, [r3]
1946 02ea FFF7FEFF bl __aeabi_dadd
1947 .LVL220:
250:Core/Src/ADBMS_Abstraction.c ****
1948 .loc 1 250 28 view .LVU441
1949 02ee FFF7FEFF bl __aeabi_d2iz
ARM GAS /tmp/cc16Zqrx.s page 45
1950 .LVL221:
1951 02f2 A083 strh r0, [r4, #28] @ movhi
1952 .LBB31:
252:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1953 .loc 1 252 3 is_stmt 1 view .LVU442
1954 02f4 0622 movs r2, #6
1955 02f6 6946 mov r1, sp
1956 02f8 0B20 movs r0, #11
1957 02fa FFF7FEFF bl readCMD
1958 .LVL222:
252:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1959 .loc 1 252 3 discriminator 1 view .LVU443
1960 02fe 0546 mov r5, r0
1961 .LVL223:
252:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1962 .loc 1 252 3 is_stmt 0 discriminator 1 view .LVU444
1963 0300 0028 cmp r0, #0
1964 0302 7FF487AE bne .L70
1965 .LBE31:
252:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1966 .loc 1 252 58 is_stmt 1 discriminator 2 view .LVU445
253:Core/Src/ADBMS_Abstraction.c ****
1967 .loc 1 253 3 view .LVU446
253:Core/Src/ADBMS_Abstraction.c ****
1968 .loc 1 253 30 is_stmt 0 view .LVU447
1969 0306 9DF80000 ldrb r0, [sp] @ zero_extendqisi2
1970 .LVL224:
253:Core/Src/ADBMS_Abstraction.c ****
1971 .loc 1 253 30 view .LVU448
1972 030a 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2
1973 030e 40EA0320 orr r0, r0, r3, lsl #8
1974 0312 00B2 sxth r0, r0
1975 0314 FFF7FEFF bl __aeabi_i2d
1976 .LVL225:
1977 0318 07A3 adr r3, .L73
1978 031a D3E90023 ldrd r2, [r3]
1979 031e FFF7FEFF bl __aeabi_dmul
1980 .LVL226:
1981 0322 07A3 adr r3, .L73+8
1982 0324 D3E90023 ldrd r2, [r3]
1983 0328 FFF7FEFF bl __aeabi_dadd
1984 .LVL227:
253:Core/Src/ADBMS_Abstraction.c ****
1985 .loc 1 253 28 view .LVU449
1986 032c FFF7FEFF bl __aeabi_d2iz
1987 .LVL228:
1988 0330 E083 strh r0, [r4, #30] @ movhi
255:Core/Src/ADBMS_Abstraction.c **** }
1989 .loc 1 255 3 is_stmt 1 view .LVU450
255:Core/Src/ADBMS_Abstraction.c **** }
1990 .loc 1 255 10 is_stmt 0 view .LVU451
1991 0332 6FE6 b .L70
1992 .L74:
1993 0334 AFF30080 .align 3
1994 .L73:
1995 0338 33333333 .word 858993459
1996 033c 3333C33F .word 1069757235
ARM GAS /tmp/cc16Zqrx.s page 46
1997 0340 00000000 .word 0
1998 0344 00709740 .word 1083666432
1999 .cfi_endproc
2000 .LFE138:
2002 .section .text.amsCellMeasurement,"ax",%progbits
2003 .align 1
2004 .global amsCellMeasurement
2005 .syntax unified
2006 .thumb
2007 .thumb_func
2009 amsCellMeasurement:
2010 .LVL229:
2011 .LFB127:
63:Core/Src/ADBMS_Abstraction.c **** #warning check conversion counter to ensure that continous conversion has not been stopped
2012 .loc 1 63 47 is_stmt 1 view -0
2013 .cfi_startproc
2014 @ args = 0, pretend = 0, frame = 0
2015 @ frame_needed = 0, uses_anonymous_args = 0
63:Core/Src/ADBMS_Abstraction.c **** #warning check conversion counter to ensure that continous conversion has not been stopped
2016 .loc 1 63 47 is_stmt 0 view .LVU453
2017 0000 08B5 push {r3, lr}
2018 .cfi_def_cfa_offset 8
2019 .cfi_offset 3, -8
2020 .cfi_offset 14, -4
66:Core/Src/ADBMS_Abstraction.c **** }
2021 .loc 1 66 3 is_stmt 1 view .LVU454
66:Core/Src/ADBMS_Abstraction.c **** }
2022 .loc 1 66 10 is_stmt 0 view .LVU455
2023 0002 FFF7FEFF bl amsReadCellVoltages
2024 .LVL230:
67:Core/Src/ADBMS_Abstraction.c ****
2025 .loc 1 67 1 view .LVU456
2026 0006 08BD pop {r3, pc}
2027 .cfi_endproc
2028 .LFE127:
2030 .section .text.amsWriteComm,"ax",%progbits
2031 .align 1
2032 .global amsWriteComm
2033 .syntax unified
2034 .thumb
2035 .thumb_func
2037 amsWriteComm:
2038 .LVL231:
2039 .LFB139:
257:Core/Src/ADBMS_Abstraction.c ****
258:Core/Src/ADBMS_Abstraction.c **** uint8_t amsWriteComm(uint8_t device, uint8_t addr, uint8_t data) {
2040 .loc 1 258 66 is_stmt 1 view -0
2041 .cfi_startproc
2042 @ args = 0, pretend = 0, frame = 16
2043 @ frame_needed = 0, uses_anonymous_args = 0
2044 .loc 1 258 66 is_stmt 0 view .LVU458
2045 0000 00B5 push {lr}
2046 .cfi_def_cfa_offset 4
2047 .cfi_offset 14, -4
2048 0002 85B0 sub sp, sp, #20
2049 .cfi_def_cfa_offset 24
259:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByte = (device << 1);
ARM GAS /tmp/cc16Zqrx.s page 47
2050 .loc 1 259 3 is_stmt 1 view .LVU459
2051 .loc 1 259 11 is_stmt 0 view .LVU460
2052 0004 4000 lsls r0, r0, #1
2053 .LVL232:
260:Core/Src/ADBMS_Abstraction.c **** uint8_t txbuf[6] = {I2C_STRT << 4 | SLV_ACK, ctrlByte,
2054 .loc 1 260 3 is_stmt 1 view .LVU461
2055 .loc 1 260 11 is_stmt 0 view .LVU462
2056 0006 6723 movs r3, #103
2057 0008 8DF80830 strb r3, [sp, #8]
2058 000c 8DF80900 strb r0, [sp, #9]
2059 0010 0723 movs r3, #7
2060 0012 8DF80A30 strb r3, [sp, #10]
2061 0016 8DF80B10 strb r1, [sp, #11]
2062 001a 0123 movs r3, #1
2063 001c 8DF80C30 strb r3, [sp, #12]
2064 0020 8DF80D20 strb r2, [sp, #13]
2065 .LBB32:
261:Core/Src/ADBMS_Abstraction.c **** BLANK << 4 | SLV_ACK, addr,
262:Core/Src/ADBMS_Abstraction.c **** BLANK << 4 | SLV_ACK_STP, data};
263:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, txbuf, COMM_GROUP_SIZE));
2066 .loc 1 263 3 is_stmt 1 view .LVU463
2067 0024 0622 movs r2, #6
2068 .LVL233:
2069 .loc 1 263 3 is_stmt 0 view .LVU464
2070 0026 02A9 add r1, sp, #8
2071 .LVL234:
2072 .loc 1 263 3 view .LVU465
2073 0028 40F22170 movw r0, #1825
2074 .LVL235:
2075 .loc 1 263 3 view .LVU466
2076 002c FFF7FEFF bl writeCMD
2077 .LVL236:
2078 .loc 1 263 3 is_stmt 1 discriminator 1 view .LVU467
2079 0030 0346 mov r3, r0
2080 0032 18B1 cbz r0, .L82
2081 .LVL237:
2082 .L78:
2083 .loc 1 263 3 is_stmt 0 discriminator 1 view .LVU468
2084 .LBE32:
264:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {0,0,0,0,0,0};
265:Core/Src/ADBMS_Abstraction.c **** readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE);
266:Core/Src/ADBMS_Abstraction.c **** if (rxbuf[6] != txbuf[6]) {
267:Core/Src/ADBMS_Abstraction.c **** while(1){}
268:Core/Src/ADBMS_Abstraction.c **** }
269:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 72, NULL, 0));
270:Core/Src/ADBMS_Abstraction.c **** return 0;
271:Core/Src/ADBMS_Abstraction.c **** }
2085 .loc 1 271 1 view .LVU469
2086 0034 1846 mov r0, r3
2087 0036 05B0 add sp, sp, #20
2088 .cfi_remember_state
2089 .cfi_def_cfa_offset 4
2090 @ sp needed
2091 0038 5DF804FB ldr pc, [sp], #4
2092 .LVL238:
2093 .L82:
2094 .cfi_restore_state
ARM GAS /tmp/cc16Zqrx.s page 48
263:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {0,0,0,0,0,0};
2095 .loc 1 263 57 is_stmt 1 discriminator 2 view .LVU470
264:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {0,0,0,0,0,0};
2096 .loc 1 264 3 view .LVU471
264:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {0,0,0,0,0,0};
2097 .loc 1 264 11 is_stmt 0 view .LVU472
2098 003c 0023 movs r3, #0
2099 003e 0093 str r3, [sp]
2100 0040 ADF80430 strh r3, [sp, #4] @ movhi
265:Core/Src/ADBMS_Abstraction.c **** if (rxbuf[6] != txbuf[6]) {
2101 .loc 1 265 3 is_stmt 1 view .LVU473
2102 0044 0622 movs r2, #6
2103 0046 6946 mov r1, sp
2104 0048 40F22270 movw r0, #1826
2105 .LVL239:
265:Core/Src/ADBMS_Abstraction.c **** if (rxbuf[6] != txbuf[6]) {
2106 .loc 1 265 3 is_stmt 0 view .LVU474
2107 004c FFF7FEFF bl readCMD
2108 .LVL240:
266:Core/Src/ADBMS_Abstraction.c **** while(1){}
2109 .loc 1 266 3 is_stmt 1 view .LVU475
266:Core/Src/ADBMS_Abstraction.c **** while(1){}
2110 .loc 1 266 12 is_stmt 0 view .LVU476
2111 0050 9DF80620 ldrb r2, [sp, #6] @ zero_extendqisi2
266:Core/Src/ADBMS_Abstraction.c **** while(1){}
2112 .loc 1 266 24 view .LVU477
2113 0054 9DF80E30 ldrb r3, [sp, #14] @ zero_extendqisi2
266:Core/Src/ADBMS_Abstraction.c **** while(1){}
2114 .loc 1 266 6 view .LVU478
2115 0058 9A42 cmp r2, r3
2116 005a 00D0 beq .L79
2117 .L80:
267:Core/Src/ADBMS_Abstraction.c **** }
2118 .loc 1 267 5 is_stmt 1 view .LVU479
267:Core/Src/ADBMS_Abstraction.c **** }
2119 .loc 1 267 14 view .LVU480
267:Core/Src/ADBMS_Abstraction.c **** }
2120 .loc 1 267 10 view .LVU481
2121 005c FEE7 b .L80
2122 .L79:
2123 .LBB33:
269:Core/Src/ADBMS_Abstraction.c **** return 0;
2124 .loc 1 269 3 view .LVU482
2125 005e 0023 movs r3, #0
2126 0060 1A46 mov r2, r3
2127 0062 4821 movs r1, #72
2128 0064 40F22370 movw r0, #1827
2129 0068 FFF7FEFF bl writeCMD_I2C
2130 .LVL241:
2131 006c 0346 mov r3, r0
2132 .LVL242:
269:Core/Src/ADBMS_Abstraction.c **** return 0;
2133 .loc 1 269 3 discriminator 1 view .LVU483
2134 006e E1E7 b .L78
2135 .LBE33:
2136 .cfi_endproc
2137 .LFE139:
ARM GAS /tmp/cc16Zqrx.s page 49
2139 .section .text.amsReadComm,"ax",%progbits
2140 .align 1
2141 .global amsReadComm
2142 .syntax unified
2143 .thumb
2144 .thumb_func
2146 amsReadComm:
2147 .LVL243:
2148 .LFB140:
272:Core/Src/ADBMS_Abstraction.c ****
273:Core/Src/ADBMS_Abstraction.c **** uint8_t amsReadComm(uint8_t device, uint8_t addr, uint8_t* buf) {
2149 .loc 1 273 65 view -0
2150 .cfi_startproc
2151 @ args = 0, pretend = 0, frame = 16
2152 @ frame_needed = 0, uses_anonymous_args = 0
2153 .loc 1 273 65 is_stmt 0 view .LVU485
2154 0000 70B5 push {r4, r5, r6, lr}
2155 .cfi_def_cfa_offset 16
2156 .cfi_offset 4, -16
2157 .cfi_offset 5, -12
2158 .cfi_offset 6, -8
2159 .cfi_offset 14, -4
2160 0002 84B0 sub sp, sp, #16
2161 .cfi_def_cfa_offset 32
2162 0004 0446 mov r4, r0
2163 0006 1546 mov r5, r2
274:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByteW = (device << 1);
2164 .loc 1 274 3 is_stmt 1 view .LVU486
2165 .loc 1 274 11 is_stmt 0 view .LVU487
2166 0008 4300 lsls r3, r0, #1
2167 .LVL244:
275:Core/Src/ADBMS_Abstraction.c **** uint8_t txbuf[6] = {I2C_STRT << 4 | SLV_ACK, ctrlByteW,
2168 .loc 1 275 3 is_stmt 1 view .LVU488
2169 .loc 1 275 11 is_stmt 0 view .LVU489
2170 000a 6722 movs r2, #103
2171 .LVL245:
2172 .loc 1 275 11 view .LVU490
2173 000c 8DF80820 strb r2, [sp, #8]
2174 0010 8DF80930 strb r3, [sp, #9]
2175 0014 0723 movs r3, #7
2176 .LVL246:
2177 .loc 1 275 11 view .LVU491
2178 0016 8DF80A30 strb r3, [sp, #10]
2179 001a 8DF80B10 strb r1, [sp, #11]
2180 001e 0023 movs r3, #0
2181 0020 8DF80C30 strb r3, [sp, #12]
2182 0024 8DF80D30 strb r3, [sp, #13]
2183 .LBB34:
276:Core/Src/ADBMS_Abstraction.c **** BLANK << 4 | SLV_ACK, addr,
277:Core/Src/ADBMS_Abstraction.c **** 0, 0};
278:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, txbuf, COMM_GROUP_SIZE));
2184 .loc 1 278 3 is_stmt 1 view .LVU492
2185 0028 0622 movs r2, #6
2186 002a 02A9 add r1, sp, #8
2187 .LVL247:
2188 .loc 1 278 3 is_stmt 0 view .LVU493
2189 002c 40F22170 movw r0, #1825
ARM GAS /tmp/cc16Zqrx.s page 50
2190 .LVL248:
2191 .loc 1 278 3 view .LVU494
2192 0030 FFF7FEFF bl writeCMD
2193 .LVL249:
2194 .loc 1 278 3 is_stmt 1 discriminator 1 view .LVU495
2195 0034 0646 mov r6, r0
2196 0036 10B1 cbz r0, .L86
2197 .LVL250:
2198 .L84:
2199 .loc 1 278 3 is_stmt 0 discriminator 1 view .LVU496
2200 .LBE34:
279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
280:Core/Src/ADBMS_Abstraction.c ****
281:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByteR = (device << 1) | 1;
282:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {I2C_STRT << 4 | SLV_ACK, ctrlByteR,
283:Core/Src/ADBMS_Abstraction.c **** BLANK << 4 | MSTR_NO_ACK_STP, 0,
284:Core/Src/ADBMS_Abstraction.c **** 0, 0};
285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE));
286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
287:Core/Src/ADBMS_Abstraction.c **** if(readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE) != 0) {
288:Core/Src/ADBMS_Abstraction.c **** return 0;
289:Core/Src/ADBMS_Abstraction.c **** }
290:Core/Src/ADBMS_Abstraction.c ****
291:Core/Src/ADBMS_Abstraction.c **** *buf = rxbuf[4];
292:Core/Src/ADBMS_Abstraction.c ****
293:Core/Src/ADBMS_Abstraction.c **** return 0;
294:Core/Src/ADBMS_Abstraction.c **** }...
2201 .loc 1 294 1 view .LVU497
2202 0038 3046 mov r0, r6
2203 003a 04B0 add sp, sp, #16
2204 .cfi_remember_state
2205 .cfi_def_cfa_offset 16
2206 @ sp needed
2207 003c 70BD pop {r4, r5, r6, pc}
2208 .LVL251:
2209 .L86:
2210 .cfi_restore_state
278:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, txbuf, COMM_GROUP_SIZE));
2211 .loc 1 278 57 is_stmt 1 discriminator 2 view .LVU498
2212 .LBB35:
279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
2213 .loc 1 279 3 view .LVU499
2214 003e 0023 movs r3, #0
2215 0040 1A46 mov r2, r3
2216 0042 3021 movs r1, #48
2217 0044 40F22370 movw r0, #1827
2218 .LVL252:
279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
2219 .loc 1 279 3 is_stmt 0 view .LVU500
2220 0048 FFF7FEFF bl writeCMD_I2C
2221 .LVL253:
279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
2222 .loc 1 279 3 is_stmt 1 discriminator 1 view .LVU501
2223 004c 0646 mov r6, r0
2224 .LVL254:
279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
2225 .loc 1 279 3 is_stmt 0 discriminator 1 view .LVU502
ARM GAS /tmp/cc16Zqrx.s page 51
2226 004e 0028 cmp r0, #0
2227 0050 F2D1 bne .L84
2228 .LBE35:
279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
2229 .loc 1 279 50 is_stmt 1 discriminator 2 view .LVU503
281:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByteR = (device << 1) | 1;
2230 .loc 1 281 3 view .LVU504
281:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByteR = (device << 1) | 1;
2231 .loc 1 281 37 is_stmt 0 view .LVU505
2232 0052 6400 lsls r4, r4, #1
2233 .LVL255:
281:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByteR = (device << 1) | 1;
2234 .loc 1 281 37 view .LVU506
2235 0054 44F00104 orr r4, r4, #1
2236 .LVL256:
282:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {I2C_STRT << 4 | SLV_ACK, ctrlByteR,
2237 .loc 1 282 3 is_stmt 1 view .LVU507
282:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {I2C_STRT << 4 | SLV_ACK, ctrlByteR,
2238 .loc 1 282 11 is_stmt 0 view .LVU508
2239 0058 6723 movs r3, #103
2240 005a 8DF80030 strb r3, [sp]
2241 005e 8DF80140 strb r4, [sp, #1]
2242 0062 0923 movs r3, #9
2243 0064 8DF80230 strb r3, [sp, #2]
2244 0068 0023 movs r3, #0
2245 006a 8DF80330 strb r3, [sp, #3]
2246 006e 8DF80430 strb r3, [sp, #4]
2247 0072 8DF80530 strb r3, [sp, #5]
2248 .LBB36:
285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE));
2249 .loc 1 285 3 is_stmt 1 view .LVU509
2250 0076 0622 movs r2, #6
2251 0078 6946 mov r1, sp
2252 007a 40F22170 movw r0, #1825
2253 .LVL257:
285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE));
2254 .loc 1 285 3 is_stmt 0 view .LVU510
2255 007e FFF7FEFF bl writeCMD
2256 .LVL258:
285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE));
2257 .loc 1 285 3 is_stmt 1 discriminator 1 view .LVU511
2258 0082 0646 mov r6, r0
2259 .LVL259:
285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE));
2260 .loc 1 285 3 is_stmt 0 discriminator 1 view .LVU512
2261 0084 0028 cmp r0, #0
2262 0086 D7D1 bne .L84
2263 .LBE36:
285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE));
2264 .loc 1 285 57 is_stmt 1 discriminator 2 view .LVU513
2265 .LBB37:
286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
2266 .loc 1 286 3 view .LVU514
2267 0088 0023 movs r3, #0
2268 008a 1A46 mov r2, r3
2269 008c 3021 movs r1, #48
2270 008e 40F22370 movw r0, #1827
ARM GAS /tmp/cc16Zqrx.s page 52
2271 .LVL260:
286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
2272 .loc 1 286 3 is_stmt 0 view .LVU515
2273 0092 FFF7FEFF bl writeCMD_I2C
2274 .LVL261:
286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
2275 .loc 1 286 3 is_stmt 1 discriminator 1 view .LVU516
2276 0096 0646 mov r6, r0
2277 .LVL262:
286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
2278 .loc 1 286 3 is_stmt 0 discriminator 1 view .LVU517
2279 0098 0028 cmp r0, #0
2280 009a CDD1 bne .L84
2281 .LBE37:
286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0));
2282 .loc 1 286 50 is_stmt 1 discriminator 2 view .LVU518
287:Core/Src/ADBMS_Abstraction.c **** if(readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE) != 0) {
2283 .loc 1 287 3 view .LVU519
287:Core/Src/ADBMS_Abstraction.c **** if(readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE) != 0) {
2284 .loc 1 287 6 is_stmt 0 view .LVU520
2285 009c 0622 movs r2, #6
2286 009e 6946 mov r1, sp
2287 00a0 40F22270 movw r0, #1826
2288 .LVL263:
287:Core/Src/ADBMS_Abstraction.c **** if(readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE) != 0) {
2289 .loc 1 287 6 view .LVU521
2290 00a4 FFF7FEFF bl readCMD
2291 .LVL264:
287:Core/Src/ADBMS_Abstraction.c **** if(readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE) != 0) {
2292 .loc 1 287 5 discriminator 1 view .LVU522
2293 00a8 0028 cmp r0, #0
2294 00aa C5D1 bne .L84
291:Core/Src/ADBMS_Abstraction.c **** *buf = rxbuf[4];
2295 .loc 1 291 3 is_stmt 1 view .LVU523
291:Core/Src/ADBMS_Abstraction.c **** *buf = rxbuf[4];
2296 .loc 1 291 15 is_stmt 0 view .LVU524
2297 00ac 9DF80420 ldrb r2, [sp, #4] @ zero_extendqisi2
291:Core/Src/ADBMS_Abstraction.c **** *buf = rxbuf[4];
2298 .loc 1 291 8 view .LVU525
2299 00b0 2A70 strb r2, [r5]
293:Core/Src/ADBMS_Abstraction.c **** return 0;
2300 .loc 1 293 3 is_stmt 1 view .LVU526
293:Core/Src/ADBMS_Abstraction.c **** return 0;
2301 .loc 1 293 10 is_stmt 0 view .LVU527
2302 00b2 0646 mov r6, r0
2303 .LVL265:
293:Core/Src/ADBMS_Abstraction.c **** return 0;
2304 .loc 1 293 10 view .LVU528
2305 00b4 C0E7 b .L84
2306 .cfi_endproc
2307 .LFE140:
2309 .global numberofauxchannels
2310 .section .bss.numberofauxchannels,"aw",%nobits
2313 numberofauxchannels:
2314 0000 00 .space 1
2315 .global numberofcells
2316 .section .bss.numberofcells,"aw",%nobits
ARM GAS /tmp/cc16Zqrx.s page 53
2319 numberofcells:
2320 0000 00 .space 1
2321 .text
2322 .Letext0:
2323 .file 2 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-
2324 .file 3 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-
2325 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302x8.h"
2326 .file 5 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-
2327 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
2328 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h"
2329 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_spi.h"
2330 .file 9 "Core/Inc/ADBMS_LL_Driver.h"
2331 .file 10 "Core/Inc/ADBMS_Abstraction.h"
ARM GAS /tmp/cc16Zqrx.s page 54
DEFINED SYMBOLS
*ABS*:00000000 ADBMS_Abstraction.c
/tmp/cc16Zqrx.s:21 .text.amsConfig:00000000 $t
/tmp/cc16Zqrx.s:27 .text.amsConfig:00000000 amsConfig
/tmp/cc16Zqrx.s:83 .text.amsWakeUp:00000000 $t
/tmp/cc16Zqrx.s:89 .text.amsWakeUp:00000000 amsWakeUp
/tmp/cc16Zqrx.s:117 .text.amsConfigCellMeasurement:00000000 $t
/tmp/cc16Zqrx.s:123 .text.amsConfigCellMeasurement:00000000 amsConfigCellMeasurement
/tmp/cc16Zqrx.s:144 .text.amsConfigCellMeasurement:00000008 $d
/tmp/cc16Zqrx.s:2319 .bss.numberofcells:00000000 numberofcells
/tmp/cc16Zqrx.s:154 .text.amsAuxAndStatusMeasurement:00000000 $t
/tmp/cc16Zqrx.s:160 .text.amsAuxAndStatusMeasurement:00000000 amsAuxAndStatusMeasurement
/tmp/cc16Zqrx.s:727 .text.amsAuxAndStatusMeasurement:00000400 $d
/tmp/cc16Zqrx.s:736 .text.amsConfigBalancing:00000000 $t
/tmp/cc16Zqrx.s:742 .text.amsConfigBalancing:00000000 amsConfigBalancing
/tmp/cc16Zqrx.s:949 .text.amsStartBalancing:00000000 $t
/tmp/cc16Zqrx.s:955 .text.amsStartBalancing:00000000 amsStartBalancing
/tmp/cc16Zqrx.s:982 .text.amsStopBalancing:00000000 $t
/tmp/cc16Zqrx.s:988 .text.amsStopBalancing:00000000 amsStopBalancing
/tmp/cc16Zqrx.s:1011 .text.amsSelfTest:00000000 $t
/tmp/cc16Zqrx.s:1017 .text.amsSelfTest:00000000 amsSelfTest
/tmp/cc16Zqrx.s:1032 .text.amsConfigOverUnderVoltage:00000000 $t
/tmp/cc16Zqrx.s:1038 .text.amsConfigOverUnderVoltage:00000000 amsConfigOverUnderVoltage
/tmp/cc16Zqrx.s:1150 .rodata.amsReset.str1.4:00000000 $d
/tmp/cc16Zqrx.s:1154 .text.amsReset:00000000 $t
/tmp/cc16Zqrx.s:1160 .text.amsReset:00000000 amsReset
/tmp/cc16Zqrx.s:1288 .text.amsReset:00000098 $d
/tmp/cc16Zqrx.s:1294 .text.initAMS:00000000 $t
/tmp/cc16Zqrx.s:1300 .text.initAMS:00000000 initAMS
/tmp/cc16Zqrx.s:1338 .text.initAMS:00000018 $d
/tmp/cc16Zqrx.s:2313 .bss.numberofauxchannels:00000000 numberofauxchannels
/tmp/cc16Zqrx.s:1344 .text.amsCheckUnderOverVoltage:00000000 $t
/tmp/cc16Zqrx.s:1350 .text.amsCheckUnderOverVoltage:00000000 amsCheckUnderOverVoltage
/tmp/cc16Zqrx.s:1459 .text.amsCheckUnderOverVoltage:00000068 $d
/tmp/cc16Zqrx.s:1464 .text.amsClearAux:00000000 $t
/tmp/cc16Zqrx.s:1470 .text.amsClearAux:00000000 amsClearAux
/tmp/cc16Zqrx.s:1498 .text.amsClearCells:00000000 $t
/tmp/cc16Zqrx.s:1504 .text.amsClearCells:00000000 amsClearCells
/tmp/cc16Zqrx.s:1532 .text.amsReadCellVoltages:00000000 $t
/tmp/cc16Zqrx.s:1538 .text.amsReadCellVoltages:00000000 amsReadCellVoltages
/tmp/cc16Zqrx.s:1995 .text.amsReadCellVoltages:00000338 $d
/tmp/cc16Zqrx.s:2003 .text.amsCellMeasurement:00000000 $t
/tmp/cc16Zqrx.s:2009 .text.amsCellMeasurement:00000000 amsCellMeasurement
/tmp/cc16Zqrx.s:2031 .text.amsWriteComm:00000000 $t
/tmp/cc16Zqrx.s:2037 .text.amsWriteComm:00000000 amsWriteComm
/tmp/cc16Zqrx.s:2140 .text.amsReadComm:00000000 $t
/tmp/cc16Zqrx.s:2146 .text.amsReadComm:00000000 amsReadComm
/tmp/cc16Zqrx.s:2314 .bss.numberofauxchannels:00000000 $d
/tmp/cc16Zqrx.s:2320 .bss.numberofcells:00000000 $d
UNDEFINED SYMBOLS
readCMD
writeCMD
__aeabi_i2d
__aeabi_dmul
__aeabi_dadd
__aeabi_d2iz
ARM GAS /tmp/cc16Zqrx.s page 55
__aeabi_d2uiz
pollCMD
mcuDelay
adbmsDriverInit
writeCMD_I2C