ARM GAS  /tmp/ccqqH0ud.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              	.LFB131:
   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 **** 
  10:Core/Src/ADBMS_Abstraction.c **** 
  11:Core/Src/ADBMS_Abstraction.c **** 
  12:Core/Src/ADBMS_Abstraction.c **** uint8 numberofcells;
  13:Core/Src/ADBMS_Abstraction.c **** uint8 numberofauxchannels;
  14:Core/Src/ADBMS_Abstraction.c **** 
  15:Core/Src/ADBMS_Abstraction.c **** uint8 initAMS(SPI_HandleTypeDef* hspi, uint8 numofcells, uint8 numofaux)
  16:Core/Src/ADBMS_Abstraction.c **** {
  17:Core/Src/ADBMS_Abstraction.c **** 	adbmsDriverInit(hspi);
  18:Core/Src/ADBMS_Abstraction.c **** 	numberofcells = numofcells;
  19:Core/Src/ADBMS_Abstraction.c **** 	numberofauxchannels = numofaux;
  20:Core/Src/ADBMS_Abstraction.c **** 
  21:Core/Src/ADBMS_Abstraction.c **** 
  22:Core/Src/ADBMS_Abstraction.c **** 	amsWakeUp();
  23:Core/Src/ADBMS_Abstraction.c **** 	amsStopBalancing();
  24:Core/Src/ADBMS_Abstraction.c **** 	amsConfigOverVoltage(DEFAULT_OV);
  25:Core/Src/ADBMS_Abstraction.c **** 	amsConfigUnderVoltage(DEFAULT_UV);
  26:Core/Src/ADBMS_Abstraction.c **** 	amsConfigAuxMeasurement(0xFFFF);
  27:Core/Src/ADBMS_Abstraction.c **** 
  28:Core/Src/ADBMS_Abstraction.c **** 	return 0;
  29:Core/Src/ADBMS_Abstraction.c **** }
  30:Core/Src/ADBMS_Abstraction.c **** 
