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

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