Made two minimal, surgical fixes to stabilize ON/OFF splitting.
What I changed
- Core/Inc/main.h:76
- Set ADC_BUFF_SIZE from 50 to 64 so each half is even (32). This keeps the “i &
1” parity consistent across half-buffer boundaries.
- Core/Src/stm32f4xx_it.c:388
- Fixed N after splitting the first half: ADC_proc.N = (ADC_BUFF_SIZE/2 -
Sweep_state.curr_step_start_DMA_N)/2;
- Previously it used (Sweep_state.curr_step_start_DMA_N)/2, which was wrong for
that segment.
Why this helps
- With ADC_BUFF_SIZE=50, half-size is 25 (odd). That flips ON/OFF labeling each half
because i & 1 parity shifts by 25, mixing levels and driving avg_ON and avg_OFF
together.
- The N bug skewed normalization, further flattening differences between averages.
How to verify
- Build and flash: make && make flash.
- Observe avg_ON/avg_OFF over CDC. They should now differ consistently; inverting
meандр should swap them cleanly.
- If still needed, I can add a global sample counter (sample_seq) for fully robust
ON/OFF classification without relying on buffer indices.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
ARM GAS /tmp/ccod7tUW.s page 1
|
||||
ARM GAS /tmp/ccdbIjhy.s page 1
|
||||
|
||||
|
||||
1 .cpu cortex-m4
|
||||
@ -58,7 +58,7 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
29:USB_DEVICE/App/usbd_cdc_if.c **** /* Private define ------------------------------------------------------------*/
|
||||
30:USB_DEVICE/App/usbd_cdc_if.c **** /* Private macro -------------------------------------------------------------*/
|
||||
31:USB_DEVICE/App/usbd_cdc_if.c ****
|
||||
ARM GAS /tmp/ccod7tUW.s page 2
|
||||
ARM GAS /tmp/ccdbIjhy.s page 2
|
||||
|
||||
|
||||
32:USB_DEVICE/App/usbd_cdc_if.c **** /* USER CODE BEGIN PV */
|
||||
@ -118,7 +118,7 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
86:USB_DEVICE/App/usbd_cdc_if.c **** * @{
|
||||
87:USB_DEVICE/App/usbd_cdc_if.c **** */
|
||||
88:USB_DEVICE/App/usbd_cdc_if.c **** /* Create buffer for reception and transmission */
|
||||
ARM GAS /tmp/ccod7tUW.s page 3
|
||||
ARM GAS /tmp/ccdbIjhy.s page 3
|
||||
|
||||
|
||||
89:USB_DEVICE/App/usbd_cdc_if.c **** /* It's up to user to redefine and/or remove those define */
|
||||
@ -178,7 +178,7 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
143:USB_DEVICE/App/usbd_cdc_if.c **** CDC_Receive_FS,
|
||||
144:USB_DEVICE/App/usbd_cdc_if.c **** CDC_TransmitCplt_FS
|
||||
145:USB_DEVICE/App/usbd_cdc_if.c **** };
|
||||
ARM GAS /tmp/ccod7tUW.s page 4
|
||||
ARM GAS /tmp/ccdbIjhy.s page 4
|
||||
|
||||
|
||||
146:USB_DEVICE/App/usbd_cdc_if.c ****
|
||||
@ -238,7 +238,7 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
181:USB_DEVICE/App/usbd_cdc_if.c **** {
|
||||
49 .loc 1 181 1 is_stmt 1 view -0
|
||||
50 .cfi_startproc
|
||||
ARM GAS /tmp/ccod7tUW.s page 5
|
||||
ARM GAS /tmp/ccdbIjhy.s page 5
|
||||
|
||||
|
||||
51 @ args = 0, pretend = 0, frame = 0
|
||||
@ -298,7 +298,7 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
232:USB_DEVICE/App/usbd_cdc_if.c **** break;
|
||||
233:USB_DEVICE/App/usbd_cdc_if.c ****
|
||||
234:USB_DEVICE/App/usbd_cdc_if.c **** case CDC_SEND_BREAK:
|
||||
ARM GAS /tmp/ccod7tUW.s page 6
|
||||
ARM GAS /tmp/ccdbIjhy.s page 6
|
||||
|
||||
|
||||
235:USB_DEVICE/App/usbd_cdc_if.c ****
|
||||
@ -358,7 +358,7 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
272:USB_DEVICE/App/usbd_cdc_if.c **** * Data to send over USB IN endpoint are sent over CDC interface
|
||||
273:USB_DEVICE/App/usbd_cdc_if.c **** * through this function.
|
||||
274:USB_DEVICE/App/usbd_cdc_if.c **** * @note
|
||||
ARM GAS /tmp/ccod7tUW.s page 7
|
||||
ARM GAS /tmp/ccdbIjhy.s page 7
|
||||
|
||||
|
||||
275:USB_DEVICE/App/usbd_cdc_if.c **** *
|
||||
@ -418,7 +418,7 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
86 .LVL3:
|
||||
87 .loc 1 316 1 view .LVU16
|
||||
88 0002 7047 bx lr
|
||||
ARM GAS /tmp/ccod7tUW.s page 8
|
||||
ARM GAS /tmp/ccdbIjhy.s page 8
|
||||
|
||||
|
||||
89 .cfi_endproc
|
||||
@ -478,7 +478,7 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
139 .thumb_func
|
||||
141 CDC_Init_FS:
|
||||
142 .LFB243:
|
||||
ARM GAS /tmp/ccod7tUW.s page 9
|
||||
ARM GAS /tmp/ccdbIjhy.s page 9
|
||||
|
||||
|
||||
153:USB_DEVICE/App/usbd_cdc_if.c **** /* USER CODE BEGIN 3 */
|
||||
@ -538,7 +538,7 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
285:USB_DEVICE/App/usbd_cdc_if.c **** if (hcdc->TxState != 0){
|
||||
192 .loc 1 285 3 view .LVU31
|
||||
285:USB_DEVICE/App/usbd_cdc_if.c **** if (hcdc->TxState != 0){
|
||||
ARM GAS /tmp/ccod7tUW.s page 10
|
||||
ARM GAS /tmp/ccdbIjhy.s page 10
|
||||
|
||||
|
||||
193 .loc 1 285 27 is_stmt 0 view .LVU32
|
||||
@ -598,7 +598,7 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
234 .loc 1 292 3 is_stmt 1 view .LVU45
|
||||
293:USB_DEVICE/App/usbd_cdc_if.c ****
|
||||
235 .loc 1 293 1 is_stmt 0 view .LVU46
|
||||
ARM GAS /tmp/ccod7tUW.s page 11
|
||||
ARM GAS /tmp/ccdbIjhy.s page 11
|
||||
|
||||
|
||||
236 0024 10BD pop {r4, pc}
|
||||
@ -641,32 +641,32 @@ ARM GAS /tmp/ccod7tUW.s page 1
|
||||
272 .file 3 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h"
|
||||
273 .file 4 "Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h"
|
||||
274 .file 5 "USB_DEVICE/App/usbd_cdc_if.h"
|
||||
ARM GAS /tmp/ccod7tUW.s page 12
|
||||
ARM GAS /tmp/ccdbIjhy.s page 12
|
||||
|
||||
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:00000000 usbd_cdc_if.c
|
||||
/tmp/ccod7tUW.s:21 .text.CDC_DeInit_FS:00000000 $t
|
||||
/tmp/ccod7tUW.s:26 .text.CDC_DeInit_FS:00000000 CDC_DeInit_FS
|
||||
/tmp/ccod7tUW.s:41 .text.CDC_Control_FS:00000000 $t
|
||||
/tmp/ccod7tUW.s:46 .text.CDC_Control_FS:00000000 CDC_Control_FS
|
||||
/tmp/ccod7tUW.s:66 .text.CDC_TransmitCplt_FS:00000000 $t
|
||||
/tmp/ccod7tUW.s:71 .text.CDC_TransmitCplt_FS:00000000 CDC_TransmitCplt_FS
|
||||
/tmp/ccod7tUW.s:93 .text.CDC_Receive_FS:00000000 $t
|
||||
/tmp/ccod7tUW.s:98 .text.CDC_Receive_FS:00000000 CDC_Receive_FS
|
||||
/tmp/ccod7tUW.s:131 .text.CDC_Receive_FS:00000018 $d
|
||||
/tmp/ccod7tUW.s:136 .text.CDC_Init_FS:00000000 $t
|
||||
/tmp/ccod7tUW.s:141 .text.CDC_Init_FS:00000000 CDC_Init_FS
|
||||
/tmp/ccod7tUW.s:171 .text.CDC_Init_FS:0000001c $d
|
||||
/tmp/ccod7tUW.s:260 .bss.UserTxBufferFS:00000000 UserTxBufferFS
|
||||
/tmp/ccod7tUW.s:267 .bss.UserRxBufferFS:00000000 UserRxBufferFS
|
||||
/tmp/ccod7tUW.s:178 .text.CDC_Transmit_FS:00000000 $t
|
||||
/tmp/ccod7tUW.s:184 .text.CDC_Transmit_FS:00000000 CDC_Transmit_FS
|
||||
/tmp/ccod7tUW.s:240 .text.CDC_Transmit_FS:00000028 $d
|
||||
/tmp/ccod7tUW.s:249 .data.USBD_Interface_fops_FS:00000000 USBD_Interface_fops_FS
|
||||
/tmp/ccod7tUW.s:246 .data.USBD_Interface_fops_FS:00000000 $d
|
||||
/tmp/ccod7tUW.s:257 .bss.UserTxBufferFS:00000000 $d
|
||||
/tmp/ccod7tUW.s:264 .bss.UserRxBufferFS:00000000 $d
|
||||
/tmp/ccdbIjhy.s:21 .text.CDC_DeInit_FS:00000000 $t
|
||||
/tmp/ccdbIjhy.s:26 .text.CDC_DeInit_FS:00000000 CDC_DeInit_FS
|
||||
/tmp/ccdbIjhy.s:41 .text.CDC_Control_FS:00000000 $t
|
||||
/tmp/ccdbIjhy.s:46 .text.CDC_Control_FS:00000000 CDC_Control_FS
|
||||
/tmp/ccdbIjhy.s:66 .text.CDC_TransmitCplt_FS:00000000 $t
|
||||
/tmp/ccdbIjhy.s:71 .text.CDC_TransmitCplt_FS:00000000 CDC_TransmitCplt_FS
|
||||
/tmp/ccdbIjhy.s:93 .text.CDC_Receive_FS:00000000 $t
|
||||
/tmp/ccdbIjhy.s:98 .text.CDC_Receive_FS:00000000 CDC_Receive_FS
|
||||
/tmp/ccdbIjhy.s:131 .text.CDC_Receive_FS:00000018 $d
|
||||
/tmp/ccdbIjhy.s:136 .text.CDC_Init_FS:00000000 $t
|
||||
/tmp/ccdbIjhy.s:141 .text.CDC_Init_FS:00000000 CDC_Init_FS
|
||||
/tmp/ccdbIjhy.s:171 .text.CDC_Init_FS:0000001c $d
|
||||
/tmp/ccdbIjhy.s:260 .bss.UserTxBufferFS:00000000 UserTxBufferFS
|
||||
/tmp/ccdbIjhy.s:267 .bss.UserRxBufferFS:00000000 UserRxBufferFS
|
||||
/tmp/ccdbIjhy.s:178 .text.CDC_Transmit_FS:00000000 $t
|
||||
/tmp/ccdbIjhy.s:184 .text.CDC_Transmit_FS:00000000 CDC_Transmit_FS
|
||||
/tmp/ccdbIjhy.s:240 .text.CDC_Transmit_FS:00000028 $d
|
||||
/tmp/ccdbIjhy.s:249 .data.USBD_Interface_fops_FS:00000000 USBD_Interface_fops_FS
|
||||
/tmp/ccdbIjhy.s:246 .data.USBD_Interface_fops_FS:00000000 $d
|
||||
/tmp/ccdbIjhy.s:257 .bss.UserTxBufferFS:00000000 $d
|
||||
/tmp/ccdbIjhy.s:264 .bss.UserRxBufferFS:00000000 $d
|
||||
|
||||
UNDEFINED SYMBOLS
|
||||
USBD_CDC_SetRxBuffer
|
||||
|
||||
Reference in New Issue
Block a user