ARM GAS  /tmp/ccqqH0ud.s 			page 2


  31:Core/Src/ADBMS_Abstraction.c **** uint8 amsWakeUp()
  32:Core/Src/ADBMS_Abstraction.c **** {
  29              		.loc 1 32 1 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
  33:Core/Src/ADBMS_Abstraction.c **** 	uint8 buf[6];
  38              		.loc 1 33 2 view .LVU1
  34:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCFGA, buf, 6);
  39              		.loc 1 34 2 view .LVU2
  40 0004 0622     		movs	r2, #6
  41 0006 6946     		mov	r1, sp
  42 0008 0220     		movs	r0, #2
  43 000a FFF7FEFF 		bl	readCMD
  44              	.LVL0:
  35:Core/Src/ADBMS_Abstraction.c **** 	return 0;
  45              		.loc 1 35 2 view .LVU3
  36:Core/Src/ADBMS_Abstraction.c **** }
  46              		.loc 1 36 1 is_stmt 0 view .LVU4
  47 000e 0020     		movs	r0, #0
  48 0010 03B0     		add	sp, sp, #12
  49              		.cfi_def_cfa_offset 4
  50              		@ sp needed
  51 0012 5DF804FB 		ldr	pc, [sp], #4
  52              		.cfi_endproc
  53              	.LFE131:
  55              		.section	.text.amsConfigCellMeasurement,"ax",%progbits
  56              		.align	1
  57              		.global	amsConfigCellMeasurement
  58              		.syntax unified
  59              		.thumb
  60              		.thumb_func
  62              	amsConfigCellMeasurement:
  63              	.LVL1:
  64              	.LFB133:
  37:Core/Src/ADBMS_Abstraction.c **** 
  38:Core/Src/ADBMS_Abstraction.c **** uint8 amsCellMeasurement(Cell_Module *module)
  39:Core/Src/ADBMS_Abstraction.c **** {
  40:Core/Src/ADBMS_Abstraction.c **** 	uint8_t rxbuffer[CV_GROUP_A_SIZE];
  41:Core/Src/ADBMS_Abstraction.c **** 	writeCMD((ADCV | CH000 | MD10), rxbuffer, 0);
  42:Core/Src/ADBMS_Abstraction.c **** 	mcuDelay(5);
  43:Core/Src/ADBMS_Abstraction.c **** 	amsReadCellVoltages(module);
  44:Core/Src/ADBMS_Abstraction.c **** 	return 0;
  45:Core/Src/ADBMS_Abstraction.c **** }
  46:Core/Src/ADBMS_Abstraction.c **** 
  47:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigCellMeasurement(uint8 numberofChannels)
  48:Core/Src/ADBMS_Abstraction.c **** {
  65              		.loc 1 48 1 is_stmt 1 view -0
  66              		.cfi_startproc
  67              		@ args = 0, pretend = 0, frame = 0
  68              		@ frame_needed = 0, uses_anonymous_args = 0
  69              		@ link register save eliminated.
ARM GAS  /tmp/ccqqH0ud.s 			page 3


  49:Core/Src/ADBMS_Abstraction.c **** 	numberofcells = numberofChannels;
  70              		.loc 1 49 2 view .LVU6
  71              		.loc 1 49 16 is_stmt 0 view .LVU7
  72 0000 014B     		ldr	r3, .L4
  73 0002 1870     		strb	r0, [r3]
  50:Core/Src/ADBMS_Abstraction.c **** 	return 0;
  74              		.loc 1 50 2 is_stmt 1 view .LVU8
  51:Core/Src/ADBMS_Abstraction.c **** }
  75              		.loc 1 51 1 is_stmt 0 view .LVU9
  76 0004 0020     		movs	r0, #0
  77              	.LVL2:
  78              		.loc 1 51 1 view .LVU10
  79 0006 7047     		bx	lr
  80              	.L5:
  81              		.align	2
  82              	.L4:
  83 0008 00000000 		.word	numberofcells
  84              		.cfi_endproc
  85              	.LFE133:
  87              		.section	.text.amsAuxMeasurement,"ax",%progbits
  88              		.align	1
  89              		.global	amsAuxMeasurement
  90              		.syntax unified
  91              		.thumb
  92              		.thumb_func
  94              	amsAuxMeasurement:
  95              	.LVL3:
  96              	.LFB134:
  52:Core/Src/ADBMS_Abstraction.c **** 
  53:Core/Src/ADBMS_Abstraction.c **** uint8 amsAuxMeasurement(Cell_Module *module)
  54:Core/Src/ADBMS_Abstraction.c **** {
  97              		.loc 1 54 1 is_stmt 1 view -0
  98              		.cfi_startproc
  99              		@ args = 0, pretend = 0, frame = 8
 100              		@ frame_needed = 0, uses_anonymous_args = 0
 101              		.loc 1 54 1 is_stmt 0 view .LVU12
 102 0000 10B5     		push	{r4, lr}
 103              		.cfi_def_cfa_offset 8
 104              		.cfi_offset 4, -8
 105              		.cfi_offset 14, -4
 106 0002 82B0     		sub	sp, sp, #8
 107              		.cfi_def_cfa_offset 16
 108 0004 0446     		mov	r4, r0
  55:Core/Src/ADBMS_Abstraction.c **** 	uint8 args;
 109              		.loc 1 55 2 is_stmt 1 view .LVU13
  56:Core/Src/ADBMS_Abstraction.c **** 	uint8 rxbuf[AUX_GROUP_A_SIZE];
 110              		.loc 1 56 2 view .LVU14
  57:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(ADAX | MD01 | CHG000, &args, 0);
 111              		.loc 1 57 2 view .LVU15
 112 0006 0022     		movs	r2, #0
 113 0008 0DF10701 		add	r1, sp, #7
 114 000c 4FF49C60 		mov	r0, #1248
 115              	.LVL4:
 116              		.loc 1 57 2 is_stmt 0 view .LVU16
 117 0010 FFF7FEFF 		bl	writeCMD
 118              	.LVL5:
  58:Core/Src/ADBMS_Abstraction.c **** 
ARM GAS  /tmp/ccqqH0ud.s 			page 4


  59:Core/Src/ADBMS_Abstraction.c **** 	mcuDelay(5);
 119              		.loc 1 59 2 is_stmt 1 view .LVU17
 120 0014 0520     		movs	r0, #5
 121 0016 FFF7FEFF 		bl	mcuDelay
 122              	.LVL6:
  60:Core/Src/ADBMS_Abstraction.c **** 
  61:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDAUXA, rxbuf, AUX_GROUP_A_SIZE);
 123              		.loc 1 61 2 view .LVU18
 124 001a 0622     		movs	r2, #6
 125 001c 6946     		mov	r1, sp
 126 001e 0C20     		movs	r0, #12
 127 0020 FFF7FEFF 		bl	readCMD
 128              	.LVL7:
  62:Core/Src/ADBMS_Abstraction.c **** 
  63:Core/Src/ADBMS_Abstraction.c **** 	module->auxVoltages[0] = rxbuf[0] | (rxbuf[1]<<8);
 129              		.loc 1 63 2 view .LVU19
 130              		.loc 1 63 32 is_stmt 0 view .LVU20
 131 0024 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 132              		.loc 1 63 44 view .LVU21
 133 0028 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 134              		.loc 1 63 36 view .LVU22
 135 002c 43EA0223 		orr	r3, r3, r2, lsl #8
 136              		.loc 1 63 25 view .LVU23
 137 0030 A384     		strh	r3, [r4, #36]	@ movhi
  64:Core/Src/ADBMS_Abstraction.c **** 	module->auxVoltages[1] = rxbuf[2] | (rxbuf[3]<<8);
 138              		.loc 1 64 2 is_stmt 1 view .LVU24
 139              		.loc 1 64 32 is_stmt 0 view .LVU25
 140 0032 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 141              		.loc 1 64 44 view .LVU26
 142 0036 9DF80320 		ldrb	r2, [sp, #3]	@ zero_extendqisi2
 143              		.loc 1 64 36 view .LVU27
 144 003a 43EA0223 		orr	r3, r3, r2, lsl #8
 145              		.loc 1 64 25 view .LVU28
 146 003e E384     		strh	r3, [r4, #38]	@ movhi
  65:Core/Src/ADBMS_Abstraction.c **** 	module->auxVoltages[2] = rxbuf[4] | (rxbuf[5]<<8);
 147              		.loc 1 65 2 is_stmt 1 view .LVU29
 148              		.loc 1 65 32 is_stmt 0 view .LVU30
 149 0040 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 150              		.loc 1 65 44 view .LVU31
 151 0044 9DF80520 		ldrb	r2, [sp, #5]	@ zero_extendqisi2
 152              		.loc 1 65 36 view .LVU32
 153 0048 43EA0223 		orr	r3, r3, r2, lsl #8
 154              		.loc 1 65 25 view .LVU33
 155 004c 2385     		strh	r3, [r4, #40]	@ movhi
  66:Core/Src/ADBMS_Abstraction.c **** 
  67:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDAUXB, rxbuf, AUX_GROUP_A_SIZE);
 156              		.loc 1 67 2 is_stmt 1 view .LVU34
 157 004e 0622     		movs	r2, #6
 158 0050 6946     		mov	r1, sp
 159 0052 0E20     		movs	r0, #14
 160 0054 FFF7FEFF 		bl	readCMD
 161              	.LVL8:
  68:Core/Src/ADBMS_Abstraction.c **** 
  69:Core/Src/ADBMS_Abstraction.c **** 	module->auxVoltages[3] = rxbuf[0] | (rxbuf[1]<<8);
 162              		.loc 1 69 2 view .LVU35
 163              		.loc 1 69 32 is_stmt 0 view .LVU36
 164 0058 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
ARM GAS  /tmp/ccqqH0ud.s 			page 5


 165              		.loc 1 69 44 view .LVU37
 166 005c 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 167              		.loc 1 69 36 view .LVU38
 168 0060 43EA0223 		orr	r3, r3, r2, lsl #8
 169              		.loc 1 69 25 view .LVU39
 170 0064 6385     		strh	r3, [r4, #42]	@ movhi
  70:Core/Src/ADBMS_Abstraction.c **** 	module->auxVoltages[4] = rxbuf[2] | (rxbuf[3]<<8);
 171              		.loc 1 70 2 is_stmt 1 view .LVU40
 172              		.loc 1 70 32 is_stmt 0 view .LVU41
 173 0066 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 174              		.loc 1 70 44 view .LVU42
 175 006a 9DF80320 		ldrb	r2, [sp, #3]	@ zero_extendqisi2
 176              		.loc 1 70 36 view .LVU43
 177 006e 43EA0223 		orr	r3, r3, r2, lsl #8
 178              		.loc 1 70 25 view .LVU44
 179 0072 A385     		strh	r3, [r4, #44]	@ movhi
  71:Core/Src/ADBMS_Abstraction.c **** 	module->refVoltage = rxbuf[4] | (rxbuf[5]<<8);
 180              		.loc 1 71 2 is_stmt 1 view .LVU45
 181              		.loc 1 71 28 is_stmt 0 view .LVU46
 182 0074 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 183              		.loc 1 71 40 view .LVU47
 184 0078 9DF80520 		ldrb	r2, [sp, #5]	@ zero_extendqisi2
 185              		.loc 1 71 32 view .LVU48
 186 007c 43EA0223 		orr	r3, r3, r2, lsl #8
 187              		.loc 1 71 21 view .LVU49
 188 0080 A4F84030 		strh	r3, [r4, #64]	@ movhi
  72:Core/Src/ADBMS_Abstraction.c **** 
  73:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDAUXC, rxbuf, AUX_GROUP_A_SIZE);
 189              		.loc 1 73 2 is_stmt 1 view .LVU50
 190 0084 0622     		movs	r2, #6
 191 0086 6946     		mov	r1, sp
 192 0088 0D20     		movs	r0, #13
 193 008a FFF7FEFF 		bl	readCMD
 194              	.LVL9:
  74:Core/Src/ADBMS_Abstraction.c **** 
  75:Core/Src/ADBMS_Abstraction.c **** 	module->auxVoltages[5] = rxbuf[0] | (rxbuf[1]<<8);
 195              		.loc 1 75 2 view .LVU51
 196              		.loc 1 75 32 is_stmt 0 view .LVU52
 197 008e 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 198              		.loc 1 75 44 view .LVU53
 199 0092 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 200              		.loc 1 75 36 view .LVU54
 201 0096 43EA0223 		orr	r3, r3, r2, lsl #8
 202              		.loc 1 75 25 view .LVU55
 203 009a E385     		strh	r3, [r4, #46]	@ movhi
  76:Core/Src/ADBMS_Abstraction.c **** 	module->auxVoltages[6] = rxbuf[2] | (rxbuf[3]<<8);
 204              		.loc 1 76 2 is_stmt 1 view .LVU56
 205              		.loc 1 76 32 is_stmt 0 view .LVU57
 206 009c 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 207              		.loc 1 76 44 view .LVU58
 208 00a0 9DF80320 		ldrb	r2, [sp, #3]	@ zero_extendqisi2
 209              		.loc 1 76 36 view .LVU59
 210 00a4 43EA0223 		orr	r3, r3, r2, lsl #8
 211              		.loc 1 76 25 view .LVU60
 212 00a8 2386     		strh	r3, [r4, #48]	@ movhi
  77:Core/Src/ADBMS_Abstraction.c **** 	module->auxVoltages[7] = rxbuf[4] | (rxbuf[5]<<8);
 213              		.loc 1 77 2 is_stmt 1 view .LVU61
ARM GAS  /tmp/ccqqH0ud.s 			page 6


 214              		.loc 1 77 32 is_stmt 0 view .LVU62
 215 00aa 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 216              		.loc 1 77 44 view .LVU63
 217 00ae 9DF80520 		ldrb	r2, [sp, #5]	@ zero_extendqisi2
 218              		.loc 1 77 36 view .LVU64
 219 00b2 43EA0223 		orr	r3, r3, r2, lsl #8
 220              		.loc 1 77 25 view .LVU65
 221 00b6 6386     		strh	r3, [r4, #50]	@ movhi
  78:Core/Src/ADBMS_Abstraction.c **** 
  79:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDAUXD, rxbuf, AUX_GROUP_A_SIZE);
 222              		.loc 1 79 2 is_stmt 1 view .LVU66
 223 00b8 0622     		movs	r2, #6
 224 00ba 6946     		mov	r1, sp
 225 00bc 0F20     		movs	r0, #15
 226 00be FFF7FEFF 		bl	readCMD
 227              	.LVL10:
  80:Core/Src/ADBMS_Abstraction.c **** 
  81:Core/Src/ADBMS_Abstraction.c **** 	module->auxVoltages[8] = rxbuf[0] | (rxbuf[1]<<8);
 228              		.loc 1 81 2 view .LVU67
 229              		.loc 1 81 32 is_stmt 0 view .LVU68
 230 00c2 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 231              		.loc 1 81 44 view .LVU69
 232 00c6 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 233              		.loc 1 81 36 view .LVU70
 234 00ca 43EA0223 		orr	r3, r3, r2, lsl #8
 235              		.loc 1 81 25 view .LVU71
 236 00ce A386     		strh	r3, [r4, #52]	@ movhi
  82:Core/Src/ADBMS_Abstraction.c **** 
  83:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 237              		.loc 1 83 2 is_stmt 1 view .LVU72
  84:Core/Src/ADBMS_Abstraction.c **** }
 238              		.loc 1 84 1 is_stmt 0 view .LVU73
 239 00d0 0020     		movs	r0, #0
 240 00d2 02B0     		add	sp, sp, #8
 241              		.cfi_def_cfa_offset 8
 242              		@ sp needed
 243 00d4 10BD     		pop	{r4, pc}
 244              		.loc 1 84 1 view .LVU74
 245              		.cfi_endproc
 246              	.LFE134:
 248              		.section	.text.amsInternalStatusMeasurement,"ax",%progbits
 249              		.align	1
 250              		.global	amsInternalStatusMeasurement
 251              		.syntax unified
 252              		.thumb
 253              		.thumb_func
 255              	amsInternalStatusMeasurement:
 256              	.LVL11:
 257              	.LFB135:
  85:Core/Src/ADBMS_Abstraction.c **** 
  86:Core/Src/ADBMS_Abstraction.c **** uint8 amsInternalStatusMeasurement(Cell_Module *module)
  87:Core/Src/ADBMS_Abstraction.c **** {
 258              		.loc 1 87 1 is_stmt 1 view -0
 259              		.cfi_startproc
 260              		@ args = 0, pretend = 0, frame = 8
 261              		@ frame_needed = 0, uses_anonymous_args = 0
 262              		.loc 1 87 1 is_stmt 0 view .LVU76
ARM GAS  /tmp/ccqqH0ud.s 			page 7


 263 0000 10B5     		push	{r4, lr}
 264              		.cfi_def_cfa_offset 8
 265              		.cfi_offset 4, -8
 266              		.cfi_offset 14, -4
 267 0002 82B0     		sub	sp, sp, #8
 268              		.cfi_def_cfa_offset 16
 269 0004 0446     		mov	r4, r0
  88:Core/Src/ADBMS_Abstraction.c **** 	uint8 rxbuffer[STATUS_GROUP_A_SIZE];
 270              		.loc 1 88 2 is_stmt 1 view .LVU77
  89:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(ADSTAT | MD01 | CHST000, rxbuffer, STATUS_GROUP_A_SIZE);
 271              		.loc 1 89 2 view .LVU78
 272 0006 0622     		movs	r2, #6
 273 0008 6946     		mov	r1, sp
 274 000a 4FF49D60 		mov	r0, #1256
 275              	.LVL12:
 276              		.loc 1 89 2 is_stmt 0 view .LVU79
 277 000e FFF7FEFF 		bl	writeCMD
 278              	.LVL13:
  90:Core/Src/ADBMS_Abstraction.c **** 	mcuDelay(5);
 279              		.loc 1 90 2 is_stmt 1 view .LVU80
 280 0012 0520     		movs	r0, #5
 281 0014 FFF7FEFF 		bl	mcuDelay
 282              	.LVL14:
  91:Core/Src/ADBMS_Abstraction.c **** 
  92:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDSTATA, rxbuffer, STATUS_GROUP_A_SIZE);
 283              		.loc 1 92 2 view .LVU81
 284 0018 0622     		movs	r2, #6
 285 001a 6946     		mov	r1, sp
 286 001c 1020     		movs	r0, #16
 287 001e FFF7FEFF 		bl	readCMD
 288              	.LVL15:
  93:Core/Src/ADBMS_Abstraction.c **** 
  94:Core/Src/ADBMS_Abstraction.c **** 	module->sumOfCellMeasurements = rxbuffer[0] | (rxbuffer[1]<<8);
 289              		.loc 1 94 2 view .LVU82
 290              		.loc 1 94 42 is_stmt 0 view .LVU83
 291 0022 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 292              		.loc 1 94 57 view .LVU84
 293 0026 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 294              		.loc 1 94 46 view .LVU85
 295 002a 43EA0223 		orr	r3, r3, r2, lsl #8
 296              		.loc 1 94 32 view .LVU86
 297 002e E387     		strh	r3, [r4, #62]	@ movhi
  95:Core/Src/ADBMS_Abstraction.c **** 	module->internalDieTemp		  = rxbuffer[2] | (rxbuffer[3]<<8);
 298              		.loc 1 95 2 is_stmt 1 view .LVU87
 299              		.loc 1 95 39 is_stmt 0 view .LVU88
 300 0030 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 301              		.loc 1 95 54 view .LVU89
 302 0034 9DF80320 		ldrb	r2, [sp, #3]	@ zero_extendqisi2
 303              		.loc 1 95 43 view .LVU90
 304 0038 43EA0223 		orr	r3, r3, r2, lsl #8
 305              		.loc 1 95 29 view .LVU91
 306 003c 2387     		strh	r3, [r4, #56]	@ movhi
  96:Core/Src/ADBMS_Abstraction.c **** 	module->analogSupplyVoltage   = rxbuffer[4] | (rxbuffer[5]<<8);
 307              		.loc 1 96 2 is_stmt 1 view .LVU92
 308              		.loc 1 96 42 is_stmt 0 view .LVU93
 309 003e 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 310              		.loc 1 96 57 view .LVU94
ARM GAS  /tmp/ccqqH0ud.s 			page 8


 311 0042 9DF80520 		ldrb	r2, [sp, #5]	@ zero_extendqisi2
 312              		.loc 1 96 46 view .LVU95
 313 0046 43EA0223 		orr	r3, r3, r2, lsl #8
 314              		.loc 1 96 32 view .LVU96
 315 004a 6387     		strh	r3, [r4, #58]	@ movhi
  97:Core/Src/ADBMS_Abstraction.c **** 
  98:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDSTATB, rxbuffer, STATUS_GROUP_B_SIZE);
 316              		.loc 1 98 2 is_stmt 1 view .LVU97
 317 004c 0622     		movs	r2, #6
 318 004e 6946     		mov	r1, sp
 319 0050 1220     		movs	r0, #18
 320 0052 FFF7FEFF 		bl	readCMD
 321              	.LVL16:
  99:Core/Src/ADBMS_Abstraction.c **** 	module->digitalSupplyVoltage = rxbuffer[0] | (rxbuffer[1]<<8);
 322              		.loc 1 99 2 view .LVU98
 323              		.loc 1 99 41 is_stmt 0 view .LVU99
 324 0056 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 325              		.loc 1 99 56 view .LVU100
 326 005a 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 327              		.loc 1 99 45 view .LVU101
 328 005e 43EA0223 		orr	r3, r3, r2, lsl #8
 329              		.loc 1 99 31 view .LVU102
 330 0062 A387     		strh	r3, [r4, #60]	@ movhi
 100:Core/Src/ADBMS_Abstraction.c **** 
 101:Core/Src/ADBMS_Abstraction.c **** 
 102:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 331              		.loc 1 102 2 is_stmt 1 view .LVU103
 103:Core/Src/ADBMS_Abstraction.c **** }
 332              		.loc 1 103 1 is_stmt 0 view .LVU104
 333 0064 0020     		movs	r0, #0
 334 0066 02B0     		add	sp, sp, #8
 335              		.cfi_def_cfa_offset 8
 336              		@ sp needed
 337 0068 10BD     		pop	{r4, pc}
 338              		.loc 1 103 1 view .LVU105
 339              		.cfi_endproc
 340              	.LFE135:
 342              		.section	.text.amsConfigAuxMeasurement,"ax",%progbits
 343              		.align	1
 344              		.global	amsConfigAuxMeasurement
 345              		.syntax unified
 346              		.thumb
 347              		.thumb_func
 349              	amsConfigAuxMeasurement:
 350              	.LVL17:
 351              	.LFB136:
 104:Core/Src/ADBMS_Abstraction.c **** 
 105:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigAuxMeasurement(uint16 Channels)
 106:Core/Src/ADBMS_Abstraction.c **** {
 352              		.loc 1 106 1 is_stmt 1 view -0
 353              		.cfi_startproc
 354              		@ args = 0, pretend = 0, frame = 8
 355              		@ frame_needed = 0, uses_anonymous_args = 0
 356              		.loc 1 106 1 is_stmt 0 view .LVU107
 357 0000 00B5     		push	{lr}
 358              		.cfi_def_cfa_offset 4
 359              		.cfi_offset 14, -4
ARM GAS  /tmp/ccqqH0ud.s 			page 9


 360 0002 83B0     		sub	sp, sp, #12
 361              		.cfi_def_cfa_offset 16
 107:Core/Src/ADBMS_Abstraction.c **** 	uint8 buf[CFG_GROUP_A_SIZE];
 362              		.loc 1 107 2 is_stmt 1 view .LVU108
 108:Core/Src/ADBMS_Abstraction.c **** 
 109:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCFGA, buf, CFG_GROUP_A_SIZE);
 363              		.loc 1 109 2 view .LVU109
 364 0004 0622     		movs	r2, #6
 365 0006 6946     		mov	r1, sp
 366 0008 0220     		movs	r0, #2
 367              	.LVL18:
 368              		.loc 1 109 2 is_stmt 0 view .LVU110
 369 000a FFF7FEFF 		bl	readCMD
 370              	.LVL19:
 110:Core/Src/ADBMS_Abstraction.c **** 	buf[0] |= 0xF8;
 371              		.loc 1 110 2 is_stmt 1 view .LVU111
 372              		.loc 1 110 5 is_stmt 0 view .LVU112
 373 000e 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 374              		.loc 1 110 9 view .LVU113
 375 0012 63F00703 		orn	r3, r3, #7
 376 0016 8DF80030 		strb	r3, [sp]
 111:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(WRCFGA, buf, CFG_GROUP_A_SIZE);
 377              		.loc 1 111 2 is_stmt 1 view .LVU114
 378 001a 0622     		movs	r2, #6
 379 001c 6946     		mov	r1, sp
 380 001e 0120     		movs	r0, #1
 381 0020 FFF7FEFF 		bl	writeCMD
 382              	.LVL20:
 112:Core/Src/ADBMS_Abstraction.c **** 
 113:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCFGB, buf, CFG_GROUP_B_SIZE);
 383              		.loc 1 113 2 view .LVU115
 384 0024 0622     		movs	r2, #6
 385 0026 6946     		mov	r1, sp
 386 0028 2620     		movs	r0, #38
 387 002a FFF7FEFF 		bl	readCMD
 388              	.LVL21:
 114:Core/Src/ADBMS_Abstraction.c **** 	buf[0] |= 0x0F;
 389              		.loc 1 114 2 view .LVU116
 390              		.loc 1 114 5 is_stmt 0 view .LVU117
 391 002e 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 392              		.loc 1 114 9 view .LVU118
 393 0032 43F00F03 		orr	r3, r3, #15
 394 0036 8DF80030 		strb	r3, [sp]
 115:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(WRCFGB, buf, CFG_GROUP_B_SIZE);
 395              		.loc 1 115 2 is_stmt 1 view .LVU119
 396 003a 0622     		movs	r2, #6
 397 003c 6946     		mov	r1, sp
 398 003e 2420     		movs	r0, #36
 399 0040 FFF7FEFF 		bl	writeCMD
 400              	.LVL22:
 116:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 401              		.loc 1 116 2 view .LVU120
 117:Core/Src/ADBMS_Abstraction.c **** }
 402              		.loc 1 117 1 is_stmt 0 view .LVU121
 403 0044 0020     		movs	r0, #0
 404 0046 03B0     		add	sp, sp, #12
 405              		.cfi_def_cfa_offset 4
ARM GAS  /tmp/ccqqH0ud.s 			page 10


 406              		@ sp needed
 407 0048 5DF804FB 		ldr	pc, [sp], #4
 408              		.cfi_endproc
 409              	.LFE136:
 411              		.section	.text.amsConfigGPIO,"ax",%progbits
 412              		.align	1
 413              		.global	amsConfigGPIO
 414              		.syntax unified
 415              		.thumb
 416              		.thumb_func
 418              	amsConfigGPIO:
 419              	.LVL23:
 420              	.LFB137:
 118:Core/Src/ADBMS_Abstraction.c **** 
 119:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigGPIO(uint16 gpios)
 120:Core/Src/ADBMS_Abstraction.c **** {
 421              		.loc 1 120 1 is_stmt 1 view -0
 422              		.cfi_startproc
 423              		@ args = 0, pretend = 0, frame = 0
 424              		@ frame_needed = 0, uses_anonymous_args = 0
 425              		@ link register save eliminated.
 121:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 426              		.loc 1 121 2 view .LVU123
 122:Core/Src/ADBMS_Abstraction.c **** }
 427              		.loc 1 122 1 is_stmt 0 view .LVU124
 428 0000 0020     		movs	r0, #0
 429              	.LVL24:
 430              		.loc 1 122 1 view .LVU125
 431 0002 7047     		bx	lr
 432              		.cfi_endproc
 433              	.LFE137:
 435              		.section	.text.amsSetGPIO,"ax",%progbits
 436              		.align	1
 437              		.global	amsSetGPIO
 438              		.syntax unified
 439              		.thumb
 440              		.thumb_func
 442              	amsSetGPIO:
 443              	.LVL25:
 444              	.LFB138:
 123:Core/Src/ADBMS_Abstraction.c **** 
 124:Core/Src/ADBMS_Abstraction.c **** uint8 amsSetGPIO(uint16 gpios)
 125:Core/Src/ADBMS_Abstraction.c **** {
 445              		.loc 1 125 1 is_stmt 1 view -0
 446              		.cfi_startproc
 447              		@ args = 0, pretend = 0, frame = 0
 448              		@ frame_needed = 0, uses_anonymous_args = 0
 449              		@ link register save eliminated.
 126:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 450              		.loc 1 126 2 view .LVU127
 127:Core/Src/ADBMS_Abstraction.c **** }
 451              		.loc 1 127 1 is_stmt 0 view .LVU128
 452 0000 0020     		movs	r0, #0
 453              	.LVL26:
 454              		.loc 1 127 1 view .LVU129
 455 0002 7047     		bx	lr
 456              		.cfi_endproc
ARM GAS  /tmp/ccqqH0ud.s 			page 11


 457              	.LFE138:
 459              		.section	.text.readGPIO,"ax",%progbits
 460              		.align	1
 461              		.global	readGPIO
 462              		.syntax unified
 463              		.thumb
 464              		.thumb_func
 466              	readGPIO:
 467              	.LVL27:
 468              	.LFB139:
 128:Core/Src/ADBMS_Abstraction.c **** 
 129:Core/Src/ADBMS_Abstraction.c **** uint8 readGPIO(Cell_Module* module)
 130:Core/Src/ADBMS_Abstraction.c **** {
 469              		.loc 1 130 1 is_stmt 1 view -0
 470              		.cfi_startproc
 471              		@ args = 0, pretend = 0, frame = 0
 472              		@ frame_needed = 0, uses_anonymous_args = 0
 473              		@ link register save eliminated.
 131:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 474              		.loc 1 131 2 view .LVU131
 132:Core/Src/ADBMS_Abstraction.c **** }
 475              		.loc 1 132 1 is_stmt 0 view .LVU132
 476 0000 0020     		movs	r0, #0
 477              	.LVL28:
 478              		.loc 1 132 1 view .LVU133
 479 0002 7047     		bx	lr
 480              		.cfi_endproc
 481              	.LFE139:
 483              		.section	.text.amsConfigBalancing,"ax",%progbits
 484              		.align	1
 485              		.global	amsConfigBalancing
 486              		.syntax unified
 487              		.thumb
 488              		.thumb_func
 490              	amsConfigBalancing:
 491              	.LVL29:
 492              	.LFB140:
 133:Core/Src/ADBMS_Abstraction.c **** 
 134:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigBalancing(uint32 Channels)
 135:Core/Src/ADBMS_Abstraction.c **** {
 493              		.loc 1 135 1 is_stmt 1 view -0
 494              		.cfi_startproc
 495              		@ args = 0, pretend = 0, frame = 8
 496              		@ frame_needed = 0, uses_anonymous_args = 0
 497              		.loc 1 135 1 is_stmt 0 view .LVU135
 498 0000 30B5     		push	{r4, r5, lr}
 499              		.cfi_def_cfa_offset 12
 500              		.cfi_offset 4, -12
 501              		.cfi_offset 5, -8
 502              		.cfi_offset 14, -4
 503 0002 83B0     		sub	sp, sp, #12
 504              		.cfi_def_cfa_offset 24
 505 0004 0446     		mov	r4, r0
 136:Core/Src/ADBMS_Abstraction.c **** 
 137:Core/Src/ADBMS_Abstraction.c **** 	uint8 regbuffer[CFG_GROUP_A_SIZE];
 506              		.loc 1 137 2 is_stmt 1 view .LVU136
 138:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCFGA, regbuffer, CFG_GROUP_A_SIZE);
ARM GAS  /tmp/ccqqH0ud.s 			page 12


 507              		.loc 1 138 2 view .LVU137
 508 0006 0622     		movs	r2, #6
 509 0008 6946     		mov	r1, sp
 510 000a 0220     		movs	r0, #2
 511              	.LVL30:
 512              		.loc 1 138 2 is_stmt 0 view .LVU138
 513 000c FFF7FEFF 		bl	readCMD
 514              	.LVL31:
 139:Core/Src/ADBMS_Abstraction.c **** 
 140:Core/Src/ADBMS_Abstraction.c **** 	regbuffer[4] = Channels & 0xFF;
 515              		.loc 1 140 2 is_stmt 1 view .LVU139
 516              		.loc 1 140 15 is_stmt 0 view .LVU140
 517 0010 8DF80440 		strb	r4, [sp, #4]
 141:Core/Src/ADBMS_Abstraction.c **** 	regbuffer[5] &= 0xF0;
 518              		.loc 1 141 2 is_stmt 1 view .LVU141
 519              		.loc 1 141 11 is_stmt 0 view .LVU142
 520 0014 9DF80530 		ldrb	r3, [sp, #5]	@ zero_extendqisi2
 521              		.loc 1 141 15 view .LVU143
 522 0018 03F0F003 		and	r3, r3, #240
 523 001c 8DF80530 		strb	r3, [sp, #5]
 142:Core/Src/ADBMS_Abstraction.c **** 	regbuffer[5] |= (Channels>>8) & 0x0F;
 524              		.loc 1 142 2 is_stmt 1 view .LVU144
 525              		.loc 1 142 32 is_stmt 0 view .LVU145
 526 0020 C4F30725 		ubfx	r5, r4, #8, #8
 527 0024 C4F30322 		ubfx	r2, r4, #8, #4
 528              		.loc 1 142 15 view .LVU146
 529 0028 1343     		orrs	r3, r3, r2
 530 002a 8DF80530 		strb	r3, [sp, #5]
 143:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(WRCFGA, regbuffer, CFG_GROUP_A_SIZE);
 531              		.loc 1 143 2 is_stmt 1 view .LVU147
 532 002e 0622     		movs	r2, #6
 533 0030 6946     		mov	r1, sp
 534 0032 0120     		movs	r0, #1
 535 0034 FFF7FEFF 		bl	writeCMD
 536              	.LVL32:
 144:Core/Src/ADBMS_Abstraction.c **** 
 145:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCFGB, regbuffer, CFG_GROUP_B_SIZE);
 537              		.loc 1 145 2 view .LVU148
 538 0038 0622     		movs	r2, #6
 539 003a 6946     		mov	r1, sp
 540 003c 2620     		movs	r0, #38
 541 003e FFF7FEFF 		bl	readCMD
 542              	.LVL33:
 146:Core/Src/ADBMS_Abstraction.c **** 	regbuffer[0] &= 0x0F;
 543              		.loc 1 146 2 view .LVU149
 544              		.loc 1 146 11 is_stmt 0 view .LVU150
 545 0042 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 546              		.loc 1 146 15 view .LVU151
 547 0046 03F00F03 		and	r3, r3, #15
 548 004a 8DF80030 		strb	r3, [sp]
 147:Core/Src/ADBMS_Abstraction.c **** 	regbuffer[0] |= (Channels>>8) & 0xF0;
 549              		.loc 1 147 2 is_stmt 1 view .LVU152
 550              		.loc 1 147 32 is_stmt 0 view .LVU153
 551 004e 05F0F005 		and	r5, r5, #240
 552              		.loc 1 147 15 view .LVU154
 553 0052 2B43     		orrs	r3, r3, r5
 554 0054 8DF80030 		strb	r3, [sp]
ARM GAS  /tmp/ccqqH0ud.s 			page 13


 148:Core/Src/ADBMS_Abstraction.c **** 	regbuffer[1] &= 0xFC;
 555              		.loc 1 148 2 is_stmt 1 view .LVU155
 556              		.loc 1 148 11 is_stmt 0 view .LVU156
 557 0058 9DF80130 		ldrb	r3, [sp, #1]	@ zero_extendqisi2
 558              		.loc 1 148 15 view .LVU157
 559 005c 03F0FC03 		and	r3, r3, #252
 560 0060 8DF80130 		strb	r3, [sp, #1]
 149:Core/Src/ADBMS_Abstraction.c **** 	regbuffer[1] |= 0x03 & (Channels>>16);
 561              		.loc 1 149 2 is_stmt 1 view .LVU158
 562              		.loc 1 149 23 is_stmt 0 view .LVU159
 563 0064 C4F30144 		ubfx	r4, r4, #16, #2
 564              	.LVL34:
 565              		.loc 1 149 15 view .LVU160
 566 0068 2343     		orrs	r3, r3, r4
 567 006a 8DF80130 		strb	r3, [sp, #1]
 150:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(WRCFGB, regbuffer, CFG_GROUP_B_SIZE);
 568              		.loc 1 150 2 is_stmt 1 view .LVU161
 569 006e 0622     		movs	r2, #6
 570 0070 6946     		mov	r1, sp
 571 0072 2420     		movs	r0, #36
 572 0074 FFF7FEFF 		bl	writeCMD
 573              	.LVL35:
 151:Core/Src/ADBMS_Abstraction.c **** 
 152:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 574              		.loc 1 152 2 view .LVU162
 153:Core/Src/ADBMS_Abstraction.c **** }
 575              		.loc 1 153 1 is_stmt 0 view .LVU163
 576 0078 0020     		movs	r0, #0
 577 007a 03B0     		add	sp, sp, #12
 578              		.cfi_def_cfa_offset 12
 579              		@ sp needed
 580 007c 30BD     		pop	{r4, r5, pc}
 581              		.cfi_endproc
 582              	.LFE140:
 584              		.section	.text.amsStartBalancing,"ax",%progbits
 585              		.align	1
 586              		.global	amsStartBalancing
 587              		.syntax unified
 588              		.thumb
 589              		.thumb_func
 591              	amsStartBalancing:
 592              	.LVL36:
 593              	.LFB141:
 154:Core/Src/ADBMS_Abstraction.c **** 
 155:Core/Src/ADBMS_Abstraction.c **** uint8 amsStartBalancing(uint8 dutyCycle)
 156:Core/Src/ADBMS_Abstraction.c **** {
 594              		.loc 1 156 1 is_stmt 1 view -0
 595              		.cfi_startproc
 596              		@ args = 0, pretend = 0, frame = 0
 597              		@ frame_needed = 0, uses_anonymous_args = 0
 598              		.loc 1 156 1 is_stmt 0 view .LVU165
 599 0000 08B5     		push	{r3, lr}
 600              		.cfi_def_cfa_offset 8
 601              		.cfi_offset 3, -8
 602              		.cfi_offset 14, -4
 157:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(UNMUTE, NULL, 0);
 603              		.loc 1 157 2 is_stmt 1 view .LVU166
ARM GAS  /tmp/ccqqH0ud.s 			page 14


 604 0002 0022     		movs	r2, #0
 605 0004 1146     		mov	r1, r2
 606 0006 2920     		movs	r0, #41
 607              	.LVL37:
 608              		.loc 1 157 2 is_stmt 0 view .LVU167
 609 0008 FFF7FEFF 		bl	writeCMD
 610              	.LVL38:
 158:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 611              		.loc 1 158 2 is_stmt 1 view .LVU168
 159:Core/Src/ADBMS_Abstraction.c **** }
 612              		.loc 1 159 1 is_stmt 0 view .LVU169
 613 000c 0020     		movs	r0, #0
 614 000e 08BD     		pop	{r3, pc}
 615              		.cfi_endproc
 616              	.LFE141:
 618              		.section	.text.amsStopBalancing,"ax",%progbits
 619              		.align	1
 620              		.global	amsStopBalancing
 621              		.syntax unified
 622              		.thumb
 623              		.thumb_func
 625              	amsStopBalancing:
 626              	.LFB142:
 160:Core/Src/ADBMS_Abstraction.c **** 
 161:Core/Src/ADBMS_Abstraction.c **** uint8 amsStopBalancing()
 162:Core/Src/ADBMS_Abstraction.c **** {
 627              		.loc 1 162 1 is_stmt 1 view -0
 628              		.cfi_startproc
 629              		@ args = 0, pretend = 0, frame = 0
 630              		@ frame_needed = 0, uses_anonymous_args = 0
 631 0000 08B5     		push	{r3, lr}
 632              		.cfi_def_cfa_offset 8
 633              		.cfi_offset 3, -8
 634              		.cfi_offset 14, -4
 163:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(MUTE, NULL, 0);
 635              		.loc 1 163 2 view .LVU171
 636 0002 0022     		movs	r2, #0
 637 0004 1146     		mov	r1, r2
 638 0006 2820     		movs	r0, #40
 639 0008 FFF7FEFF 		bl	writeCMD
 640              	.LVL39:
 164:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 641              		.loc 1 164 2 view .LVU172
 165:Core/Src/ADBMS_Abstraction.c **** }
 642              		.loc 1 165 1 is_stmt 0 view .LVU173
 643 000c 0020     		movs	r0, #0
 644 000e 08BD     		pop	{r3, pc}
 645              		.cfi_endproc
 646              	.LFE142:
 648              		.section	.text.amsSelfTest,"ax",%progbits
 649              		.align	1
 650              		.global	amsSelfTest
 651              		.syntax unified
 652              		.thumb
 653              		.thumb_func
 655              	amsSelfTest:
 656              	.LFB143:
ARM GAS  /tmp/ccqqH0ud.s 			page 15


 166:Core/Src/ADBMS_Abstraction.c **** 
 167:Core/Src/ADBMS_Abstraction.c **** uint8 amsSelfTest()
 168:Core/Src/ADBMS_Abstraction.c **** {
 657              		.loc 1 168 1 is_stmt 1 view -0
 658              		.cfi_startproc
 659              		@ args = 0, pretend = 0, frame = 0
 660              		@ frame_needed = 0, uses_anonymous_args = 0
 661              		@ link register save eliminated.
 169:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 662              		.loc 1 169 2 view .LVU175
 170:Core/Src/ADBMS_Abstraction.c **** }
 663              		.loc 1 170 1 is_stmt 0 view .LVU176
 664 0000 0020     		movs	r0, #0
 665 0002 7047     		bx	lr
 666              		.cfi_endproc
 667              	.LFE143:
 669              		.section	.text.amsConfigUnderVoltage,"ax",%progbits
 670              		.align	1
 671              		.global	amsConfigUnderVoltage
 672              		.syntax unified
 673              		.thumb
 674              		.thumb_func
 676              	amsConfigUnderVoltage:
 677              	.LVL40:
 678              	.LFB144:
 171:Core/Src/ADBMS_Abstraction.c **** 
 172:Core/Src/ADBMS_Abstraction.c **** 
 173:Core/Src/ADBMS_Abstraction.c **** 
 174:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigUnderVoltage(uint16 underVoltage)
 175:Core/Src/ADBMS_Abstraction.c **** {
 679              		.loc 1 175 1 is_stmt 1 view -0
 680              		.cfi_startproc
 681              		@ args = 0, pretend = 0, frame = 8
 682              		@ frame_needed = 0, uses_anonymous_args = 0
 683              		.loc 1 175 1 is_stmt 0 view .LVU178
 684 0000 10B5     		push	{r4, lr}
 685              		.cfi_def_cfa_offset 8
 686              		.cfi_offset 4, -8
 687              		.cfi_offset 14, -4
 688 0002 82B0     		sub	sp, sp, #8
 689              		.cfi_def_cfa_offset 16
 690 0004 0446     		mov	r4, r0
 176:Core/Src/ADBMS_Abstraction.c **** 	uint8 buffer[CFG_GROUP_A_SIZE];
 691              		.loc 1 176 2 is_stmt 1 view .LVU179
 177:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCFGA, buffer, CFG_GROUP_A_SIZE);
 692              		.loc 1 177 2 view .LVU180
 693 0006 0622     		movs	r2, #6
 694 0008 6946     		mov	r1, sp
 695 000a 0220     		movs	r0, #2
 696              	.LVL41:
 697              		.loc 1 177 2 is_stmt 0 view .LVU181
 698 000c FFF7FEFF 		bl	readCMD
 699              	.LVL42:
 178:Core/Src/ADBMS_Abstraction.c **** 
 179:Core/Src/ADBMS_Abstraction.c **** 	buffer[1] = (uint8) underVoltage & 0xFF;
 700              		.loc 1 179 2 is_stmt 1 view .LVU182
 701              		.loc 1 179 12 is_stmt 0 view .LVU183
ARM GAS  /tmp/ccqqH0ud.s 			page 16


 702 0010 8DF80140 		strb	r4, [sp, #1]
 180:Core/Src/ADBMS_Abstraction.c **** 	uint8 ovuv = buffer[2] & 0xF0;
 703              		.loc 1 180 2 is_stmt 1 view .LVU184
 704              		.loc 1 180 21 is_stmt 0 view .LVU185
 705 0014 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 706              		.loc 1 180 8 view .LVU186
 707 0018 03F0F003 		and	r3, r3, #240
 708              	.LVL43:
 181:Core/Src/ADBMS_Abstraction.c **** 	ovuv |= (uint8) (underVoltage >> 8) & 0x0F;
 709              		.loc 1 181 2 is_stmt 1 view .LVU187
 710              		.loc 1 181 38 is_stmt 0 view .LVU188
 711 001c C4F30324 		ubfx	r4, r4, #8, #4
 712              		.loc 1 181 7 view .LVU189
 713 0020 2343     		orrs	r3, r3, r4
 714              	.LVL44:
 182:Core/Src/ADBMS_Abstraction.c **** 	buffer[2] = ovuv;
 715              		.loc 1 182 2 is_stmt 1 view .LVU190
 716              		.loc 1 182 12 is_stmt 0 view .LVU191
 717 0022 8DF80230 		strb	r3, [sp, #2]
 183:Core/Src/ADBMS_Abstraction.c **** 
 184:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(WRCFGA, buffer, CFG_GROUP_A_SIZE);
 718              		.loc 1 184 2 is_stmt 1 view .LVU192
 719 0026 0622     		movs	r2, #6
 720 0028 6946     		mov	r1, sp
 721 002a 0120     		movs	r0, #1
 722 002c FFF7FEFF 		bl	writeCMD
 723              	.LVL45:
 185:Core/Src/ADBMS_Abstraction.c **** 
 186:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 724              		.loc 1 186 2 view .LVU193
 187:Core/Src/ADBMS_Abstraction.c **** }
 725              		.loc 1 187 1 is_stmt 0 view .LVU194
 726 0030 0020     		movs	r0, #0
 727 0032 02B0     		add	sp, sp, #8
 728              		.cfi_def_cfa_offset 8
 729              		@ sp needed
 730 0034 10BD     		pop	{r4, pc}
 731              		.cfi_endproc
 732              	.LFE144:
 734              		.section	.text.amsCheckUnderOverVoltage,"ax",%progbits
 735              		.align	1
 736              		.global	amsCheckUnderOverVoltage
 737              		.syntax unified
 738              		.thumb
 739              		.thumb_func
 741              	amsCheckUnderOverVoltage:
 742              	.LVL46:
 743              	.LFB145:
 188:Core/Src/ADBMS_Abstraction.c **** 
 189:Core/Src/ADBMS_Abstraction.c **** uint8 amsCheckUnderOverVoltage(Cell_Module *module)
 190:Core/Src/ADBMS_Abstraction.c **** {
 744              		.loc 1 190 1 is_stmt 1 view -0
 745              		.cfi_startproc
 746              		@ args = 0, pretend = 0, frame = 8
 747              		@ frame_needed = 0, uses_anonymous_args = 0
 748              		.loc 1 190 1 is_stmt 0 view .LVU196
 749 0000 10B5     		push	{r4, lr}
ARM GAS  /tmp/ccqqH0ud.s 			page 17


 750              		.cfi_def_cfa_offset 8
 751              		.cfi_offset 4, -8
 752              		.cfi_offset 14, -4
 753 0002 82B0     		sub	sp, sp, #8
 754              		.cfi_def_cfa_offset 16
 755 0004 0446     		mov	r4, r0
 191:Core/Src/ADBMS_Abstraction.c **** 	uint8 regbuffer[STATUS_GROUP_B_SIZE];
 756              		.loc 1 191 2 is_stmt 1 view .LVU197
 192:Core/Src/ADBMS_Abstraction.c **** 	uint32 overundervoltages = 0;
 757              		.loc 1 192 2 view .LVU198
 758              	.LVL47:
 193:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDSTATB, regbuffer, STATUS_GROUP_B_SIZE);
 759              		.loc 1 193 2 view .LVU199
 760 0006 0622     		movs	r2, #6
 761 0008 6946     		mov	r1, sp
 762 000a 1220     		movs	r0, #18
 763              	.LVL48:
 764              		.loc 1 193 2 is_stmt 0 view .LVU200
 765 000c FFF7FEFF 		bl	readCMD
 766              	.LVL49:
 194:Core/Src/ADBMS_Abstraction.c **** 	overundervoltages = regbuffer[2] | (regbuffer[3]<<8) | (regbuffer[4]<<16);
 767              		.loc 1 194 2 is_stmt 1 view .LVU201
 768              		.loc 1 194 31 is_stmt 0 view .LVU202
 769 0010 9DF802C0 		ldrb	ip, [sp, #2]	@ zero_extendqisi2
 770              		.loc 1 194 47 view .LVU203
 771 0014 9DF80330 		ldrb	r3, [sp, #3]	@ zero_extendqisi2
 772              		.loc 1 194 35 view .LVU204
 773 0018 4CEA032C 		orr	ip, ip, r3, lsl #8
 774              		.loc 1 194 67 view .LVU205
 775 001c 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 776              		.loc 1 194 55 view .LVU206
 777 0020 4CEA034C 		orr	ip, ip, r3, lsl #16
 778              	.LVL50:
 195:Core/Src/ADBMS_Abstraction.c **** 	module->overVoltage = 0;
 779              		.loc 1 195 2 is_stmt 1 view .LVU207
 780              		.loc 1 195 22 is_stmt 0 view .LVU208
 781 0024 0022     		movs	r2, #0
 782 0026 A265     		str	r2, [r4, #88]
 196:Core/Src/ADBMS_Abstraction.c **** 	module->underVoltage = 0;
 783              		.loc 1 196 2 is_stmt 1 view .LVU209
 784              		.loc 1 196 23 is_stmt 0 view .LVU210
 785 0028 E265     		str	r2, [r4, #92]
 197:Core/Src/ADBMS_Abstraction.c **** 	for(uint8 n = 0; n < 12; n++)
 786              		.loc 1 197 2 is_stmt 1 view .LVU211
 787              	.LBB2:
 788              		.loc 1 197 6 view .LVU212
 789              	.LVL51:
 790              		.loc 1 197 2 is_stmt 0 view .LVU213
 791 002a 13E0     		b	.L25
 792              	.LVL52:
 793              	.L26:
 794              	.LBB3:
 198:Core/Src/ADBMS_Abstraction.c **** 	{
 199:Core/Src/ADBMS_Abstraction.c **** 		uint8 overvolt = (overundervoltages>>(2*n+1)) & 0x01;
 795              		.loc 1 199 3 is_stmt 1 discriminator 3 view .LVU214
 796              		.loc 1 199 42 is_stmt 0 discriminator 3 view .LVU215
 797 002c 5300     		lsls	r3, r2, #1
ARM GAS  /tmp/ccqqH0ud.s 			page 18


 798              		.loc 1 199 44 discriminator 3 view .LVU216
 799 002e 591C     		adds	r1, r3, #1
 800              		.loc 1 199 38 discriminator 3 view .LVU217
 801 0030 2CFA01F1 		lsr	r1, ip, r1
 802              		.loc 1 199 9 discriminator 3 view .LVU218
 803 0034 01F00101 		and	r1, r1, #1
 804              	.LVL53:
 200:Core/Src/ADBMS_Abstraction.c **** 		uint8 undervolt = (overundervoltages>>(2*n))&0x01;
 805              		.loc 1 200 3 is_stmt 1 discriminator 3 view .LVU219
 806              		.loc 1 200 39 is_stmt 0 discriminator 3 view .LVU220
 807 0038 2CFA03F3 		lsr	r3, ip, r3
 808              		.loc 1 200 9 discriminator 3 view .LVU221
 809 003c 03F00103 		and	r3, r3, #1
 810              	.LVL54:
 201:Core/Src/ADBMS_Abstraction.c **** 
 202:Core/Src/ADBMS_Abstraction.c **** 		module->overVoltage |= overvolt<<n;
 811              		.loc 1 202 3 is_stmt 1 discriminator 3 view .LVU222
 812              		.loc 1 202 9 is_stmt 0 discriminator 3 view .LVU223
 813 0040 A06D     		ldr	r0, [r4, #88]
 814              		.loc 1 202 34 discriminator 3 view .LVU224
 815 0042 9140     		lsls	r1, r1, r2
 816              	.LVL55:
 817              		.loc 1 202 23 discriminator 3 view .LVU225
 818 0044 0843     		orrs	r0, r0, r1
 819 0046 A065     		str	r0, [r4, #88]
 203:Core/Src/ADBMS_Abstraction.c **** 		module->underVoltage |= undervolt<<n;
 820              		.loc 1 203 3 is_stmt 1 discriminator 3 view .LVU226
 821              		.loc 1 203 9 is_stmt 0 discriminator 3 view .LVU227
 822 0048 E16D     		ldr	r1, [r4, #92]
 823              		.loc 1 203 36 discriminator 3 view .LVU228
 824 004a 9340     		lsls	r3, r3, r2
 825              	.LVL56:
 826              		.loc 1 203 24 discriminator 3 view .LVU229
 827 004c 1943     		orrs	r1, r1, r3
 828 004e E165     		str	r1, [r4, #92]
 829              	.LBE3:
 197:Core/Src/ADBMS_Abstraction.c **** 	{
 830              		.loc 1 197 28 is_stmt 1 discriminator 3 view .LVU230
 831 0050 0132     		adds	r2, r2, #1
 832              	.LVL57:
 197:Core/Src/ADBMS_Abstraction.c **** 	{
 833              		.loc 1 197 28 is_stmt 0 discriminator 3 view .LVU231
 834 0052 D2B2     		uxtb	r2, r2
 835              	.LVL58:
 836              	.L25:
 197:Core/Src/ADBMS_Abstraction.c **** 	{
 837              		.loc 1 197 21 is_stmt 1 discriminator 1 view .LVU232
 838 0054 0B2A     		cmp	r2, #11
 839 0056 E9D9     		bls	.L26
 840              	.LBE2:
 204:Core/Src/ADBMS_Abstraction.c **** 	}
 205:Core/Src/ADBMS_Abstraction.c **** 
 206:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDAUXD,regbuffer,AUX_GROUP_D_SIZE);
 841              		.loc 1 206 2 view .LVU233
 842 0058 0622     		movs	r2, #6
 843              	.LVL59:
 844              		.loc 1 206 2 is_stmt 0 view .LVU234
ARM GAS  /tmp/ccqqH0ud.s 			page 19


 845 005a 6946     		mov	r1, sp
 846 005c 0F20     		movs	r0, #15
 847 005e FFF7FEFF 		bl	readCMD
 848              	.LVL60:
 207:Core/Src/ADBMS_Abstraction.c **** 	overundervoltages = 0;
 849              		.loc 1 207 2 is_stmt 1 view .LVU235
 208:Core/Src/ADBMS_Abstraction.c **** 	overundervoltages = regbuffer[4] | (regbuffer[5]<<8);
 850              		.loc 1 208 2 view .LVU236
 851              		.loc 1 208 31 is_stmt 0 view .LVU237
 852 0062 9DF804C0 		ldrb	ip, [sp, #4]	@ zero_extendqisi2
 853              		.loc 1 208 47 view .LVU238
 854 0066 9DF80530 		ldrb	r3, [sp, #5]	@ zero_extendqisi2
 855              		.loc 1 208 35 view .LVU239
 856 006a 4CEA032C 		orr	ip, ip, r3, lsl #8
 857              	.LVL61:
 209:Core/Src/ADBMS_Abstraction.c **** 
 210:Core/Src/ADBMS_Abstraction.c **** 	for(uint8 n = 0; n < 6; n++)
 858              		.loc 1 210 2 is_stmt 1 view .LVU240
 859              	.LBB4:
 860              		.loc 1 210 6 view .LVU241
 861              		.loc 1 210 12 is_stmt 0 view .LVU242
 862 006e 0021     		movs	r1, #0
 863              	.LVL62:
 864              	.L27:
 865              		.loc 1 210 21 is_stmt 1 discriminator 1 view .LVU243
 866 0070 0529     		cmp	r1, #5
 867 0072 18D8     		bhi	.L30
 868              	.LBB5:
 211:Core/Src/ADBMS_Abstraction.c **** 	{
 212:Core/Src/ADBMS_Abstraction.c **** 		uint8 overvolt = (overundervoltages>>(2*n+1)) & 0x01;
 869              		.loc 1 212 3 discriminator 3 view .LVU244
 870              		.loc 1 212 42 is_stmt 0 discriminator 3 view .LVU245
 871 0074 4B00     		lsls	r3, r1, #1
 872              		.loc 1 212 44 discriminator 3 view .LVU246
 873 0076 5A1C     		adds	r2, r3, #1
 874              		.loc 1 212 38 discriminator 3 view .LVU247
 875 0078 2CFA02F2 		lsr	r2, ip, r2
 876              		.loc 1 212 9 discriminator 3 view .LVU248
 877 007c 02F00102 		and	r2, r2, #1
 878              	.LVL63:
 213:Core/Src/ADBMS_Abstraction.c **** 		uint8 undervolt = (overundervoltages>>(2*n))&0x01;
 879              		.loc 1 213 3 is_stmt 1 discriminator 3 view .LVU249
 880              		.loc 1 213 39 is_stmt 0 discriminator 3 view .LVU250
 881 0080 2CFA03F3 		lsr	r3, ip, r3
 882              		.loc 1 213 9 discriminator 3 view .LVU251
 883 0084 03F00103 		and	r3, r3, #1
 884              	.LVL64:
 214:Core/Src/ADBMS_Abstraction.c **** 
 215:Core/Src/ADBMS_Abstraction.c **** 		module->overVoltage |= (uint32) overvolt<<(n+12);
 885              		.loc 1 215 3 is_stmt 1 discriminator 3 view .LVU252
 886              		.loc 1 215 9 is_stmt 0 discriminator 3 view .LVU253
 887 0088 A06D     		ldr	r0, [r4, #88]
 888              		.loc 1 215 47 discriminator 3 view .LVU254
 889 008a 01F10C0E 		add	lr, r1, #12
 890              		.loc 1 215 43 discriminator 3 view .LVU255
 891 008e 02FA0EF2 		lsl	r2, r2, lr
 892              	.LVL65:
ARM GAS  /tmp/ccqqH0ud.s 			page 20


 893              		.loc 1 215 23 discriminator 3 view .LVU256
 894 0092 1043     		orrs	r0, r0, r2
 895 0094 A065     		str	r0, [r4, #88]
 216:Core/Src/ADBMS_Abstraction.c **** 		module->underVoltage |= (uint32) undervolt<<(n+12);
 896              		.loc 1 216 3 is_stmt 1 discriminator 3 view .LVU257
 897              		.loc 1 216 9 is_stmt 0 discriminator 3 view .LVU258
 898 0096 E26D     		ldr	r2, [r4, #92]
 899              		.loc 1 216 45 discriminator 3 view .LVU259
 900 0098 03FA0EF3 		lsl	r3, r3, lr
 901              	.LVL66:
 902              		.loc 1 216 24 discriminator 3 view .LVU260
 903 009c 1A43     		orrs	r2, r2, r3
 904 009e E265     		str	r2, [r4, #92]
 905              	.LBE5:
 210:Core/Src/ADBMS_Abstraction.c **** 	{
 906              		.loc 1 210 27 is_stmt 1 discriminator 3 view .LVU261
 907 00a0 0131     		adds	r1, r1, #1
 908              	.LVL67:
 210:Core/Src/ADBMS_Abstraction.c **** 	{
 909              		.loc 1 210 27 is_stmt 0 discriminator 3 view .LVU262
 910 00a2 C9B2     		uxtb	r1, r1
 911              	.LVL68:
 210:Core/Src/ADBMS_Abstraction.c **** 	{
 912              		.loc 1 210 27 discriminator 3 view .LVU263
 913 00a4 E4E7     		b	.L27
 914              	.LVL69:
 915              	.L30:
 210:Core/Src/ADBMS_Abstraction.c **** 	{
 916              		.loc 1 210 27 discriminator 3 view .LVU264
 917              	.LBE4:
 217:Core/Src/ADBMS_Abstraction.c **** 	}
 218:Core/Src/ADBMS_Abstraction.c **** 
 219:Core/Src/ADBMS_Abstraction.c **** 
 220:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 918              		.loc 1 220 2 is_stmt 1 view .LVU265
 221:Core/Src/ADBMS_Abstraction.c **** }
 919              		.loc 1 221 1 is_stmt 0 view .LVU266
 920 00a6 0020     		movs	r0, #0
 921 00a8 02B0     		add	sp, sp, #8
 922              		.cfi_def_cfa_offset 8
 923              		@ sp needed
 924 00aa 10BD     		pop	{r4, pc}
 925              		.loc 1 221 1 view .LVU267
 926              		.cfi_endproc
 927              	.LFE145:
 929              		.section	.text.amsConfigOverVoltage,"ax",%progbits
 930              		.align	1
 931              		.global	amsConfigOverVoltage
 932              		.syntax unified
 933              		.thumb
 934              		.thumb_func
 936              	amsConfigOverVoltage:
 937              	.LVL70:
 938              	.LFB146:
 222:Core/Src/ADBMS_Abstraction.c **** 
 223:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigOverVoltage(uint16 overVoltage)
 224:Core/Src/ADBMS_Abstraction.c **** {
ARM GAS  /tmp/ccqqH0ud.s 			page 21


 939              		.loc 1 224 1 is_stmt 1 view -0
 940              		.cfi_startproc
 941              		@ args = 0, pretend = 0, frame = 8
 942              		@ frame_needed = 0, uses_anonymous_args = 0
 943              		.loc 1 224 1 is_stmt 0 view .LVU269
 944 0000 10B5     		push	{r4, lr}
 945              		.cfi_def_cfa_offset 8
 946              		.cfi_offset 4, -8
 947              		.cfi_offset 14, -4
 948 0002 82B0     		sub	sp, sp, #8
 949              		.cfi_def_cfa_offset 16
 950 0004 0446     		mov	r4, r0
 225:Core/Src/ADBMS_Abstraction.c **** 	uint8 buffer[CFG_GROUP_B_SIZE];
 951              		.loc 1 225 2 is_stmt 1 view .LVU270
 226:Core/Src/ADBMS_Abstraction.c **** 
 227:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCFGA, buffer, CFG_GROUP_A_SIZE);
 952              		.loc 1 227 2 view .LVU271
 953 0006 0622     		movs	r2, #6
 954 0008 6946     		mov	r1, sp
 955 000a 0220     		movs	r0, #2
 956              	.LVL71:
 957              		.loc 1 227 2 is_stmt 0 view .LVU272
 958 000c FFF7FEFF 		bl	readCMD
 959              	.LVL72:
 228:Core/Src/ADBMS_Abstraction.c **** 	buffer[2] &= 0x0F;
 960              		.loc 1 228 2 is_stmt 1 view .LVU273
 961              		.loc 1 228 8 is_stmt 0 view .LVU274
 962 0010 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 963              		.loc 1 228 12 view .LVU275
 964 0014 03F00F03 		and	r3, r3, #15
 965 0018 8DF80230 		strb	r3, [sp, #2]
 229:Core/Src/ADBMS_Abstraction.c **** 	buffer[2] |= (uint8) overVoltage << 4;
 966              		.loc 1 229 2 is_stmt 1 view .LVU276
 967              		.loc 1 229 15 is_stmt 0 view .LVU277
 968 001c E2B2     		uxtb	r2, r4
 969              		.loc 1 229 12 view .LVU278
 970 001e 43EA0213 		orr	r3, r3, r2, lsl #4
 971 0022 8DF80230 		strb	r3, [sp, #2]
 230:Core/Src/ADBMS_Abstraction.c **** 	buffer[3] = (uint8)(overVoltage>>4);
 972              		.loc 1 230 2 is_stmt 1 view .LVU279
 973              		.loc 1 230 14 is_stmt 0 view .LVU280
 974 0026 C4F30714 		ubfx	r4, r4, #4, #8
 975              		.loc 1 230 12 view .LVU281
 976 002a 8DF80340 		strb	r4, [sp, #3]
 231:Core/Src/ADBMS_Abstraction.c **** 
 232:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(WRCFGA, buffer, CFG_GROUP_A_SIZE);
 977              		.loc 1 232 2 is_stmt 1 view .LVU282
 978 002e 0622     		movs	r2, #6
 979 0030 6946     		mov	r1, sp
 980 0032 0120     		movs	r0, #1
 981 0034 FFF7FEFF 		bl	writeCMD
 982              	.LVL73:
 233:Core/Src/ADBMS_Abstraction.c **** 
 234:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 983              		.loc 1 234 2 view .LVU283
 235:Core/Src/ADBMS_Abstraction.c **** }
 984              		.loc 1 235 1 is_stmt 0 view .LVU284
ARM GAS  /tmp/ccqqH0ud.s 			page 22


 985 0038 0020     		movs	r0, #0
 986 003a 02B0     		add	sp, sp, #8
 987              		.cfi_def_cfa_offset 8
 988              		@ sp needed
 989 003c 10BD     		pop	{r4, pc}
 990              		.cfi_endproc
 991              	.LFE146:
 993              		.section	.text.initAMS,"ax",%progbits
 994              		.align	1
 995              		.global	initAMS
 996              		.syntax unified
 997              		.thumb
 998              		.thumb_func
 1000              	initAMS:
 1001              	.LVL74:
 1002              	.LFB130:
  16:Core/Src/ADBMS_Abstraction.c **** 	adbmsDriverInit(hspi);
 1003              		.loc 1 16 1 is_stmt 1 view -0
 1004              		.cfi_startproc
 1005              		@ args = 0, pretend = 0, frame = 0
 1006              		@ frame_needed = 0, uses_anonymous_args = 0
  16:Core/Src/ADBMS_Abstraction.c **** 	adbmsDriverInit(hspi);
 1007              		.loc 1 16 1 is_stmt 0 view .LVU286
 1008 0000 38B5     		push	{r3, r4, r5, lr}
 1009              		.cfi_def_cfa_offset 16
 1010              		.cfi_offset 3, -16
 1011              		.cfi_offset 4, -12
 1012              		.cfi_offset 5, -8
 1013              		.cfi_offset 14, -4
 1014 0002 0D46     		mov	r5, r1
 1015 0004 1446     		mov	r4, r2
  17:Core/Src/ADBMS_Abstraction.c **** 	numberofcells = numofcells;
 1016              		.loc 1 17 2 is_stmt 1 view .LVU287
 1017 0006 FFF7FEFF 		bl	adbmsDriverInit
 1018              	.LVL75:
  18:Core/Src/ADBMS_Abstraction.c **** 	numberofauxchannels = numofaux;
 1019              		.loc 1 18 2 view .LVU288
  18:Core/Src/ADBMS_Abstraction.c **** 	numberofauxchannels = numofaux;
 1020              		.loc 1 18 16 is_stmt 0 view .LVU289
 1021 000a 0B4B     		ldr	r3, .L35
 1022 000c 1D70     		strb	r5, [r3]
  19:Core/Src/ADBMS_Abstraction.c **** 
 1023              		.loc 1 19 2 is_stmt 1 view .LVU290
  19:Core/Src/ADBMS_Abstraction.c **** 
 1024              		.loc 1 19 22 is_stmt 0 view .LVU291
 1025 000e 0B4B     		ldr	r3, .L35+4
 1026 0010 1C70     		strb	r4, [r3]
  22:Core/Src/ADBMS_Abstraction.c **** 	amsStopBalancing();
 1027              		.loc 1 22 2 is_stmt 1 view .LVU292
 1028 0012 FFF7FEFF 		bl	amsWakeUp
 1029              	.LVL76:
  23:Core/Src/ADBMS_Abstraction.c **** 	amsConfigOverVoltage(DEFAULT_OV);
 1030              		.loc 1 23 2 view .LVU293
 1031 0016 FFF7FEFF 		bl	amsStopBalancing
 1032              	.LVL77:
  24:Core/Src/ADBMS_Abstraction.c **** 	amsConfigUnderVoltage(DEFAULT_UV);
 1033              		.loc 1 24 2 view .LVU294
ARM GAS  /tmp/ccqqH0ud.s 			page 23


 1034 001a 40F64120 		movw	r0, #2625
 1035 001e FFF7FEFF 		bl	amsConfigOverVoltage
 1036              	.LVL78:
  25:Core/Src/ADBMS_Abstraction.c **** 	amsConfigAuxMeasurement(0xFFFF);
 1037              		.loc 1 25 2 view .LVU295
 1038 0022 40F21A60 		movw	r0, #1562
 1039 0026 FFF7FEFF 		bl	amsConfigUnderVoltage
 1040              	.LVL79:
  26:Core/Src/ADBMS_Abstraction.c **** 
 1041              		.loc 1 26 2 view .LVU296
 1042 002a 4FF6FF70 		movw	r0, #65535
 1043 002e FFF7FEFF 		bl	amsConfigAuxMeasurement
 1044              	.LVL80:
  28:Core/Src/ADBMS_Abstraction.c **** }
 1045              		.loc 1 28 2 view .LVU297
  29:Core/Src/ADBMS_Abstraction.c **** 
 1046              		.loc 1 29 1 is_stmt 0 view .LVU298
 1047 0032 0020     		movs	r0, #0
 1048 0034 38BD     		pop	{r3, r4, r5, pc}
 1049              	.L36:
 1050 0036 00BF     		.align	2
 1051              	.L35:
 1052 0038 00000000 		.word	numberofcells
 1053 003c 00000000 		.word	numberofauxchannels
 1054              		.cfi_endproc
 1055              	.LFE130:
 1057              		.section	.text.amsClearStatus,"ax",%progbits
 1058              		.align	1
 1059              		.global	amsClearStatus
 1060              		.syntax unified
 1061              		.thumb
 1062              		.thumb_func
 1064              	amsClearStatus:
 1065              	.LFB147:
 236:Core/Src/ADBMS_Abstraction.c **** 
 237:Core/Src/ADBMS_Abstraction.c **** /*
 238:Core/Src/ADBMS_Abstraction.c **** void dumpRegister(UART_HandleTypeDef *huart, uint8 RegID, uint8* buffer)
 239:Core/Src/ADBMS_Abstraction.c **** {
 240:Core/Src/ADBMS_Abstraction.c **** 	switch(RegID)
 241:Core/Src/ADBMS_Abstraction.c **** 	{
 242:Core/Src/ADBMS_Abstraction.c **** 		case CFG_GROUP_A_ID:
 243:Core/Src/ADBMS_Abstraction.c **** 			readCMD(RDCFGA, buffer, CFG_GROUP_A_SIZE);
 244:Core/Src/ADBMS_Abstraction.c **** 		break;
 245:Core/Src/ADBMS_Abstraction.c **** 		case CFG_GROUP_B_ID:
 246:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDCFGB, buffer, CFG_GROUP_A_SIZE);
 247:Core/Src/ADBMS_Abstraction.c **** 				break;
 248:Core/Src/ADBMS_Abstraction.c **** 		case CV_GROUP_A_ID:
 249:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDCVA, buffer, CFG_GROUP_A_SIZE);
 250:Core/Src/ADBMS_Abstraction.c **** 				break;
 251:Core/Src/ADBMS_Abstraction.c **** 		case CV_GROUP_B_ID:
 252:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDCVB, buffer, CFG_GROUP_A_SIZE);
 253:Core/Src/ADBMS_Abstraction.c **** 				break;
 254:Core/Src/ADBMS_Abstraction.c **** 		case CV_GROUP_C_ID:
 255:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDCVC, buffer, CFG_GROUP_A_SIZE);
 256:Core/Src/ADBMS_Abstraction.c **** 				break;
 257:Core/Src/ADBMS_Abstraction.c **** 		case CV_GROUP_D_ID:
 258:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDCVD, buffer, CFG_GROUP_A_SIZE);
ARM GAS  /tmp/ccqqH0ud.s 			page 24


 259:Core/Src/ADBMS_Abstraction.c **** 				break;
 260:Core/Src/ADBMS_Abstraction.c **** 		case CV_GROUP_E_ID:
 261:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDCVE, buffer, CFG_GROUP_A_SIZE);
 262:Core/Src/ADBMS_Abstraction.c **** 				break;
 263:Core/Src/ADBMS_Abstraction.c **** 		case CV_GROUP_F_ID:
 264:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDCVF, buffer, CFG_GROUP_A_SIZE);
 265:Core/Src/ADBMS_Abstraction.c **** 				break;
 266:Core/Src/ADBMS_Abstraction.c **** 		case AUX_GROUP_A_ID:
 267:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDAUXA, buffer, CFG_GROUP_A_SIZE);
 268:Core/Src/ADBMS_Abstraction.c **** 				break;
 269:Core/Src/ADBMS_Abstraction.c **** 		case AUX_GROUP_B_ID:
 270:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDAUXB, buffer, CFG_GROUP_A_SIZE);
 271:Core/Src/ADBMS_Abstraction.c **** 				break;
 272:Core/Src/ADBMS_Abstraction.c **** 		case AUX_GROUP_C_ID:
 273:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDAUXC, buffer, CFG_GROUP_A_SIZE);
 274:Core/Src/ADBMS_Abstraction.c **** 				break;
 275:Core/Src/ADBMS_Abstraction.c **** 		case AUX_GROUP_D_ID:
 276:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDAUXD, buffer, CFG_GROUP_A_SIZE);
 277:Core/Src/ADBMS_Abstraction.c **** 				break;
 278:Core/Src/ADBMS_Abstraction.c **** 		case STATUS_GROUP_A_ID:
 279:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDSTATA, buffer, CFG_GROUP_A_SIZE);
 280:Core/Src/ADBMS_Abstraction.c **** 				break;
 281:Core/Src/ADBMS_Abstraction.c **** 		case STATUS_GROUP_B_ID:
 282:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDSTATB, buffer, CFG_GROUP_A_SIZE);
 283:Core/Src/ADBMS_Abstraction.c **** 				break;
 284:Core/Src/ADBMS_Abstraction.c **** 		case COMM_GROUP_ID:
 285:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDCOMM, buffer, CFG_GROUP_A_SIZE);
 286:Core/Src/ADBMS_Abstraction.c **** 				break;
 287:Core/Src/ADBMS_Abstraction.c **** 		case S_CONTROL_GROUP_ID:
 288:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDSCTRL, buffer, CFG_GROUP_A_SIZE);
 289:Core/Src/ADBMS_Abstraction.c **** 				break;
 290:Core/Src/ADBMS_Abstraction.c **** 		case PWM_GROUP_ID:
 291:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDPWM, buffer, CFG_GROUP_A_SIZE);
 292:Core/Src/ADBMS_Abstraction.c **** 				break;
 293:Core/Src/ADBMS_Abstraction.c **** 		case PWM_S_CONTROL_GROUP_B_ID:
 294:Core/Src/ADBMS_Abstraction.c **** 					readCMD(RDPSB, buffer, CFG_GROUP_A_SIZE);
 295:Core/Src/ADBMS_Abstraction.c **** 				break;
 296:Core/Src/ADBMS_Abstraction.c **** 	}
 297:Core/Src/ADBMS_Abstraction.c **** }
 298:Core/Src/ADBMS_Abstraction.c **** */
 299:Core/Src/ADBMS_Abstraction.c **** 
 300:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearStatus()
 301:Core/Src/ADBMS_Abstraction.c **** {
 1066              		.loc 1 301 1 is_stmt 1 view -0
 1067              		.cfi_startproc
 1068              		@ args = 0, pretend = 0, frame = 8
 1069              		@ frame_needed = 0, uses_anonymous_args = 0
 1070 0000 00B5     		push	{lr}
 1071              		.cfi_def_cfa_offset 4
 1072              		.cfi_offset 14, -4
 1073 0002 83B0     		sub	sp, sp, #12
 1074              		.cfi_def_cfa_offset 16
 302:Core/Src/ADBMS_Abstraction.c **** 	uint8 buffer[6];
 1075              		.loc 1 302 2 view .LVU300
 303:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(CLRSTAT, buffer, 0);
 1076              		.loc 1 303 2 view .LVU301
 1077 0004 0022     		movs	r2, #0
ARM GAS  /tmp/ccqqH0ud.s 			page 25


 1078 0006 6946     		mov	r1, sp
 1079 0008 40F21370 		movw	r0, #1811
 1080 000c FFF7FEFF 		bl	writeCMD
 1081              	.LVL81:
 304:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 1082              		.loc 1 304 2 view .LVU302
 305:Core/Src/ADBMS_Abstraction.c **** }
 1083              		.loc 1 305 1 is_stmt 0 view .LVU303
 1084 0010 0020     		movs	r0, #0
 1085 0012 03B0     		add	sp, sp, #12
 1086              		.cfi_def_cfa_offset 4
 1087              		@ sp needed
 1088 0014 5DF804FB 		ldr	pc, [sp], #4
 1089              		.cfi_endproc
 1090              	.LFE147:
 1092              		.section	.text.amsClearAux,"ax",%progbits
 1093              		.align	1
 1094              		.global	amsClearAux
 1095              		.syntax unified
 1096              		.thumb
 1097              		.thumb_func
 1099              	amsClearAux:
 1100              	.LFB148:
 306:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearAux()
 307:Core/Src/ADBMS_Abstraction.c **** {
 1101              		.loc 1 307 1 is_stmt 1 view -0
 1102              		.cfi_startproc
 1103              		@ args = 0, pretend = 0, frame = 8
 1104              		@ frame_needed = 0, uses_anonymous_args = 0
 1105 0000 00B5     		push	{lr}
 1106              		.cfi_def_cfa_offset 4
 1107              		.cfi_offset 14, -4
 1108 0002 83B0     		sub	sp, sp, #12
 1109              		.cfi_def_cfa_offset 16
 308:Core/Src/ADBMS_Abstraction.c **** 	uint8 buffer[6];
 1110              		.loc 1 308 2 view .LVU305
 309:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(CLRAUX, buffer, 0);
 1111              		.loc 1 309 2 view .LVU306
 1112 0004 0022     		movs	r2, #0
 1113 0006 6946     		mov	r1, sp
 1114 0008 40F21270 		movw	r0, #1810
 1115 000c FFF7FEFF 		bl	writeCMD
 1116              	.LVL82:
 310:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 1117              		.loc 1 310 2 view .LVU307
 311:Core/Src/ADBMS_Abstraction.c **** }
 1118              		.loc 1 311 1 is_stmt 0 view .LVU308
 1119 0010 0020     		movs	r0, #0
 1120 0012 03B0     		add	sp, sp, #12
 1121              		.cfi_def_cfa_offset 4
 1122              		@ sp needed
 1123 0014 5DF804FB 		ldr	pc, [sp], #4
 1124              		.cfi_endproc
 1125              	.LFE148:
 1127              		.section	.text.amsClearCells,"ax",%progbits
 1128              		.align	1
 1129              		.global	amsClearCells
ARM GAS  /tmp/ccqqH0ud.s 			page 26


 1130              		.syntax unified
 1131              		.thumb
 1132              		.thumb_func
 1134              	amsClearCells:
 1135              	.LFB149:
 312:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearCells()
 313:Core/Src/ADBMS_Abstraction.c **** {
 1136              		.loc 1 313 1 is_stmt 1 view -0
 1137              		.cfi_startproc
 1138              		@ args = 0, pretend = 0, frame = 8
 1139              		@ frame_needed = 0, uses_anonymous_args = 0
 1140 0000 00B5     		push	{lr}
 1141              		.cfi_def_cfa_offset 4
 1142              		.cfi_offset 14, -4
 1143 0002 83B0     		sub	sp, sp, #12
 1144              		.cfi_def_cfa_offset 16
 314:Core/Src/ADBMS_Abstraction.c **** 	uint8 buffer[6];
 1145              		.loc 1 314 2 view .LVU310
 315:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(CLRCELL, buffer, 0);
 1146              		.loc 1 315 2 view .LVU311
 1147 0004 0022     		movs	r2, #0
 1148 0006 6946     		mov	r1, sp
 1149 0008 40F21170 		movw	r0, #1809
 1150 000c FFF7FEFF 		bl	writeCMD
 1151              	.LVL83:
 316:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 1152              		.loc 1 316 2 view .LVU312
 317:Core/Src/ADBMS_Abstraction.c **** }
 1153              		.loc 1 317 1 is_stmt 0 view .LVU313
 1154 0010 0020     		movs	r0, #0
 1155 0012 03B0     		add	sp, sp, #12
 1156              		.cfi_def_cfa_offset 4
 1157              		@ sp needed
 1158 0014 5DF804FB 		ldr	pc, [sp], #4
 1159              		.cfi_endproc
 1160              	.LFE149:
 1162              		.section	.text.amsSendWarning,"ax",%progbits
 1163              		.align	1
 1164              		.global	amsSendWarning
 1165              		.syntax unified
 1166              		.thumb
 1167              		.thumb_func
 1169              	amsSendWarning:
 1170              	.LFB150:
 318:Core/Src/ADBMS_Abstraction.c **** 
 319:Core/Src/ADBMS_Abstraction.c **** uint8 amsSendWarning()
 320:Core/Src/ADBMS_Abstraction.c **** {
 1171              		.loc 1 320 1 is_stmt 1 view -0
 1172              		.cfi_startproc
 1173              		@ args = 0, pretend = 0, frame = 0
 1174              		@ frame_needed = 0, uses_anonymous_args = 0
 1175              		@ link register save eliminated.
 321:Core/Src/ADBMS_Abstraction.c **** 	//HAL_GPIO_WritePin(AMS_Warning_GPIO_Port, AMS_Warning_Pin, GPIO_PIN_SET);
 322:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 1176              		.loc 1 322 2 view .LVU315
 323:Core/Src/ADBMS_Abstraction.c **** }
 1177              		.loc 1 323 1 is_stmt 0 view .LVU316
ARM GAS  /tmp/ccqqH0ud.s 			page 27


 1178 0000 0020     		movs	r0, #0
 1179 0002 7047     		bx	lr
 1180              		.cfi_endproc
 1181              	.LFE150:
 1183              		.section	.text.amsSendError,"ax",%progbits
 1184              		.align	1
 1185              		.global	amsSendError
 1186              		.syntax unified
 1187              		.thumb
 1188              		.thumb_func
 1190              	amsSendError:
 1191              	.LFB151:
 324:Core/Src/ADBMS_Abstraction.c **** 
 325:Core/Src/ADBMS_Abstraction.c **** uint8 amsSendError()
 326:Core/Src/ADBMS_Abstraction.c **** {
 1192              		.loc 1 326 1 is_stmt 1 view -0
 1193              		.cfi_startproc
 1194              		@ args = 0, pretend = 0, frame = 0
 1195              		@ frame_needed = 0, uses_anonymous_args = 0
 1196              		@ link register save eliminated.
 327:Core/Src/ADBMS_Abstraction.c **** 	//HAL_GPIO_WritePin(AMS_Error_GPIO_Port, AMS_Error_Pin, GPIO_PIN_SET);
 328:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 1197              		.loc 1 328 2 view .LVU318
 329:Core/Src/ADBMS_Abstraction.c **** }
 1198              		.loc 1 329 1 is_stmt 0 view .LVU319
 1199 0000 0020     		movs	r0, #0
 1200 0002 7047     		bx	lr
 1201              		.cfi_endproc
 1202              	.LFE151:
 1204              		.section	.text.amsClearWarning,"ax",%progbits
 1205              		.align	1
 1206              		.global	amsClearWarning
 1207              		.syntax unified
 1208              		.thumb
 1209              		.thumb_func
 1211              	amsClearWarning:
 1212              	.LFB152:
 330:Core/Src/ADBMS_Abstraction.c **** 
 331:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearWarning()
 332:Core/Src/ADBMS_Abstraction.c **** {
 1213              		.loc 1 332 1 is_stmt 1 view -0
 1214              		.cfi_startproc
 1215              		@ args = 0, pretend = 0, frame = 0
 1216              		@ frame_needed = 0, uses_anonymous_args = 0
 1217              		@ link register save eliminated.
 333:Core/Src/ADBMS_Abstraction.c **** 	//HAL_GPIO_WritePin(AMS_Warning_GPIO_Port, AMS_Warning_Pin, GPIO_PIN_RESET);
 334:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 1218              		.loc 1 334 2 view .LVU321
 335:Core/Src/ADBMS_Abstraction.c **** }
 1219              		.loc 1 335 1 is_stmt 0 view .LVU322
 1220 0000 0020     		movs	r0, #0
 1221 0002 7047     		bx	lr
 1222              		.cfi_endproc
 1223              	.LFE152:
 1225              		.section	.text.amsClearError,"ax",%progbits
 1226              		.align	1
 1227              		.global	amsClearError
ARM GAS  /tmp/ccqqH0ud.s 			page 28


 1228              		.syntax unified
 1229              		.thumb
 1230              		.thumb_func
 1232              	amsClearError:
 1233              	.LFB153:
 336:Core/Src/ADBMS_Abstraction.c **** 
 337:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearError()
 338:Core/Src/ADBMS_Abstraction.c **** {
 1234              		.loc 1 338 1 is_stmt 1 view -0
 1235              		.cfi_startproc
 1236              		@ args = 0, pretend = 0, frame = 0
 1237              		@ frame_needed = 0, uses_anonymous_args = 0
 1238              		@ link register save eliminated.
 339:Core/Src/ADBMS_Abstraction.c **** 	//HAL_GPIO_WritePin(AMS_Error_GPIO_Port, AMS_Error_Pin, GPIO_PIN_RESET);
 340:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 1239              		.loc 1 340 2 view .LVU324
 341:Core/Src/ADBMS_Abstraction.c **** }
 1240              		.loc 1 341 1 is_stmt 0 view .LVU325
 1241 0000 0020     		movs	r0, #0
 1242 0002 7047     		bx	lr
 1243              		.cfi_endproc
 1244              	.LFE153:
 1246              		.section	.text.amsReadCellVoltages,"ax",%progbits
 1247              		.align	1
 1248              		.global	amsReadCellVoltages
 1249              		.syntax unified
 1250              		.thumb
 1251              		.thumb_func
 1253              	amsReadCellVoltages:
 1254              	.LVL84:
 1255              	.LFB155:
 342:Core/Src/ADBMS_Abstraction.c **** 
 343:Core/Src/ADBMS_Abstraction.c **** uint8 amscheckOpenCellWire(Cell_Module *module)
 344:Core/Src/ADBMS_Abstraction.c **** {
 345:Core/Src/ADBMS_Abstraction.c **** 	uint8 args;
 346:Core/Src/ADBMS_Abstraction.c **** 	uint16 cellspu[18];
 347:Core/Src/ADBMS_Abstraction.c **** 
 348:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(ADOW |MD01|CH000|PUP , &args, 0); //run Pull Up at least Twice
 349:Core/Src/ADBMS_Abstraction.c **** 	HAL_Delay(5);
 350:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(ADOW |MD01|CH000|PUP , &args, 0); //run Pull Up at least Twice
 351:Core/Src/ADBMS_Abstraction.c **** 	HAL_Delay(5);
 352:Core/Src/ADBMS_Abstraction.c **** 
 353:Core/Src/ADBMS_Abstraction.c **** 	amsReadCellVoltages(module);
 354:Core/Src/ADBMS_Abstraction.c **** 
 355:Core/Src/ADBMS_Abstraction.c **** 	for(uint8_t n = 0; n <numberofcells; n++)
 356:Core/Src/ADBMS_Abstraction.c **** 	{
 357:Core/Src/ADBMS_Abstraction.c **** 		cellspu[n] = module->cellVoltages[n];
 358:Core/Src/ADBMS_Abstraction.c **** 	}
 359:Core/Src/ADBMS_Abstraction.c **** 
 360:Core/Src/ADBMS_Abstraction.c **** 
 361:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(ADOW |MD01|CH000, &args, 0); //run Pull Up at least Twice
 362:Core/Src/ADBMS_Abstraction.c **** 	HAL_Delay(5);
 363:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(ADOW |MD01|CH000, &args, 0); //run Pull Up at least Twice
 364:Core/Src/ADBMS_Abstraction.c **** 	HAL_Delay(5);
 365:Core/Src/ADBMS_Abstraction.c **** 
 366:Core/Src/ADBMS_Abstraction.c **** 	amsReadCellVoltages(module);
 367:Core/Src/ADBMS_Abstraction.c **** 
ARM GAS  /tmp/ccqqH0ud.s 			page 29


 368:Core/Src/ADBMS_Abstraction.c **** 	for(uint8 n = 1; n < numberofcells; n++)
 369:Core/Src/ADBMS_Abstraction.c **** 	{
 370:Core/Src/ADBMS_Abstraction.c **** 		int dv = cellspu[n]-module->cellVoltages[n];
 371:Core/Src/ADBMS_Abstraction.c **** 		if(dv < -4000)
 372:Core/Src/ADBMS_Abstraction.c **** 		{
 373:Core/Src/ADBMS_Abstraction.c **** 			return (1+n);
 374:Core/Src/ADBMS_Abstraction.c **** 		}
 375:Core/Src/ADBMS_Abstraction.c **** 	}
 376:Core/Src/ADBMS_Abstraction.c **** 	if((cellspu[0] == 0) || (cellspu[0] == 0xFFFF))
 377:Core/Src/ADBMS_Abstraction.c **** 	{
 378:Core/Src/ADBMS_Abstraction.c **** 		return 1;
 379:Core/Src/ADBMS_Abstraction.c **** 	}
 380:Core/Src/ADBMS_Abstraction.c **** 	if(module->cellVoltages[numberofcells-1] == 0)
 381:Core/Src/ADBMS_Abstraction.c **** 	{
 382:Core/Src/ADBMS_Abstraction.c **** 		return 19;
 383:Core/Src/ADBMS_Abstraction.c **** 	}
 384:Core/Src/ADBMS_Abstraction.c **** 
 385:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 386:Core/Src/ADBMS_Abstraction.c **** }
 387:Core/Src/ADBMS_Abstraction.c **** 
 388:Core/Src/ADBMS_Abstraction.c **** uint8 amsReadCellVoltages(Cell_Module *module)
 389:Core/Src/ADBMS_Abstraction.c **** {
 1256              		.loc 1 389 1 is_stmt 1 view -0
 1257              		.cfi_startproc
 1258              		@ args = 0, pretend = 0, frame = 8
 1259              		@ frame_needed = 0, uses_anonymous_args = 0
 1260              		.loc 1 389 1 is_stmt 0 view .LVU327
 1261 0000 10B5     		push	{r4, lr}
 1262              		.cfi_def_cfa_offset 8
 1263              		.cfi_offset 4, -8
 1264              		.cfi_offset 14, -4
 1265 0002 82B0     		sub	sp, sp, #8
 1266              		.cfi_def_cfa_offset 16
 1267 0004 0446     		mov	r4, r0
 390:Core/Src/ADBMS_Abstraction.c **** 	uint8 rxbuffer[CV_GROUP_A_SIZE];
 1268              		.loc 1 390 2 is_stmt 1 view .LVU328
 391:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCVA, rxbuffer, CV_GROUP_A_SIZE);
 1269              		.loc 1 391 2 view .LVU329
 1270 0006 0622     		movs	r2, #6
 1271 0008 6946     		mov	r1, sp
 1272 000a 0420     		movs	r0, #4
 1273              	.LVL85:
 1274              		.loc 1 391 2 is_stmt 0 view .LVU330
 1275 000c FFF7FEFF 		bl	readCMD
 1276              	.LVL86:
 392:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[0] = rxbuffer[0] | (rxbuffer[1]<<8);
 1277              		.loc 1 392 2 is_stmt 1 view .LVU331
 1278              		.loc 1 392 36 is_stmt 0 view .LVU332
 1279 0010 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 1280              		.loc 1 392 51 view .LVU333
 1281 0014 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 1282              		.loc 1 392 40 view .LVU334
 1283 0018 43EA0223 		orr	r3, r3, r2, lsl #8
 1284              		.loc 1 392 26 view .LVU335
 1285 001c 2380     		strh	r3, [r4]	@ movhi
 393:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[1] = rxbuffer[2] | (rxbuffer[3]<<8);
 1286              		.loc 1 393 2 is_stmt 1 view .LVU336
ARM GAS  /tmp/ccqqH0ud.s 			page 30


 1287              		.loc 1 393 36 is_stmt 0 view .LVU337
 1288 001e 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 1289              		.loc 1 393 51 view .LVU338
 1290 0022 9DF80320 		ldrb	r2, [sp, #3]	@ zero_extendqisi2
 1291              		.loc 1 393 40 view .LVU339
 1292 0026 43EA0223 		orr	r3, r3, r2, lsl #8
 1293              		.loc 1 393 26 view .LVU340
 1294 002a 6380     		strh	r3, [r4, #2]	@ movhi
 394:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[2] = rxbuffer[4] | (rxbuffer[5]<<8);
 1295              		.loc 1 394 2 is_stmt 1 view .LVU341
 1296              		.loc 1 394 36 is_stmt 0 view .LVU342
 1297 002c 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 1298              		.loc 1 394 51 view .LVU343
 1299 0030 9DF80520 		ldrb	r2, [sp, #5]	@ zero_extendqisi2
 1300              		.loc 1 394 40 view .LVU344
 1301 0034 43EA0223 		orr	r3, r3, r2, lsl #8
 1302              		.loc 1 394 26 view .LVU345
 1303 0038 A380     		strh	r3, [r4, #4]	@ movhi
 395:Core/Src/ADBMS_Abstraction.c **** 
 396:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCVB, rxbuffer, CV_GROUP_A_SIZE);
 1304              		.loc 1 396 2 is_stmt 1 view .LVU346
 1305 003a 0622     		movs	r2, #6
 1306 003c 6946     		mov	r1, sp
 1307 003e 1046     		mov	r0, r2
 1308 0040 FFF7FEFF 		bl	readCMD
 1309              	.LVL87:
 397:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[3] = rxbuffer[0] | (rxbuffer[1]<<8);
 1310              		.loc 1 397 2 view .LVU347
 1311              		.loc 1 397 36 is_stmt 0 view .LVU348
 1312 0044 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 1313              		.loc 1 397 51 view .LVU349
 1314 0048 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 1315              		.loc 1 397 40 view .LVU350
 1316 004c 43EA0223 		orr	r3, r3, r2, lsl #8
 1317              		.loc 1 397 26 view .LVU351
 1318 0050 E380     		strh	r3, [r4, #6]	@ movhi
 398:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[4] = rxbuffer[2] | (rxbuffer[3]<<8);
 1319              		.loc 1 398 2 is_stmt 1 view .LVU352
 1320              		.loc 1 398 36 is_stmt 0 view .LVU353
 1321 0052 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 1322              		.loc 1 398 51 view .LVU354
 1323 0056 9DF80320 		ldrb	r2, [sp, #3]	@ zero_extendqisi2
 1324              		.loc 1 398 40 view .LVU355
 1325 005a 43EA0223 		orr	r3, r3, r2, lsl #8
 1326              		.loc 1 398 26 view .LVU356
 1327 005e 2381     		strh	r3, [r4, #8]	@ movhi
 399:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[5] = rxbuffer[4] | (rxbuffer[5]<<8);
 1328              		.loc 1 399 2 is_stmt 1 view .LVU357
 1329              		.loc 1 399 36 is_stmt 0 view .LVU358
 1330 0060 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 1331              		.loc 1 399 51 view .LVU359
 1332 0064 9DF80520 		ldrb	r2, [sp, #5]	@ zero_extendqisi2
 1333              		.loc 1 399 40 view .LVU360
 1334 0068 43EA0223 		orr	r3, r3, r2, lsl #8
 1335              		.loc 1 399 26 view .LVU361
 1336 006c 6381     		strh	r3, [r4, #10]	@ movhi
 400:Core/Src/ADBMS_Abstraction.c **** 
ARM GAS  /tmp/ccqqH0ud.s 			page 31


 401:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCVC, rxbuffer, CV_GROUP_A_SIZE);
 1337              		.loc 1 401 2 is_stmt 1 view .LVU362
 1338 006e 0622     		movs	r2, #6
 1339 0070 6946     		mov	r1, sp
 1340 0072 0820     		movs	r0, #8
 1341 0074 FFF7FEFF 		bl	readCMD
 1342              	.LVL88:
 402:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[6] = rxbuffer[0] | (rxbuffer[1]<<8);
 1343              		.loc 1 402 2 view .LVU363
 1344              		.loc 1 402 36 is_stmt 0 view .LVU364
 1345 0078 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 1346              		.loc 1 402 51 view .LVU365
 1347 007c 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 1348              		.loc 1 402 40 view .LVU366
 1349 0080 43EA0223 		orr	r3, r3, r2, lsl #8
 1350              		.loc 1 402 26 view .LVU367
 1351 0084 A381     		strh	r3, [r4, #12]	@ movhi
 403:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[7] = rxbuffer[2] | (rxbuffer[3]<<8);
 1352              		.loc 1 403 2 is_stmt 1 view .LVU368
 1353              		.loc 1 403 36 is_stmt 0 view .LVU369
 1354 0086 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 1355              		.loc 1 403 51 view .LVU370
 1356 008a 9DF80320 		ldrb	r2, [sp, #3]	@ zero_extendqisi2
 1357              		.loc 1 403 40 view .LVU371
 1358 008e 43EA0223 		orr	r3, r3, r2, lsl #8
 1359              		.loc 1 403 26 view .LVU372
 1360 0092 E381     		strh	r3, [r4, #14]	@ movhi
 404:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[8] = rxbuffer[4] | (rxbuffer[5]<<8);
 1361              		.loc 1 404 2 is_stmt 1 view .LVU373
 1362              		.loc 1 404 36 is_stmt 0 view .LVU374
 1363 0094 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 1364              		.loc 1 404 51 view .LVU375
 1365 0098 9DF80520 		ldrb	r2, [sp, #5]	@ zero_extendqisi2
 1366              		.loc 1 404 40 view .LVU376
 1367 009c 43EA0223 		orr	r3, r3, r2, lsl #8
 1368              		.loc 1 404 26 view .LVU377
 1369 00a0 2382     		strh	r3, [r4, #16]	@ movhi
 405:Core/Src/ADBMS_Abstraction.c **** 
 406:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCVD, rxbuffer, CV_GROUP_A_SIZE);
 1370              		.loc 1 406 2 is_stmt 1 view .LVU378
 1371 00a2 0622     		movs	r2, #6
 1372 00a4 6946     		mov	r1, sp
 1373 00a6 0A20     		movs	r0, #10
 1374 00a8 FFF7FEFF 		bl	readCMD
 1375              	.LVL89:
 407:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[9] = rxbuffer[0] | (rxbuffer[1]<<8);
 1376              		.loc 1 407 2 view .LVU379
 1377              		.loc 1 407 36 is_stmt 0 view .LVU380
 1378 00ac 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 1379              		.loc 1 407 51 view .LVU381
 1380 00b0 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 1381              		.loc 1 407 40 view .LVU382
 1382 00b4 43EA0223 		orr	r3, r3, r2, lsl #8
 1383              		.loc 1 407 26 view .LVU383
 1384 00b8 6382     		strh	r3, [r4, #18]	@ movhi
 408:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[10] = rxbuffer[2] | (rxbuffer[3]<<8);
 1385              		.loc 1 408 2 is_stmt 1 view .LVU384
ARM GAS  /tmp/ccqqH0ud.s 			page 32


 1386              		.loc 1 408 37 is_stmt 0 view .LVU385
 1387 00ba 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 1388              		.loc 1 408 52 view .LVU386
 1389 00be 9DF80320 		ldrb	r2, [sp, #3]	@ zero_extendqisi2
 1390              		.loc 1 408 41 view .LVU387
 1391 00c2 43EA0223 		orr	r3, r3, r2, lsl #8
 1392              		.loc 1 408 27 view .LVU388
 1393 00c6 A382     		strh	r3, [r4, #20]	@ movhi
 409:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[11] = rxbuffer[4] | (rxbuffer[5]<<8);
 1394              		.loc 1 409 2 is_stmt 1 view .LVU389
 1395              		.loc 1 409 37 is_stmt 0 view .LVU390
 1396 00c8 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 1397              		.loc 1 409 52 view .LVU391
 1398 00cc 9DF80520 		ldrb	r2, [sp, #5]	@ zero_extendqisi2
 1399              		.loc 1 409 41 view .LVU392
 1400 00d0 43EA0223 		orr	r3, r3, r2, lsl #8
 1401              		.loc 1 409 27 view .LVU393
 1402 00d4 E382     		strh	r3, [r4, #22]	@ movhi
 410:Core/Src/ADBMS_Abstraction.c **** 
 411:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCVE, rxbuffer, CV_GROUP_A_SIZE);
 1403              		.loc 1 411 2 is_stmt 1 view .LVU394
 1404 00d6 0622     		movs	r2, #6
 1405 00d8 6946     		mov	r1, sp
 1406 00da 0920     		movs	r0, #9
 1407 00dc FFF7FEFF 		bl	readCMD
 1408              	.LVL90:
 412:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[12] = rxbuffer[0] | (rxbuffer[1]<<8);
 1409              		.loc 1 412 2 view .LVU395
 1410              		.loc 1 412 37 is_stmt 0 view .LVU396
 1411 00e0 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 1412              		.loc 1 412 52 view .LVU397
 1413 00e4 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 1414              		.loc 1 412 41 view .LVU398
 1415 00e8 43EA0223 		orr	r3, r3, r2, lsl #8
 1416              		.loc 1 412 27 view .LVU399
 1417 00ec 2383     		strh	r3, [r4, #24]	@ movhi
 413:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[13] = rxbuffer[2] | (rxbuffer[3]<<8);
 1418              		.loc 1 413 2 is_stmt 1 view .LVU400
 1419              		.loc 1 413 37 is_stmt 0 view .LVU401
 1420 00ee 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 1421              		.loc 1 413 52 view .LVU402
 1422 00f2 9DF80320 		ldrb	r2, [sp, #3]	@ zero_extendqisi2
 1423              		.loc 1 413 41 view .LVU403
 1424 00f6 43EA0223 		orr	r3, r3, r2, lsl #8
 1425              		.loc 1 413 27 view .LVU404
 1426 00fa 6383     		strh	r3, [r4, #26]	@ movhi
 414:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[14] = rxbuffer[4] | (rxbuffer[5]<<8);
 1427              		.loc 1 414 2 is_stmt 1 view .LVU405
 1428              		.loc 1 414 37 is_stmt 0 view .LVU406
 1429 00fc 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 1430              		.loc 1 414 52 view .LVU407
 1431 0100 9DF80520 		ldrb	r2, [sp, #5]	@ zero_extendqisi2
 1432              		.loc 1 414 41 view .LVU408
 1433 0104 43EA0223 		orr	r3, r3, r2, lsl #8
 1434              		.loc 1 414 27 view .LVU409
 1435 0108 A383     		strh	r3, [r4, #28]	@ movhi
 415:Core/Src/ADBMS_Abstraction.c **** 
ARM GAS  /tmp/ccqqH0ud.s 			page 33


 416:Core/Src/ADBMS_Abstraction.c **** 	readCMD(RDCVF, rxbuffer, CV_GROUP_A_SIZE);
 1436              		.loc 1 416 2 is_stmt 1 view .LVU410
 1437 010a 0622     		movs	r2, #6
 1438 010c 6946     		mov	r1, sp
 1439 010e 0B20     		movs	r0, #11
 1440 0110 FFF7FEFF 		bl	readCMD
 1441              	.LVL91:
 417:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[15] = rxbuffer[0] | (rxbuffer[1]<<8);
 1442              		.loc 1 417 2 view .LVU411
 1443              		.loc 1 417 37 is_stmt 0 view .LVU412
 1444 0114 9DF80030 		ldrb	r3, [sp]	@ zero_extendqisi2
 1445              		.loc 1 417 52 view .LVU413
 1446 0118 9DF80120 		ldrb	r2, [sp, #1]	@ zero_extendqisi2
 1447              		.loc 1 417 41 view .LVU414
 1448 011c 43EA0223 		orr	r3, r3, r2, lsl #8
 1449              		.loc 1 417 27 view .LVU415
 1450 0120 E383     		strh	r3, [r4, #30]	@ movhi
 418:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[16] = rxbuffer[2] | (rxbuffer[3]<<8);
 1451              		.loc 1 418 2 is_stmt 1 view .LVU416
 1452              		.loc 1 418 37 is_stmt 0 view .LVU417
 1453 0122 9DF80230 		ldrb	r3, [sp, #2]	@ zero_extendqisi2
 1454              		.loc 1 418 52 view .LVU418
 1455 0126 9DF80320 		ldrb	r2, [sp, #3]	@ zero_extendqisi2
 1456              		.loc 1 418 41 view .LVU419
 1457 012a 43EA0223 		orr	r3, r3, r2, lsl #8
 1458              		.loc 1 418 27 view .LVU420
 1459 012e 2384     		strh	r3, [r4, #32]	@ movhi
 419:Core/Src/ADBMS_Abstraction.c **** 	module->cellVoltages[17] = rxbuffer[4] | (rxbuffer[5]<<8);
 1460              		.loc 1 419 2 is_stmt 1 view .LVU421
 1461              		.loc 1 419 37 is_stmt 0 view .LVU422
 1462 0130 9DF80430 		ldrb	r3, [sp, #4]	@ zero_extendqisi2
 1463              		.loc 1 419 52 view .LVU423
 1464 0134 9DF80520 		ldrb	r2, [sp, #5]	@ zero_extendqisi2
 1465              		.loc 1 419 41 view .LVU424
 1466 0138 43EA0223 		orr	r3, r3, r2, lsl #8
 1467              		.loc 1 419 27 view .LVU425
 1468 013c 6384     		strh	r3, [r4, #34]	@ movhi
 420:Core/Src/ADBMS_Abstraction.c **** 
 421:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 1469              		.loc 1 421 2 is_stmt 1 view .LVU426
 422:Core/Src/ADBMS_Abstraction.c **** }
 1470              		.loc 1 422 1 is_stmt 0 view .LVU427
 1471 013e 0020     		movs	r0, #0
 1472 0140 02B0     		add	sp, sp, #8
 1473              		.cfi_def_cfa_offset 8
 1474              		@ sp needed
 1475 0142 10BD     		pop	{r4, pc}
 1476              		.loc 1 422 1 view .LVU428
 1477              		.cfi_endproc
 1478              	.LFE155:
 1480              		.section	.text.amsCellMeasurement,"ax",%progbits
 1481              		.align	1
 1482              		.global	amsCellMeasurement
 1483              		.syntax unified
 1484              		.thumb
 1485              		.thumb_func
 1487              	amsCellMeasurement:
ARM GAS  /tmp/ccqqH0ud.s 			page 34


 1488              	.LVL92:
 1489              	.LFB132:
  39:Core/Src/ADBMS_Abstraction.c **** 	uint8_t rxbuffer[CV_GROUP_A_SIZE];
 1490              		.loc 1 39 1 is_stmt 1 view -0
 1491              		.cfi_startproc
 1492              		@ args = 0, pretend = 0, frame = 8
 1493              		@ frame_needed = 0, uses_anonymous_args = 0
  39:Core/Src/ADBMS_Abstraction.c **** 	uint8_t rxbuffer[CV_GROUP_A_SIZE];
 1494              		.loc 1 39 1 is_stmt 0 view .LVU430
 1495 0000 10B5     		push	{r4, lr}
 1496              		.cfi_def_cfa_offset 8
 1497              		.cfi_offset 4, -8
 1498              		.cfi_offset 14, -4
 1499 0002 82B0     		sub	sp, sp, #8
 1500              		.cfi_def_cfa_offset 16
 1501 0004 0446     		mov	r4, r0
  40:Core/Src/ADBMS_Abstraction.c **** 	writeCMD((ADCV | CH000 | MD10), rxbuffer, 0);
 1502              		.loc 1 40 2 is_stmt 1 view .LVU431
  41:Core/Src/ADBMS_Abstraction.c **** 	mcuDelay(5);
 1503              		.loc 1 41 2 view .LVU432
 1504 0006 0022     		movs	r2, #0
 1505 0008 6946     		mov	r1, sp
 1506 000a 4FF45870 		mov	r0, #864
 1507              	.LVL93:
  41:Core/Src/ADBMS_Abstraction.c **** 	mcuDelay(5);
 1508              		.loc 1 41 2 is_stmt 0 view .LVU433
 1509 000e FFF7FEFF 		bl	writeCMD
 1510              	.LVL94:
  42:Core/Src/ADBMS_Abstraction.c **** 	amsReadCellVoltages(module);
 1511              		.loc 1 42 2 is_stmt 1 view .LVU434
 1512 0012 0520     		movs	r0, #5
 1513 0014 FFF7FEFF 		bl	mcuDelay
 1514              	.LVL95:
  43:Core/Src/ADBMS_Abstraction.c **** 	return 0;
 1515              		.loc 1 43 2 view .LVU435
 1516 0018 2046     		mov	r0, r4
 1517 001a FFF7FEFF 		bl	amsReadCellVoltages
 1518              	.LVL96:
  44:Core/Src/ADBMS_Abstraction.c **** }
 1519              		.loc 1 44 2 view .LVU436
  45:Core/Src/ADBMS_Abstraction.c **** 
 1520              		.loc 1 45 1 is_stmt 0 view .LVU437
 1521 001e 0020     		movs	r0, #0
 1522 0020 02B0     		add	sp, sp, #8
 1523              		.cfi_def_cfa_offset 8
 1524              		@ sp needed
 1525 0022 10BD     		pop	{r4, pc}
  45:Core/Src/ADBMS_Abstraction.c **** 
 1526              		.loc 1 45 1 view .LVU438
 1527              		.cfi_endproc
 1528              	.LFE132:
 1530              		.section	.text.amscheckOpenCellWire,"ax",%progbits
 1531              		.align	1
 1532              		.global	amscheckOpenCellWire
 1533              		.syntax unified
 1534              		.thumb
 1535              		.thumb_func
ARM GAS  /tmp/ccqqH0ud.s 			page 35


 1537              	amscheckOpenCellWire:
 1538              	.LVL97:
 1539              	.LFB154:
 344:Core/Src/ADBMS_Abstraction.c **** 	uint8 args;
 1540              		.loc 1 344 1 is_stmt 1 view -0
 1541              		.cfi_startproc
 1542              		@ args = 0, pretend = 0, frame = 40
 1543              		@ frame_needed = 0, uses_anonymous_args = 0
 344:Core/Src/ADBMS_Abstraction.c **** 	uint8 args;
 1544              		.loc 1 344 1 is_stmt 0 view .LVU440
 1545 0000 10B5     		push	{r4, lr}
 1546              		.cfi_def_cfa_offset 8
 1547              		.cfi_offset 4, -8
 1548              		.cfi_offset 14, -4
 1549 0002 8AB0     		sub	sp, sp, #40
 1550              		.cfi_def_cfa_offset 48
 1551 0004 0446     		mov	r4, r0
 345:Core/Src/ADBMS_Abstraction.c **** 	uint16 cellspu[18];
 1552              		.loc 1 345 2 is_stmt 1 view .LVU441
 346:Core/Src/ADBMS_Abstraction.c **** 
 1553              		.loc 1 346 2 view .LVU442
 348:Core/Src/ADBMS_Abstraction.c **** 	HAL_Delay(5);
 1554              		.loc 1 348 2 view .LVU443
 1555 0006 0022     		movs	r2, #0
 1556 0008 0DF12701 		add	r1, sp, #39
 1557 000c 4FF43A70 		mov	r0, #744
 1558              	.LVL98:
 348:Core/Src/ADBMS_Abstraction.c **** 	HAL_Delay(5);
 1559              		.loc 1 348 2 is_stmt 0 view .LVU444
 1560 0010 FFF7FEFF 		bl	writeCMD
 1561              	.LVL99:
 349:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(ADOW |MD01|CH000|PUP , &args, 0); //run Pull Up at least Twice
 1562              		.loc 1 349 2 is_stmt 1 view .LVU445
 1563 0014 0520     		movs	r0, #5
 1564 0016 FFF7FEFF 		bl	HAL_Delay
 1565              	.LVL100:
 350:Core/Src/ADBMS_Abstraction.c **** 	HAL_Delay(5);
 1566              		.loc 1 350 2 view .LVU446
 1567 001a 0022     		movs	r2, #0
 1568 001c 0DF12701 		add	r1, sp, #39
 1569 0020 4FF43A70 		mov	r0, #744
 1570 0024 FFF7FEFF 		bl	writeCMD
 1571              	.LVL101:
 351:Core/Src/ADBMS_Abstraction.c **** 
 1572              		.loc 1 351 2 view .LVU447
 1573 0028 0520     		movs	r0, #5
 1574 002a FFF7FEFF 		bl	HAL_Delay
 1575              	.LVL102:
 353:Core/Src/ADBMS_Abstraction.c **** 
 1576              		.loc 1 353 2 view .LVU448
 1577 002e 2046     		mov	r0, r4
 1578 0030 FFF7FEFF 		bl	amsReadCellVoltages
 1579              	.LVL103:
 355:Core/Src/ADBMS_Abstraction.c **** 	{
 1580              		.loc 1 355 2 view .LVU449
 1581              	.LBB6:
 355:Core/Src/ADBMS_Abstraction.c **** 	{
ARM GAS  /tmp/ccqqH0ud.s 			page 36


 1582              		.loc 1 355 6 view .LVU450
 355:Core/Src/ADBMS_Abstraction.c **** 	{
 1583              		.loc 1 355 14 is_stmt 0 view .LVU451
 1584 0034 0023     		movs	r3, #0
 355:Core/Src/ADBMS_Abstraction.c **** 	{
 1585              		.loc 1 355 2 view .LVU452
 1586 0036 08E0     		b	.L52
 1587              	.LVL104:
 1588              	.L53:
 357:Core/Src/ADBMS_Abstraction.c **** 	}
 1589              		.loc 1 357 3 is_stmt 1 discriminator 3 view .LVU453
 357:Core/Src/ADBMS_Abstraction.c **** 	}
 1590              		.loc 1 357 36 is_stmt 0 discriminator 3 view .LVU454
 1591 0038 34F81310 		ldrh	r1, [r4, r3, lsl #1]
 357:Core/Src/ADBMS_Abstraction.c **** 	}
 1592              		.loc 1 357 14 discriminator 3 view .LVU455
 1593 003c 0AAA     		add	r2, sp, #40
 1594 003e 02EB4302 		add	r2, r2, r3, lsl #1
 1595 0042 22F8281C 		strh	r1, [r2, #-40]	@ movhi
 355:Core/Src/ADBMS_Abstraction.c **** 	{
 1596              		.loc 1 355 40 is_stmt 1 discriminator 3 view .LVU456
 1597 0046 0133     		adds	r3, r3, #1
 1598              	.LVL105:
 355:Core/Src/ADBMS_Abstraction.c **** 	{
 1599              		.loc 1 355 40 is_stmt 0 discriminator 3 view .LVU457
 1600 0048 DBB2     		uxtb	r3, r3
 1601              	.LVL106:
 1602              	.L52:
 355:Core/Src/ADBMS_Abstraction.c **** 	{
 1603              		.loc 1 355 23 is_stmt 1 discriminator 1 view .LVU458
 1604 004a 224A     		ldr	r2, .L62
 1605 004c 1278     		ldrb	r2, [r2]	@ zero_extendqisi2
 1606 004e 9A42     		cmp	r2, r3
 1607 0050 F2D8     		bhi	.L53
 1608              	.LBE6:
 361:Core/Src/ADBMS_Abstraction.c **** 	HAL_Delay(5);
 1609              		.loc 1 361 2 view .LVU459
 1610 0052 0022     		movs	r2, #0
 1611 0054 0DF12701 		add	r1, sp, #39
 1612 0058 4FF42A70 		mov	r0, #680
 1613 005c FFF7FEFF 		bl	writeCMD
 1614              	.LVL107:
 362:Core/Src/ADBMS_Abstraction.c **** 	writeCMD(ADOW |MD01|CH000, &args, 0); //run Pull Up at least Twice
 1615              		.loc 1 362 2 view .LVU460
 1616 0060 0520     		movs	r0, #5
 1617 0062 FFF7FEFF 		bl	HAL_Delay
 1618              	.LVL108:
 363:Core/Src/ADBMS_Abstraction.c **** 	HAL_Delay(5);
 1619              		.loc 1 363 2 view .LVU461
 1620 0066 0022     		movs	r2, #0
 1621 0068 0DF12701 		add	r1, sp, #39
 1622 006c 4FF42A70 		mov	r0, #680
 1623 0070 FFF7FEFF 		bl	writeCMD
 1624              	.LVL109:
 364:Core/Src/ADBMS_Abstraction.c **** 
 1625              		.loc 1 364 2 view .LVU462
 1626 0074 0520     		movs	r0, #5
ARM GAS  /tmp/ccqqH0ud.s 			page 37


 1627 0076 FFF7FEFF 		bl	HAL_Delay
 1628              	.LVL110:
 366:Core/Src/ADBMS_Abstraction.c **** 
 1629              		.loc 1 366 2 view .LVU463
 1630 007a 2046     		mov	r0, r4
 1631 007c FFF7FEFF 		bl	amsReadCellVoltages
 1632              	.LVL111:
 368:Core/Src/ADBMS_Abstraction.c **** 	{
 1633              		.loc 1 368 2 view .LVU464
 1634              	.LBB7:
 368:Core/Src/ADBMS_Abstraction.c **** 	{
 1635              		.loc 1 368 6 view .LVU465
 368:Core/Src/ADBMS_Abstraction.c **** 	{
 1636              		.loc 1 368 12 is_stmt 0 view .LVU466
 1637 0080 0123     		movs	r3, #1
 368:Core/Src/ADBMS_Abstraction.c **** 	{
 1638              		.loc 1 368 2 view .LVU467
 1639 0082 01E0     		b	.L54
 1640              	.LVL112:
 1641              	.L55:
 368:Core/Src/ADBMS_Abstraction.c **** 	{
 1642              		.loc 1 368 39 is_stmt 1 discriminator 2 view .LVU468
 1643 0084 0133     		adds	r3, r3, #1
 1644              	.LVL113:
 368:Core/Src/ADBMS_Abstraction.c **** 	{
 1645              		.loc 1 368 39 is_stmt 0 discriminator 2 view .LVU469
 1646 0086 DBB2     		uxtb	r3, r3
 1647              	.LVL114:
 1648              	.L54:
 368:Core/Src/ADBMS_Abstraction.c **** 	{
 1649              		.loc 1 368 21 is_stmt 1 discriminator 1 view .LVU470
 1650 0088 124A     		ldr	r2, .L62
 1651 008a 1278     		ldrb	r2, [r2]	@ zero_extendqisi2
 1652 008c 9A42     		cmp	r2, r3
 1653 008e 0ED9     		bls	.L61
 1654              	.LBB8:
 370:Core/Src/ADBMS_Abstraction.c **** 		if(dv < -4000)
 1655              		.loc 1 370 3 view .LVU471
 370:Core/Src/ADBMS_Abstraction.c **** 		if(dv < -4000)
 1656              		.loc 1 370 19 is_stmt 0 view .LVU472
 1657 0090 0AAA     		add	r2, sp, #40
 1658 0092 02EB4302 		add	r2, r2, r3, lsl #1
 1659 0096 32F8282C 		ldrh	r2, [r2, #-40]
 370:Core/Src/ADBMS_Abstraction.c **** 		if(dv < -4000)
 1660              		.loc 1 370 43 view .LVU473
 1661 009a 34F81310 		ldrh	r1, [r4, r3, lsl #1]
 370:Core/Src/ADBMS_Abstraction.c **** 		if(dv < -4000)
 1662              		.loc 1 370 7 view .LVU474
 1663 009e 521A     		subs	r2, r2, r1
 1664              	.LVL115:
 371:Core/Src/ADBMS_Abstraction.c **** 		{
 1665              		.loc 1 371 3 is_stmt 1 view .LVU475
 371:Core/Src/ADBMS_Abstraction.c **** 		{
 1666              		.loc 1 371 5 is_stmt 0 view .LVU476
 1667 00a0 12F57A6F 		cmn	r2, #4000
 1668 00a4 EEDA     		bge	.L55
 373:Core/Src/ADBMS_Abstraction.c **** 		}
ARM GAS  /tmp/ccqqH0ud.s 			page 38


 1669              		.loc 1 373 4 is_stmt 1 view .LVU477
 373:Core/Src/ADBMS_Abstraction.c **** 		}
 1670              		.loc 1 373 13 is_stmt 0 view .LVU478
 1671 00a6 0133     		adds	r3, r3, #1
 1672              	.LVL116:
 373:Core/Src/ADBMS_Abstraction.c **** 		}
 1673              		.loc 1 373 13 view .LVU479
 1674 00a8 D8B2     		uxtb	r0, r3
 1675              	.LVL117:
 1676              	.L56:
 373:Core/Src/ADBMS_Abstraction.c **** 		}
 1677              		.loc 1 373 13 view .LVU480
 1678              	.LBE8:
 1679              	.LBE7:
 386:Core/Src/ADBMS_Abstraction.c **** 
 1680              		.loc 1 386 1 view .LVU481
 1681 00aa 0AB0     		add	sp, sp, #40
 1682              		.cfi_remember_state
 1683              		.cfi_def_cfa_offset 8
 1684              		@ sp needed
 1685 00ac 10BD     		pop	{r4, pc}
 1686              	.LVL118:
 1687              	.L61:
 1688              		.cfi_restore_state
 376:Core/Src/ADBMS_Abstraction.c **** 	{
 1689              		.loc 1 376 2 is_stmt 1 view .LVU482
 376:Core/Src/ADBMS_Abstraction.c **** 	{
 1690              		.loc 1 376 13 is_stmt 0 view .LVU483
 1691 00ae BDF80030 		ldrh	r3, [sp]
 1692              	.LVL119:
 376:Core/Src/ADBMS_Abstraction.c **** 	{
 1693              		.loc 1 376 23 view .LVU484
 1694 00b2 013B     		subs	r3, r3, #1
 1695 00b4 9BB2     		uxth	r3, r3
 376:Core/Src/ADBMS_Abstraction.c **** 	{
 1696              		.loc 1 376 4 view .LVU485
 1697 00b6 4FF6FD71 		movw	r1, #65533
 1698 00ba 8B42     		cmp	r3, r1
 1699 00bc 05D8     		bhi	.L58
 380:Core/Src/ADBMS_Abstraction.c **** 	{
 1700              		.loc 1 380 2 is_stmt 1 view .LVU486
 380:Core/Src/ADBMS_Abstraction.c **** 	{
 1701              		.loc 1 380 39 is_stmt 0 view .LVU487
 1702 00be 013A     		subs	r2, r2, #1
 380:Core/Src/ADBMS_Abstraction.c **** 	{
 1703              		.loc 1 380 25 view .LVU488
 1704 00c0 34F81230 		ldrh	r3, [r4, r2, lsl #1]
 380:Core/Src/ADBMS_Abstraction.c **** 	{
 1705              		.loc 1 380 4 view .LVU489
 1706 00c4 1BB1     		cbz	r3, .L59
 385:Core/Src/ADBMS_Abstraction.c **** }
 1707              		.loc 1 385 9 view .LVU490
 1708 00c6 0020     		movs	r0, #0
 1709 00c8 EFE7     		b	.L56
 1710              	.L58:
 378:Core/Src/ADBMS_Abstraction.c **** 	}
 1711              		.loc 1 378 10 view .LVU491
ARM GAS  /tmp/ccqqH0ud.s 			page 39


 1712 00ca 0120     		movs	r0, #1
 1713 00cc EDE7     		b	.L56
 1714              	.L59:
 382:Core/Src/ADBMS_Abstraction.c **** 	}
 1715              		.loc 1 382 10 view .LVU492
 1716 00ce 1320     		movs	r0, #19
 1717 00d0 EBE7     		b	.L56
 1718              	.L63:
 1719 00d2 00BF     		.align	2
 1720              	.L62:
 1721 00d4 00000000 		.word	numberofcells
 1722              		.cfi_endproc
 1723              	.LFE154:
 1725              		.global	numberofauxchannels
 1726              		.section	.bss.numberofauxchannels,"aw",%nobits
 1729              	numberofauxchannels:
 1730 0000 00       		.space	1
 1731              		.global	numberofcells
 1732              		.section	.bss.numberofcells,"aw",%nobits
 1735              	numberofcells:
 1736 0000 00       		.space	1
 1737              		.text
 1738              	.Letext0:
 1739              		.file 2 "/home/david/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-non
 1740              		.file 3 "/home/david/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-non
 1741              		.file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
 1742              		.file 5 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
 1743              		.file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h"
 1744              		.file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_spi.h"
 1745              		.file 8 "Core/Inc/ADBMS_LL_Driver.h"
 1746              		.file 9 "Core/Inc/ADBMS_Abstraction.h"
 1747              		.file 10 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h"
ARM GAS  /tmp/ccqqH0ud.s 			page 40


DEFINED SYMBOLS
                            *ABS*:0000000000000000 ADBMS_Abstraction.c
     /tmp/ccqqH0ud.s:21     .text.amsWakeUp:0000000000000000 $t
     /tmp/ccqqH0ud.s:27     .text.amsWakeUp:0000000000000000 amsWakeUp
     /tmp/ccqqH0ud.s:56     .text.amsConfigCellMeasurement:0000000000000000 $t
     /tmp/ccqqH0ud.s:62     .text.amsConfigCellMeasurement:0000000000000000 amsConfigCellMeasurement
     /tmp/ccqqH0ud.s:83     .text.amsConfigCellMeasurement:0000000000000008 $d
     /tmp/ccqqH0ud.s:1735   .bss.numberofcells:0000000000000000 numberofcells
     /tmp/ccqqH0ud.s:88     .text.amsAuxMeasurement:0000000000000000 $t
     /tmp/ccqqH0ud.s:94     .text.amsAuxMeasurement:0000000000000000 amsAuxMeasurement
     /tmp/ccqqH0ud.s:249    .text.amsInternalStatusMeasurement:0000000000000000 $t
     /tmp/ccqqH0ud.s:255    .text.amsInternalStatusMeasurement:0000000000000000 amsInternalStatusMeasurement
     /tmp/ccqqH0ud.s:343    .text.amsConfigAuxMeasurement:0000000000000000 $t
     /tmp/ccqqH0ud.s:349    .text.amsConfigAuxMeasurement:0000000000000000 amsConfigAuxMeasurement
     /tmp/ccqqH0ud.s:412    .text.amsConfigGPIO:0000000000000000 $t
     /tmp/ccqqH0ud.s:418    .text.amsConfigGPIO:0000000000000000 amsConfigGPIO
     /tmp/ccqqH0ud.s:436    .text.amsSetGPIO:0000000000000000 $t
     /tmp/ccqqH0ud.s:442    .text.amsSetGPIO:0000000000000000 amsSetGPIO
     /tmp/ccqqH0ud.s:460    .text.readGPIO:0000000000000000 $t
     /tmp/ccqqH0ud.s:466    .text.readGPIO:0000000000000000 readGPIO
     /tmp/ccqqH0ud.s:484    .text.amsConfigBalancing:0000000000000000 $t
     /tmp/ccqqH0ud.s:490    .text.amsConfigBalancing:0000000000000000 amsConfigBalancing
     /tmp/ccqqH0ud.s:585    .text.amsStartBalancing:0000000000000000 $t
     /tmp/ccqqH0ud.s:591    .text.amsStartBalancing:0000000000000000 amsStartBalancing
     /tmp/ccqqH0ud.s:619    .text.amsStopBalancing:0000000000000000 $t
     /tmp/ccqqH0ud.s:625    .text.amsStopBalancing:0000000000000000 amsStopBalancing
     /tmp/ccqqH0ud.s:649    .text.amsSelfTest:0000000000000000 $t
     /tmp/ccqqH0ud.s:655    .text.amsSelfTest:0000000000000000 amsSelfTest
     /tmp/ccqqH0ud.s:670    .text.amsConfigUnderVoltage:0000000000000000 $t
     /tmp/ccqqH0ud.s:676    .text.amsConfigUnderVoltage:0000000000000000 amsConfigUnderVoltage
     /tmp/ccqqH0ud.s:735    .text.amsCheckUnderOverVoltage:0000000000000000 $t
     /tmp/ccqqH0ud.s:741    .text.amsCheckUnderOverVoltage:0000000000000000 amsCheckUnderOverVoltage
     /tmp/ccqqH0ud.s:930    .text.amsConfigOverVoltage:0000000000000000 $t
     /tmp/ccqqH0ud.s:936    .text.amsConfigOverVoltage:0000000000000000 amsConfigOverVoltage
     /tmp/ccqqH0ud.s:994    .text.initAMS:0000000000000000 $t
     /tmp/ccqqH0ud.s:1000   .text.initAMS:0000000000000000 initAMS
     /tmp/ccqqH0ud.s:1052   .text.initAMS:0000000000000038 $d
     /tmp/ccqqH0ud.s:1729   .bss.numberofauxchannels:0000000000000000 numberofauxchannels
     /tmp/ccqqH0ud.s:1058   .text.amsClearStatus:0000000000000000 $t
     /tmp/ccqqH0ud.s:1064   .text.amsClearStatus:0000000000000000 amsClearStatus
     /tmp/ccqqH0ud.s:1093   .text.amsClearAux:0000000000000000 $t
     /tmp/ccqqH0ud.s:1099   .text.amsClearAux:0000000000000000 amsClearAux
     /tmp/ccqqH0ud.s:1128   .text.amsClearCells:0000000000000000 $t
     /tmp/ccqqH0ud.s:1134   .text.amsClearCells:0000000000000000 amsClearCells
     /tmp/ccqqH0ud.s:1163   .text.amsSendWarning:0000000000000000 $t
     /tmp/ccqqH0ud.s:1169   .text.amsSendWarning:0000000000000000 amsSendWarning
     /tmp/ccqqH0ud.s:1184   .text.amsSendError:0000000000000000 $t
     /tmp/ccqqH0ud.s:1190   .text.amsSendError:0000000000000000 amsSendError
     /tmp/ccqqH0ud.s:1205   .text.amsClearWarning:0000000000000000 $t
     /tmp/ccqqH0ud.s:1211   .text.amsClearWarning:0000000000000000 amsClearWarning
     /tmp/ccqqH0ud.s:1226   .text.amsClearError:0000000000000000 $t
     /tmp/ccqqH0ud.s:1232   .text.amsClearError:0000000000000000 amsClearError
     /tmp/ccqqH0ud.s:1247   .text.amsReadCellVoltages:0000000000000000 $t
     /tmp/ccqqH0ud.s:1253   .text.amsReadCellVoltages:0000000000000000 amsReadCellVoltages
     /tmp/ccqqH0ud.s:1481   .text.amsCellMeasurement:0000000000000000 $t
     /tmp/ccqqH0ud.s:1487   .text.amsCellMeasurement:0000000000000000 amsCellMeasurement
     /tmp/ccqqH0ud.s:1531   .text.amscheckOpenCellWire:0000000000000000 $t
ARM GAS  /tmp/ccqqH0ud.s 			page 41


     /tmp/ccqqH0ud.s:1537   .text.amscheckOpenCellWire:0000000000000000 amscheckOpenCellWire
     /tmp/ccqqH0ud.s:1721   .text.amscheckOpenCellWire:00000000000000d4 $d
     /tmp/ccqqH0ud.s:1730   .bss.numberofauxchannels:0000000000000000 $d
     /tmp/ccqqH0ud.s:1736   .bss.numberofcells:0000000000000000 $d

UNDEFINED SYMBOLS
readCMD
writeCMD
mcuDelay
adbmsDriverInit
HAL_Delay
