Proper fix for bug

Never sets device mode to 5 now, preventing frequency from changing when
scope disabled.
This commit is contained in:
EspoTek 2016-10-05 10:17:53 +11:00
parent 3602d0fb92
commit ae34eaf692
22 changed files with 11877 additions and 11361 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -16,6 +16,7 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/..
Allocating common symbols
Common symbol size file
debug_counter 0x4 src/main.o
dacBuf_CH1 0x200 src/main.o
udd_g_ctrlreq 0x10 src/main.o
sleepmgr_locks 0x6 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
@ -1927,7 +1928,7 @@ END GROUP
.rela.plt
*(.rela.plt)
.text 0x00000000 0x298c
.text 0x00000000 0x29aa
*(.vectors)
.vectors 0x00000000 0x1fc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/XMEGAA_DFP/1.0.39/gcc/dev/atxmega32a4u/avrxmega2/crtatxmega32a4u.o
0x00000000 __vector_default
@ -2126,243 +2127,243 @@ END GROUP
.text.iso_callback
0x000002a4 0x22 src/main.o
0x000002a4 iso_callback
.text.main 0x000002c6 0x44 src/main.o
.text.main 0x000002c6 0x60 src/main.o
0x000002c6 main
.text.main_suspend_action
0x0000030a 0x2 src/main.o
0x0000030a main_suspend_action
0x00000326 0x2 src/main.o
0x00000326 main_suspend_action
.text.main_resume_action
0x0000030c 0x2 src/main.o
0x0000030c main_resume_action
0x00000328 0x2 src/main.o
0x00000328 main_resume_action
.text.main_sof_action
0x0000030e 0x42 src/main.o
0x0000030e main_sof_action
0x0000032a 0x42 src/main.o
0x0000032a main_sof_action
.text.main_vendor_enable
0x00000350 0x18 src/main.o
0x00000350 main_vendor_enable
0x0000036c 0x18 src/main.o
0x0000036c main_vendor_enable
.text.main_vendor_disable
0x00000368 0x6 src/main.o
0x00000368 main_vendor_disable
0x00000384 0x6 src/main.o
0x00000384 main_vendor_disable
.text.main_setup_out_received
0x0000036e 0x4 src/main.o
0x0000036e main_setup_out_received
0x0000038a 0x4 src/main.o
0x0000038a main_setup_out_received
.text.main_setup_in_received
0x00000372 0x4 src/main.o
0x00000372 main_setup_in_received
0x0000038e 0x4 src/main.o
0x0000038e main_setup_in_received
.text.tiny_adc_ch0setup
0x00000376 0x2a src/tiny_adc.o
0x00000376 tiny_adc_ch0setup
0x00000392 0x2a src/tiny_adc.o
0x00000392 tiny_adc_ch0setup
.text.tiny_adc_ch1setup
0x000003a0 0x14 src/tiny_adc.o
0x000003a0 tiny_adc_ch1setup
0x000003bc 0x14 src/tiny_adc.o
0x000003bc tiny_adc_ch1setup
.text.tiny_adc_pid_setup
0x000003b4 0x14 src/tiny_adc.o
0x000003b4 tiny_adc_pid_setup
0x000003d0 0x14 src/tiny_adc.o
0x000003d0 tiny_adc_pid_setup
.text.ReadCalibrationByte
0x000003c8 0x12 src/tiny_adc.o
0x000003c8 ReadCalibrationByte
0x000003e4 0x12 src/tiny_adc.o
0x000003e4 ReadCalibrationByte
.text.tiny_adc_setup
0x000003da 0x7a src/tiny_adc.o
0x000003da tiny_adc_setup
0x000003f6 0x7a src/tiny_adc.o
0x000003f6 tiny_adc_setup
.text.tiny_dac_setup
0x00000454 0x48 src/tiny_dac.o
0x00000454 tiny_dac_setup
0x00000470 0x48 src/tiny_dac.o
0x00000470 tiny_dac_setup
.text.tiny_dma_setup
0x0000049c 0x12 src/tiny_dma.o
0x0000049c tiny_dma_setup
0x000004b8 0x12 src/tiny_dma.o
0x000004b8 tiny_dma_setup
.text.tiny_dma_flush
0x000004ae 0x24 src/tiny_dma.o
0x000004ae tiny_dma_flush
0x000004ca 0x24 src/tiny_dma.o
0x000004ca tiny_dma_flush
.text.tiny_dma_set_mode_0
0x000004d2 0x90 src/tiny_dma.o
0x000004d2 tiny_dma_set_mode_0
0x000004ee 0x90 src/tiny_dma.o
0x000004ee tiny_dma_set_mode_0
.text.tiny_dma_loop_mode_0
0x00000562 0x60 src/tiny_dma.o
0x00000562 tiny_dma_loop_mode_0
0x0000057e 0x60 src/tiny_dma.o
0x0000057e tiny_dma_loop_mode_0
.text.tiny_dma_set_mode_1
0x000005c2 0x9c src/tiny_dma.o
0x000005c2 tiny_dma_set_mode_1
0x000005de 0x9c src/tiny_dma.o
0x000005de tiny_dma_set_mode_1
.text.tiny_dma_loop_mode_1
0x0000065e 0xae src/tiny_dma.o
0x0000065e tiny_dma_loop_mode_1
0x0000067a 0xae src/tiny_dma.o
0x0000067a tiny_dma_loop_mode_1
.text.tiny_dma_set_mode_2
0x0000070c 0x94 src/tiny_dma.o
0x0000070c tiny_dma_set_mode_2
0x00000728 0x94 src/tiny_dma.o
0x00000728 tiny_dma_set_mode_2
.text.tiny_dma_loop_mode_2
0x000007a0 0xb0 src/tiny_dma.o
0x000007a0 tiny_dma_loop_mode_2
0x000007bc 0xb0 src/tiny_dma.o
0x000007bc tiny_dma_loop_mode_2
.text.tiny_dma_set_mode_3
0x00000850 0xcc src/tiny_dma.o
0x00000850 tiny_dma_set_mode_3
0x0000086c 0xcc src/tiny_dma.o
0x0000086c tiny_dma_set_mode_3
.text.tiny_dma_loop_mode_3
0x0000091c 0x60 src/tiny_dma.o
0x0000091c tiny_dma_loop_mode_3
0x00000938 0x60 src/tiny_dma.o
0x00000938 tiny_dma_loop_mode_3
.text.tiny_dma_set_mode_4
0x0000097c 0x7c src/tiny_dma.o
0x0000097c tiny_dma_set_mode_4
0x00000998 0x7c src/tiny_dma.o
0x00000998 tiny_dma_set_mode_4
.text.tiny_dma_loop_mode_4
0x000009f8 0xca src/tiny_dma.o
0x000009f8 tiny_dma_loop_mode_4
0x00000a14 0xca src/tiny_dma.o
0x00000a14 tiny_dma_loop_mode_4
.text.tiny_dma_set_mode_5
0x00000ac2 0x8e src/tiny_dma.o
0x00000ac2 tiny_dma_set_mode_5
0x00000ade 0x90 src/tiny_dma.o
0x00000ade tiny_dma_set_mode_5
.text.tiny_dma_set_mode_6
0x00000b50 0x92 src/tiny_dma.o
0x00000b50 tiny_dma_set_mode_6
0x00000b6e 0x92 src/tiny_dma.o
0x00000b6e tiny_dma_set_mode_6
.text.tiny_dma_loop_mode_6
0x00000be2 0x5c src/tiny_dma.o
0x00000be2 tiny_dma_loop_mode_6
0x00000c00 0x5c src/tiny_dma.o
0x00000c00 tiny_dma_loop_mode_6
.text.tiny_dma_set_mode_7
0x00000c3e 0x92 src/tiny_dma.o
0x00000c3e tiny_dma_set_mode_7
0x00000c5c 0x92 src/tiny_dma.o
0x00000c5c tiny_dma_set_mode_7
.text.tiny_dma_loop_mode_7
0x00000cd0 0x5c src/tiny_dma.o
0x00000cd0 tiny_dma_loop_mode_7
0x00000cee 0x5c src/tiny_dma.o
0x00000cee tiny_dma_loop_mode_7
.text.tiny_timer_setup
0x00000d2c 0x76 src/tiny_timer.o
0x00000d2c tiny_timer_setup
0x00000d4a 0x76 src/tiny_timer.o
0x00000d4a tiny_timer_setup
.text.__vector_83
0x00000da2 0xee src/tiny_timer.o
0x00000da2 __vector_83
0x00000dc0 0xee src/tiny_timer.o
0x00000dc0 __vector_83
.text.tiny_uart_setup
0x00000e90 0x34 src/tiny_uart.o
0x00000e90 tiny_uart_setup
0x00000eae 0x34 src/tiny_uart.o
0x00000eae tiny_uart_setup
.text.tiny_spi_setup
0x00000ec4 0x1e src/tiny_uart.o
0x00000ec4 tiny_spi_setup
0x00000ee2 0x1e src/tiny_uart.o
0x00000ee2 tiny_spi_setup
.text.__vector_24
0x00000ee2 0x16 src/tiny_uart.o
0x00000ee2 __vector_24
0x00000f00 0x16 src/tiny_uart.o
0x00000f00 __vector_24
.text.sysclk_init
0x00000ef8 0xe0 src/ASF/common/services/clock/xmega/sysclk.o
0x00000ef8 sysclk_init
0x00000f16 0xe0 src/ASF/common/services/clock/xmega/sysclk.o
0x00000f16 sysclk_init
.text.sysclk_enable_module
0x00000fd8 0x18 src/ASF/common/services/clock/xmega/sysclk.o
0x00000fd8 sysclk_enable_module
0x00000ff6 0x18 src/ASF/common/services/clock/xmega/sysclk.o
0x00000ff6 sysclk_enable_module
.text.sysclk_enable_usb
0x00000ff0 0x6e src/ASF/common/services/clock/xmega/sysclk.o
0x00000ff0 sysclk_enable_usb
0x0000100e 0x6e src/ASF/common/services/clock/xmega/sysclk.o
0x0000100e sysclk_enable_usb
.text.udi_vendor_getsetting
0x0000105e 0x6 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x0000105e udi_vendor_getsetting
0x0000107c 0x6 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x0000107c udi_vendor_getsetting
.text.udi_vendor_enable
0x00001064 0x16 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00001064 udi_vendor_enable
0x00001082 0x16 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00001082 udi_vendor_enable
.text.udi_vendor_disable
0x0000107a 0xc src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x0000107a udi_vendor_disable
0x00001098 0xc src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00001098 udi_vendor_disable
.text.udi_vendor_setup
0x00001086 0x4c src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00001086 udi_vendor_setup
0x000010a4 0x4c src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x000010a4 udi_vendor_setup
.text.udi_vendor_iso_in_run
0x000010d2 0x18 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x000010d2 udi_vendor_iso_in_run
0x000010f0 0x18 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x000010f0 udi_vendor_iso_in_run
.text.udc_next_desc_in_iface
0x000010ea 0x64 src/ASF/common/services/usb/udc/udc.o
0x00001108 0x64 src/ASF/common/services/usb/udc/udc.o
.text.udc_valid_address
0x0000114e 0xc src/ASF/common/services/usb/udc/udc.o
0x0000116c 0xc src/ASF/common/services/usb/udc/udc.o
.text.udc_update_iface_desc
0x0000115a 0x74 src/ASF/common/services/usb/udc/udc.o
0x00001178 0x74 src/ASF/common/services/usb/udc/udc.o
.text.udc_iface_disable
0x000011ce 0x84 src/ASF/common/services/usb/udc/udc.o
0x000011ec 0x84 src/ASF/common/services/usb/udc/udc.o
.text.udc_iface_enable
0x00001252 0x64 src/ASF/common/services/usb/udc/udc.o
0x00001270 0x64 src/ASF/common/services/usb/udc/udc.o
.text.udc_get_interface_desc
0x000012b6 0xa src/ASF/common/services/usb/udc/udc.o
0x000012b6 udc_get_interface_desc
0x000012d4 0xa src/ASF/common/services/usb/udc/udc.o
0x000012d4 udc_get_interface_desc
.text.udc_start
0x000012c0 0x4 src/ASF/common/services/usb/udc/udc.o
0x000012c0 udc_start
0x000012de 0x4 src/ASF/common/services/usb/udc/udc.o
0x000012de udc_start
.text.udc_reset
0x000012c4 0x4a src/ASF/common/services/usb/udc/udc.o
0x000012c4 udc_reset
0x000012e2 0x4a src/ASF/common/services/usb/udc/udc.o
0x000012e2 udc_reset
.text.udc_sof_notify
0x0000130e 0x60 src/ASF/common/services/usb/udc/udc.o
0x0000130e udc_sof_notify
0x0000132c 0x60 src/ASF/common/services/usb/udc/udc.o
0x0000132c udc_sof_notify
.text.udc_process_setup
0x0000136e 0x70c src/ASF/common/services/usb/udc/udc.o
0x0000136e udc_process_setup
0x0000138c 0x70c src/ASF/common/services/usb/udc/udc.o
0x0000138c udc_process_setup
.text.ccp_write_io
0x00001a7a 0xc src/ASF/xmega/drivers/cpu/ccp.o
0x00001a7a ccp_write_io
0x00001a98 0xc src/ASF/xmega/drivers/cpu/ccp.o
0x00001a98 ccp_write_io
.text.nvm_read_byte
0x00001a86 0x14 src/ASF/xmega/drivers/nvm/nvm_asm.o
0x00001a86 nvm_read_byte
0x00001aa4 0x14 src/ASF/xmega/drivers/nvm/nvm_asm.o
0x00001aa4 nvm_read_byte
.text.udd_sleep_mode
0x00001a9a 0x52 src/ASF/xmega/drivers/usb/usb_device.o
0x00001ab8 0x52 src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_init
0x00001aec 0x4e src/ASF/xmega/drivers/usb/usb_device.o
0x00001b0a 0x4e src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_stall_data
0x00001b3a 0x1c src/ASF/xmega/drivers/usb/usb_device.o
0x00001b58 0x1c src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_send_zlp_in
0x00001b56 0x1c src/ASF/xmega/drivers/usb/usb_device.o
0x00001b74 0x1c src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_endofrequest
0x00001b72 0x10 src/ASF/xmega/drivers/usb/usb_device.o
0x00001b90 0x10 src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_in_sent
0x00001b82 0xd8 src/ASF/xmega/drivers/usb/usb_device.o
0x00001ba0 0xd8 src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ep_get_size
0x00001c5a 0x4c src/ASF/xmega/drivers/usb/usb_device.o
0x00001c78 0x4c src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ep_get_job
0x00001ca6 0x36 src/ASF/xmega/drivers/usb/usb_device.o
0x00001cc4 0x36 src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_interrupt_tc_setup
0x00001cdc 0xde src/ASF/xmega/drivers/usb/usb_device.o
0x00001cfa 0xde src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ep_trans_complet
0x00001dba 0x2b4 src/ASF/xmega/drivers/usb/usb_device.o
0x00001dd8 0x2b4 src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_attach
0x0000206e 0x46 src/ASF/xmega/drivers/usb/usb_device.o
0x0000206e udd_attach
0x0000208c 0x46 src/ASF/xmega/drivers/usb/usb_device.o
0x0000208c udd_attach
.text.udd_enable
0x000020b4 0x10a src/ASF/xmega/drivers/usb/usb_device.o
0x000020b4 udd_enable
0x000020d2 0x10a src/ASF/xmega/drivers/usb/usb_device.o
0x000020d2 udd_enable
.text.udd_set_address
0x000021be 0x6 src/ASF/xmega/drivers/usb/usb_device.o
0x000021be udd_set_address
0x000021dc 0x6 src/ASF/xmega/drivers/usb/usb_device.o
0x000021dc udd_set_address
.text.udd_getaddress
0x000021c4 0x6 src/ASF/xmega/drivers/usb/usb_device.o
0x000021c4 udd_getaddress
0x000021e2 0x6 src/ASF/xmega/drivers/usb/usb_device.o
0x000021e2 udd_getaddress
.text.udd_set_setup_payload
0x000021ca 0xe src/ASF/xmega/drivers/usb/usb_device.o
0x000021ca udd_set_setup_payload
0x000021e8 0xe src/ASF/xmega/drivers/usb/usb_device.o
0x000021e8 udd_set_setup_payload
.text.udd_ep_alloc
0x000021d8 0xea src/ASF/xmega/drivers/usb/usb_device.o
0x000021d8 udd_ep_alloc
0x000021f6 0xea src/ASF/xmega/drivers/usb/usb_device.o
0x000021f6 udd_ep_alloc
.text.udd_ep_is_halted
0x000022c2 0x36 src/ASF/xmega/drivers/usb/usb_device.o
0x000022c2 udd_ep_is_halted
0x000022e0 0x36 src/ASF/xmega/drivers/usb/usb_device.o
0x000022e0 udd_ep_is_halted
.text.udd_ep_clear_halt
0x000022f8 0x6a src/ASF/xmega/drivers/usb/usb_device.o
0x000022f8 udd_ep_clear_halt
0x00002316 0x6a src/ASF/xmega/drivers/usb/usb_device.o
0x00002316 udd_ep_clear_halt
.text.udd_ep_run
0x00002362 0x174 src/ASF/xmega/drivers/usb/usb_device.o
0x00002362 udd_ep_run
0x00002380 0x174 src/ASF/xmega/drivers/usb/usb_device.o
0x00002380 udd_ep_run
.text.udd_ep_abort
0x000024d6 0x92 src/ASF/xmega/drivers/usb/usb_device.o
0x000024d6 udd_ep_abort
0x000024f4 0x92 src/ASF/xmega/drivers/usb/usb_device.o
0x000024f4 udd_ep_abort
.text.udd_ep_free
0x00002568 0x38 src/ASF/xmega/drivers/usb/usb_device.o
0x00002568 udd_ep_free
0x00002586 0x38 src/ASF/xmega/drivers/usb/usb_device.o
0x00002586 udd_ep_free
.text.udd_ep_set_halt
0x000025a0 0x5a src/ASF/xmega/drivers/usb/usb_device.o
0x000025a0 udd_ep_set_halt
0x000025be 0x5a src/ASF/xmega/drivers/usb/usb_device.o
0x000025be udd_ep_set_halt
.text.__vector_125
0x000025fa 0x174 src/ASF/xmega/drivers/usb/usb_device.o
0x000025fa __vector_125
0x00002618 0x174 src/ASF/xmega/drivers/usb/usb_device.o
0x00002618 __vector_125
.text.__vector_126
0x0000276e 0x1d4 src/ASF/xmega/drivers/usb/usb_device.o
0x0000276e __vector_126
0x0000278c 0x1d4 src/ASF/xmega/drivers/usb/usb_device.o
0x0000278c __vector_126
.text.libgcc.div
0x00002942 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_udivmodhi4.o)
0x00002942 __udivmodhi4
.text.libgcc 0x0000296a 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_tablejump2.o)
0x0000296a __tablejump2__
0x00002960 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_udivmodhi4.o)
0x00002960 __udivmodhi4
.text.libgcc 0x00002988 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_tablejump2.o)
0x00002988 __tablejump2__
.text.avr-libc
0x00002976 0x12 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avrxmega2\libc.a(memcpy.o)
0x00002976 memcpy
0x00002988 . = ALIGN (0x2)
0x00002994 0x12 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avrxmega2\libc.a(memcpy.o)
0x00002994 memcpy
0x000029a6 . = ALIGN (0x2)
*(.fini9)
.fini9 0x00002988 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_exit.o)
0x00002988 _exit
0x00002988 exit
.fini9 0x000029a6 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_exit.o)
0x000029a6 _exit
0x000029a6 exit
*(.fini9)
*(.fini8)
*(.fini8)
@ -2381,11 +2382,11 @@ END GROUP
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x00002988 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_exit.o)
.fini0 0x000029a6 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_exit.o)
*(.fini0)
0x0000298c _etext = .
0x000029aa _etext = .
.data 0x00802000 0xb2 load address 0x0000298c
.data 0x00802000 0xb2 load address 0x000029aa
0x00802000 PROVIDE (__data_start, .)
*(.data)
*(.data*)
@ -2434,7 +2435,7 @@ END GROUP
0x008020b2 _edata = .
0x008020b2 PROVIDE (__data_end, .)
.bss 0x008020b2 0xb96
.bss 0x008020b2 0xb9a
0x008020b2 PROVIDE (__bss_start, .)
*(.bss)
*(.bss*)
@ -2482,22 +2483,23 @@ END GROUP
0x00802254 0x1 src/ASF/xmega/drivers/usb/usb_device.o
*(COMMON)
*fill* 0x00802255 0x1
COMMON 0x00802256 0x9ec src/main.o
0x00802256 dacBuf_CH1
0x00802456 udd_g_ctrlreq
0x00802466 dacBuf_CH2
0x00802666 isoBuf
COMMON 0x00802c42 0x6 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
0x00802c42 sleepmgr_locks
0x00802c48 PROVIDE (__bss_end, .)
0x0000298c __data_load_start = LOADADDR (.data)
0x00002a3e __data_load_end = (__data_load_start + SIZEOF (.data))
COMMON 0x00802256 0x9f0 src/main.o
0x00802256 debug_counter
0x0080225a dacBuf_CH1
0x0080245a udd_g_ctrlreq
0x0080246a dacBuf_CH2
0x0080266a isoBuf
COMMON 0x00802c46 0x6 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
0x00802c46 sleepmgr_locks
0x00802c4c PROVIDE (__bss_end, .)
0x000029aa __data_load_start = LOADADDR (.data)
0x00002a5c __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x00802c48 0x0
.noinit 0x00802c4c 0x0
[!provide] PROVIDE (__noinit_start, .)
*(.noinit*)
[!provide] PROVIDE (__noinit_end, .)
0x00802c48 _end = .
0x00802c4c _end = .
[!provide] PROVIDE (__heap_start, .)
.eeprom 0x00810000 0x0
@ -2613,24 +2615,24 @@ END GROUP
.debug_pubnames
*(.debug_pubnames)
.debug_info 0x00000000 0xa277
.debug_info 0x00000000 0xa294
*(.debug_info .gnu.linkonce.wi.*)
.debug_info 0x00000000 0x290 src/tiny_dig.o
.debug_info 0x00000290 0xff src/ASF/common/boards/user_board/init.o
.debug_info 0x0000038f 0x7cf src/main.o
.debug_info 0x00000b5e 0x9b6 src/tiny_adc.o
.debug_info 0x00001514 0x5f0 src/tiny_dac.o
.debug_info 0x00001b04 0x10d5 src/tiny_dma.o
.debug_info 0x00002bd9 0x17b4 src/tiny_timer.o
.debug_info 0x0000438d 0x4b2 src/tiny_uart.o
.debug_info 0x0000483f 0xc3d src/ASF/common/services/clock/xmega/sysclk.o
.debug_info 0x0000547c 0x121 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
.debug_info 0x0000559d 0x62f src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
.debug_info 0x00005bcc 0x5fc src/ASF/common/services/usb/class/vendor/device/udi_vendor_desc.o
.debug_info 0x000061c8 0x214e src/ASF/common/services/usb/udc/udc.o
.debug_info 0x00008316 0x91 src/ASF/xmega/drivers/cpu/ccp.o
.debug_info 0x000083a7 0x91 src/ASF/xmega/drivers/nvm/nvm_asm.o
.debug_info 0x00008438 0x1e3f src/ASF/xmega/drivers/usb/usb_device.o
.debug_info 0x0000038f 0x7ec src/main.o
.debug_info 0x00000b7b 0x9b6 src/tiny_adc.o
.debug_info 0x00001531 0x5f0 src/tiny_dac.o
.debug_info 0x00001b21 0x10d5 src/tiny_dma.o
.debug_info 0x00002bf6 0x17b4 src/tiny_timer.o
.debug_info 0x000043aa 0x4b2 src/tiny_uart.o
.debug_info 0x0000485c 0xc3d src/ASF/common/services/clock/xmega/sysclk.o
.debug_info 0x00005499 0x121 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
.debug_info 0x000055ba 0x62f src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
.debug_info 0x00005be9 0x5fc src/ASF/common/services/usb/class/vendor/device/udi_vendor_desc.o
.debug_info 0x000061e5 0x214e src/ASF/common/services/usb/udc/udc.o
.debug_info 0x00008333 0x91 src/ASF/xmega/drivers/cpu/ccp.o
.debug_info 0x000083c4 0x91 src/ASF/xmega/drivers/nvm/nvm_asm.o
.debug_info 0x00008455 0x1e3f src/ASF/xmega/drivers/usb/usb_device.o
.debug_abbrev 0x00000000 0x1ba2
*(.debug_abbrev)
@ -2651,24 +2653,24 @@ END GROUP
.debug_abbrev 0x000015bc 0x12 src/ASF/xmega/drivers/nvm/nvm_asm.o
.debug_abbrev 0x000015ce 0x5d4 src/ASF/xmega/drivers/usb/usb_device.o
.debug_line 0x00000000 0x89d2
.debug_line 0x00000000 0x894e
*(.debug_line .debug_line.* .debug_line_end)
.debug_line 0x00000000 0x7b8 src/tiny_dig.o
.debug_line 0x000007b8 0x78d src/ASF/common/boards/user_board/init.o
.debug_line 0x00000f45 0xa09 src/main.o
.debug_line 0x0000194e 0x956 src/tiny_adc.o
.debug_line 0x000022a4 0x806 src/tiny_dac.o
.debug_line 0x00002aaa 0x125a src/tiny_dma.o
.debug_line 0x00003d04 0x8bb src/tiny_timer.o
.debug_line 0x000045bf 0x83f src/tiny_uart.o
.debug_line 0x00004dfe 0x738 src/ASF/common/services/clock/xmega/sysclk.o
.debug_line 0x00005536 0x455 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
.debug_line 0x0000598b 0x625 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
.debug_line 0x00005fb0 0x4f1 src/ASF/common/services/usb/class/vendor/device/udi_vendor_desc.o
.debug_line 0x000064a1 0xeae src/ASF/common/services/usb/udc/udc.o
.debug_line 0x0000734f 0x6e src/ASF/xmega/drivers/cpu/ccp.o
.debug_line 0x000073bd 0x11f src/ASF/xmega/drivers/nvm/nvm_asm.o
.debug_line 0x000074dc 0x14f6 src/ASF/xmega/drivers/usb/usb_device.o
.debug_line 0x00000f45 0x985 src/main.o
.debug_line 0x000018ca 0x956 src/tiny_adc.o
.debug_line 0x00002220 0x806 src/tiny_dac.o
.debug_line 0x00002a26 0x125a src/tiny_dma.o
.debug_line 0x00003c80 0x8bb src/tiny_timer.o
.debug_line 0x0000453b 0x83f src/tiny_uart.o
.debug_line 0x00004d7a 0x738 src/ASF/common/services/clock/xmega/sysclk.o
.debug_line 0x000054b2 0x455 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
.debug_line 0x00005907 0x625 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
.debug_line 0x00005f2c 0x4f1 src/ASF/common/services/usb/class/vendor/device/udi_vendor_desc.o
.debug_line 0x0000641d 0xeae src/ASF/common/services/usb/udc/udc.o
.debug_line 0x000072cb 0x6e src/ASF/xmega/drivers/cpu/ccp.o
.debug_line 0x00007339 0x11f src/ASF/xmega/drivers/nvm/nvm_asm.o
.debug_line 0x00007458 0x14f6 src/ASF/xmega/drivers/usb/usb_device.o
.debug_frame 0x00000000 0x9d0
*(.debug_frame)
@ -2685,35 +2687,35 @@ END GROUP
.debug_frame 0x000004e4 0x114 src/ASF/common/services/usb/udc/udc.o
.debug_frame 0x000005f8 0x3d8 src/ASF/xmega/drivers/usb/usb_device.o
.debug_str 0x00000000 0x2f5e7
.debug_str 0x00000000 0x2f5f5
*(.debug_str)
.debug_str 0x00000000 0x27632 src/tiny_dig.o
0x27ca5 (size before relaxing)
.debug_str 0x00027632 0x36 src/ASF/common/boards/user_board/init.o
0x27ad2 (size before relaxing)
.debug_str 0x00027668 0x94a src/main.o
0x28596 (size before relaxing)
.debug_str 0x00027fb2 0xd0f src/tiny_adc.o
.debug_str 0x00027668 0x961 src/main.o
0x285ad (size before relaxing)
.debug_str 0x00027fc9 0xd0f src/tiny_adc.o
0x28e7c (size before relaxing)
.debug_str 0x00028cc1 0x1a6 src/tiny_dac.o
.debug_str 0x00028cd8 0x1a6 src/tiny_dac.o
0x282cf (size before relaxing)
.debug_str 0x00028e67 0xcbc src/tiny_dma.o
.debug_str 0x00028e7e 0xcbc src/tiny_dma.o
0x29184 (size before relaxing)
.debug_str 0x00029b23 0x1166 src/tiny_timer.o
.debug_str 0x00029b3a 0x1166 src/tiny_timer.o
0x29573 (size before relaxing)
.debug_str 0x0002ac89 0x19d src/tiny_uart.o
.debug_str 0x0002aca0 0x19d src/tiny_uart.o
0x283ac (size before relaxing)
.debug_str 0x0002ae26 0x41c src/ASF/common/services/clock/xmega/sysclk.o
.debug_str 0x0002ae3d 0x41c src/ASF/common/services/clock/xmega/sysclk.o
0x2598f (size before relaxing)
.debug_str 0x0002b242 0x96 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
.debug_str 0x0002b259 0x96 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
0x24246 (size before relaxing)
.debug_str 0x0002b2d8 0x1ce src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
.debug_str 0x0002b2ef 0x1ce src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x2672f (size before relaxing)
.debug_str 0x0002b4a6 0x3f7 src/ASF/common/services/usb/class/vendor/device/udi_vendor_desc.o
.debug_str 0x0002b4bd 0x3f7 src/ASF/common/services/usb/class/vendor/device/udi_vendor_desc.o
0x26732 (size before relaxing)
.debug_str 0x0002b89d 0x7ee src/ASF/common/services/usb/udc/udc.o
.debug_str 0x0002b8b4 0x7e5 src/ASF/common/services/usb/udc/udc.o
0x291fa (size before relaxing)
.debug_str 0x0002c08b 0x355c src/ASF/xmega/drivers/usb/usb_device.o
.debug_str 0x0002c099 0x355c src/ASF/xmega/drivers/usb/usb_device.o
0x2b810 (size before relaxing)
.debug_loc 0x00000000 0x2105

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -16,6 +16,7 @@ c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/..
Allocating common symbols
Common symbol size file
debug_counter 0x4 src/main.o
dacBuf_CH1 0x200 src/main.o
udd_g_ctrlreq 0x10 src/main.o
sleepmgr_locks 0x6 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
@ -400,7 +401,7 @@ END GROUP
.rela.plt
*(.rela.plt)
.text 0x00000000 0x252e
.text 0x00000000 0x2512
*(.vectors)
.vectors 0x00000000 0x1fc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/XMEGAA_DFP/1.0.39/gcc/dev/atxmega32a4u/avrxmega2/crtatxmega32a4u.o
0x00000000 __vector_default
@ -598,249 +599,249 @@ END GROUP
0x00000286 0x20 src/main.o
0x00000286 iso_callback
.text.startup.main
0x000002a6 0x44 src/main.o
0x000002a6 0x28 src/main.o
0x000002a6 main
.text.main_suspend_action
0x000002ea 0x2 src/main.o
0x000002ea main_suspend_action
0x000002ce 0x2 src/main.o
0x000002ce main_suspend_action
.text.main_resume_action
0x000002ec 0x2 src/main.o
0x000002ec main_resume_action
0x000002d0 0x2 src/main.o
0x000002d0 main_resume_action
.text.main_sof_action
0x000002ee 0x42 src/main.o
0x000002ee main_sof_action
0x000002d2 0x42 src/main.o
0x000002d2 main_sof_action
.text.main_vendor_enable
0x00000330 0x18 src/main.o
0x00000330 main_vendor_enable
0x00000314 0x18 src/main.o
0x00000314 main_vendor_enable
.text.main_vendor_disable
0x00000348 0x6 src/main.o
0x00000348 main_vendor_disable
0x0000032c 0x6 src/main.o
0x0000032c main_vendor_disable
.text.main_setup_out_received
0x0000034e 0x4 src/main.o
0x0000034e main_setup_out_received
0x00000332 0x4 src/main.o
0x00000332 main_setup_out_received
.text.main_setup_in_received
0x00000352 0x4 src/main.o
0x00000352 main_setup_in_received
0x00000336 0x4 src/main.o
0x00000336 main_setup_in_received
.text.tiny_adc_ch0setup
0x00000356 0x2c src/tiny_adc.o
0x00000356 tiny_adc_ch0setup
0x0000033a 0x2c src/tiny_adc.o
0x0000033a tiny_adc_ch0setup
.text.tiny_adc_ch1setup
0x00000382 0x14 src/tiny_adc.o
0x00000382 tiny_adc_ch1setup
0x00000366 0x14 src/tiny_adc.o
0x00000366 tiny_adc_ch1setup
.text.tiny_adc_pid_setup
0x00000396 0x14 src/tiny_adc.o
0x00000396 tiny_adc_pid_setup
0x0000037a 0x14 src/tiny_adc.o
0x0000037a tiny_adc_pid_setup
.text.ReadCalibrationByte
0x000003aa 0x12 src/tiny_adc.o
0x000003aa ReadCalibrationByte
0x0000038e 0x12 src/tiny_adc.o
0x0000038e ReadCalibrationByte
.text.tiny_adc_setup
0x000003bc 0x5e src/tiny_adc.o
0x000003bc tiny_adc_setup
0x000003a0 0x5e src/tiny_adc.o
0x000003a0 tiny_adc_setup
.text.tiny_dac_setup
0x0000041a 0x48 src/tiny_dac.o
0x0000041a tiny_dac_setup
0x000003fe 0x48 src/tiny_dac.o
0x000003fe tiny_dac_setup
.text.tiny_dma_setup
0x00000462 0x12 src/tiny_dma.o
0x00000462 tiny_dma_setup
0x00000446 0x12 src/tiny_dma.o
0x00000446 tiny_dma_setup
.text.tiny_dma_flush
0x00000474 0x24 src/tiny_dma.o
0x00000474 tiny_dma_flush
0x00000458 0x24 src/tiny_dma.o
0x00000458 tiny_dma_flush
.text.tiny_dma_set_mode_0
0x00000498 0x90 src/tiny_dma.o
0x00000498 tiny_dma_set_mode_0
0x0000047c 0x90 src/tiny_dma.o
0x0000047c tiny_dma_set_mode_0
.text.tiny_dma_loop_mode_0
0x00000528 0x60 src/tiny_dma.o
0x00000528 tiny_dma_loop_mode_0
0x0000050c 0x60 src/tiny_dma.o
0x0000050c tiny_dma_loop_mode_0
.text.tiny_dma_set_mode_1
0x00000588 0x9c src/tiny_dma.o
0x00000588 tiny_dma_set_mode_1
0x0000056c 0x9c src/tiny_dma.o
0x0000056c tiny_dma_set_mode_1
.text.tiny_dma_loop_mode_1
0x00000624 0xae src/tiny_dma.o
0x00000624 tiny_dma_loop_mode_1
0x00000608 0xae src/tiny_dma.o
0x00000608 tiny_dma_loop_mode_1
.text.tiny_dma_set_mode_2
0x000006d2 0x94 src/tiny_dma.o
0x000006d2 tiny_dma_set_mode_2
0x000006b6 0x94 src/tiny_dma.o
0x000006b6 tiny_dma_set_mode_2
.text.tiny_dma_loop_mode_2
0x00000766 0xb0 src/tiny_dma.o
0x00000766 tiny_dma_loop_mode_2
0x0000074a 0xb0 src/tiny_dma.o
0x0000074a tiny_dma_loop_mode_2
.text.tiny_dma_set_mode_3
0x00000816 0xcc src/tiny_dma.o
0x00000816 tiny_dma_set_mode_3
0x000007fa 0xcc src/tiny_dma.o
0x000007fa tiny_dma_set_mode_3
.text.tiny_dma_loop_mode_3
0x000008e2 0x60 src/tiny_dma.o
0x000008e2 tiny_dma_loop_mode_3
0x000008c6 0x60 src/tiny_dma.o
0x000008c6 tiny_dma_loop_mode_3
.text.tiny_dma_set_mode_4
0x00000942 0x7c src/tiny_dma.o
0x00000942 tiny_dma_set_mode_4
0x00000926 0x7c src/tiny_dma.o
0x00000926 tiny_dma_set_mode_4
.text.tiny_dma_loop_mode_4
0x000009be 0xca src/tiny_dma.o
0x000009be tiny_dma_loop_mode_4
0x000009a2 0xca src/tiny_dma.o
0x000009a2 tiny_dma_loop_mode_4
.text.tiny_dma_set_mode_5
0x00000a88 0x90 src/tiny_dma.o
0x00000a88 tiny_dma_set_mode_5
0x00000a6c 0x90 src/tiny_dma.o
0x00000a6c tiny_dma_set_mode_5
.text.tiny_dma_set_mode_6
0x00000b18 0x92 src/tiny_dma.o
0x00000b18 tiny_dma_set_mode_6
0x00000afc 0x92 src/tiny_dma.o
0x00000afc tiny_dma_set_mode_6
.text.tiny_dma_loop_mode_6
0x00000baa 0x5c src/tiny_dma.o
0x00000baa tiny_dma_loop_mode_6
0x00000b8e 0x5c src/tiny_dma.o
0x00000b8e tiny_dma_loop_mode_6
.text.tiny_dma_set_mode_7
0x00000c06 0x92 src/tiny_dma.o
0x00000c06 tiny_dma_set_mode_7
0x00000bea 0x92 src/tiny_dma.o
0x00000bea tiny_dma_set_mode_7
.text.tiny_dma_loop_mode_7
0x00000c98 0x5c src/tiny_dma.o
0x00000c98 tiny_dma_loop_mode_7
0x00000c7c 0x5c src/tiny_dma.o
0x00000c7c tiny_dma_loop_mode_7
.text.tiny_timer_setup
0x00000cf4 0x76 src/tiny_timer.o
0x00000cf4 tiny_timer_setup
0x00000cd8 0x76 src/tiny_timer.o
0x00000cd8 tiny_timer_setup
.text.__vector_83
0x00000d6a 0xc0 src/tiny_timer.o
0x00000d6a __vector_83
0x00000d4e 0xc0 src/tiny_timer.o
0x00000d4e __vector_83
.text.tiny_uart_setup
0x00000e2a 0x34 src/tiny_uart.o
0x00000e2a tiny_uart_setup
0x00000e0e 0x34 src/tiny_uart.o
0x00000e0e tiny_uart_setup
.text.tiny_spi_setup
0x00000e5e 0x1e src/tiny_uart.o
0x00000e5e tiny_spi_setup
0x00000e42 0x1e src/tiny_uart.o
0x00000e42 tiny_spi_setup
.text.__vector_24
0x00000e7c 0x16 src/tiny_uart.o
0x00000e7c __vector_24
0x00000e60 0x16 src/tiny_uart.o
0x00000e60 __vector_24
.text.osc_enable_autocalibration.constprop.4
0x00000e92 0x38 src/ASF/common/services/clock/xmega/sysclk.o
0x00000e76 0x38 src/ASF/common/services/clock/xmega/sysclk.o
.text.sysclk_init
0x00000eca 0xa6 src/ASF/common/services/clock/xmega/sysclk.o
0x00000eca sysclk_init
0x00000eae 0xa6 src/ASF/common/services/clock/xmega/sysclk.o
0x00000eae sysclk_init
.text.sysclk_enable_module
0x00000f70 0x18 src/ASF/common/services/clock/xmega/sysclk.o
0x00000f70 sysclk_enable_module
0x00000f54 0x18 src/ASF/common/services/clock/xmega/sysclk.o
0x00000f54 sysclk_enable_module
.text.sysclk_enable_usb
0x00000f88 0x40 src/ASF/common/services/clock/xmega/sysclk.o
0x00000f88 sysclk_enable_usb
0x00000f6c 0x40 src/ASF/common/services/clock/xmega/sysclk.o
0x00000f6c sysclk_enable_usb
.text.udi_vendor_getsetting
0x00000fc8 0x6 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00000fc8 udi_vendor_getsetting
0x00000fac 0x6 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00000fac udi_vendor_getsetting
.text.udi_vendor_disable
0x00000fce 0xc src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00000fce udi_vendor_disable
0x00000fb2 0xc src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00000fb2 udi_vendor_disable
.text.udi_vendor_enable
0x00000fda 0x14 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00000fda udi_vendor_enable
0x00000fbe 0x14 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00000fbe udi_vendor_enable
.text.udi_vendor_setup
0x00000fee 0x38 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00000fee udi_vendor_setup
0x00000fd2 0x38 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00000fd2 udi_vendor_setup
.text.udi_vendor_iso_in_run
0x00001026 0x16 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x00001026 udi_vendor_iso_in_run
0x0000100a 0x16 src/ASF/common/services/usb/class/vendor/device/udi_vendor.o
0x0000100a udi_vendor_iso_in_run
.text.udc_valid_address
0x0000103c 0x8 src/ASF/common/services/usb/udc/udc.o
0x00001020 0x8 src/ASF/common/services/usb/udc/udc.o
.text.udc_update_iface_desc
0x00001044 0x66 src/ASF/common/services/usb/udc/udc.o
0x00001028 0x66 src/ASF/common/services/usb/udc/udc.o
.text.udc_next_desc_in_iface.constprop.3
0x000010aa 0x40 src/ASF/common/services/usb/udc/udc.o
0x0000108e 0x40 src/ASF/common/services/usb/udc/udc.o
.text.udc_iface_enable
0x000010ea 0x66 src/ASF/common/services/usb/udc/udc.o
0x000010ce 0x66 src/ASF/common/services/usb/udc/udc.o
.text.udc_iface_disable
0x00001150 0x7e src/ASF/common/services/usb/udc/udc.o
0x00001134 0x7e src/ASF/common/services/usb/udc/udc.o
.text.udc_get_interface_desc
0x000011ce 0xa src/ASF/common/services/usb/udc/udc.o
0x000011ce udc_get_interface_desc
0x000011b2 0xa src/ASF/common/services/usb/udc/udc.o
0x000011b2 udc_get_interface_desc
.text.udc_start
0x000011d8 0x2 src/ASF/common/services/usb/udc/udc.o
0x000011d8 udc_start
0x000011bc 0x2 src/ASF/common/services/usb/udc/udc.o
0x000011bc udc_start
.text.udc_reset
0x000011da 0x38 src/ASF/common/services/usb/udc/udc.o
0x000011da udc_reset
0x000011be 0x38 src/ASF/common/services/usb/udc/udc.o
0x000011be udc_reset
.text.udc_sof_notify
0x00001212 0x4a src/ASF/common/services/usb/udc/udc.o
0x00001212 udc_sof_notify
0x000011f6 0x4a src/ASF/common/services/usb/udc/udc.o
0x000011f6 udc_sof_notify
.text.udc_process_setup
0x0000125c 0x668 src/ASF/common/services/usb/udc/udc.o
0x0000125c udc_process_setup
0x00001240 0x668 src/ASF/common/services/usb/udc/udc.o
0x00001240 udc_process_setup
.text.ccp_write_io
0x000018c4 0xc src/ASF/xmega/drivers/cpu/ccp.o
0x000018c4 ccp_write_io
0x000018a8 0xc src/ASF/xmega/drivers/cpu/ccp.o
0x000018a8 ccp_write_io
.text.nvm_read_byte
0x000018d0 0x14 src/ASF/xmega/drivers/nvm/nvm_asm.o
0x000018d0 nvm_read_byte
0x000018b4 0x14 src/ASF/xmega/drivers/nvm/nvm_asm.o
0x000018b4 nvm_read_byte
.text.sleepmgr_lock_mode
0x000018e4 0x1e src/ASF/xmega/drivers/usb/usb_device.o
0x000018c8 0x1e src/ASF/xmega/drivers/usb/usb_device.o
.text.sleepmgr_unlock_mode
0x00001902 0x1e src/ASF/xmega/drivers/usb/usb_device.o
0x000018e6 0x1e src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_sleep_mode
0x00001920 0x26 src/ASF/xmega/drivers/usb/usb_device.o
0x00001904 0x26 src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ep_get_ctrl
0x00001946 0x2e src/ASF/xmega/drivers/usb/usb_device.o
0x0000192a 0x2e src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_init
0x00001974 0x4e src/ASF/xmega/drivers/usb/usb_device.o
0x00001958 0x4e src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_stall_data
0x000019c2 0x1c src/ASF/xmega/drivers/usb/usb_device.o
0x000019a6 0x1c src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_send_zlp_in
0x000019de 0x1c src/ASF/xmega/drivers/usb/usb_device.o
0x000019c2 0x1c src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_endofrequest
0x000019fa 0x10 src/ASF/xmega/drivers/usb/usb_device.o
0x000019de 0x10 src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ep_get_job
0x00001a0a 0x34 src/ASF/xmega/drivers/usb/usb_device.o
0x000019ee 0x34 src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ep_trans_complet
0x00001a3e 0x1f2 src/ASF/xmega/drivers/usb/usb_device.o
0x00001a22 0x1f2 src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_in_sent
0x00001c30 0xdc src/ASF/xmega/drivers/usb/usb_device.o
0x00001c14 0xdc src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_ctrl_interrupt_tc_setup
0x00001d0c 0xee src/ASF/xmega/drivers/usb/usb_device.o
0x00001cf0 0xee src/ASF/xmega/drivers/usb/usb_device.o
.text.udd_attach
0x00001dfa 0x46 src/ASF/xmega/drivers/usb/usb_device.o
0x00001dfa udd_attach
0x00001dde 0x46 src/ASF/xmega/drivers/usb/usb_device.o
0x00001dde udd_attach
.text.udd_enable
0x00001e40 0xf0 src/ASF/xmega/drivers/usb/usb_device.o
0x00001e40 udd_enable
0x00001e24 0xf0 src/ASF/xmega/drivers/usb/usb_device.o
0x00001e24 udd_enable
.text.udd_set_address
0x00001f30 0x6 src/ASF/xmega/drivers/usb/usb_device.o
0x00001f30 udd_set_address
0x00001f14 0x6 src/ASF/xmega/drivers/usb/usb_device.o
0x00001f14 udd_set_address
.text.udd_getaddress
0x00001f36 0x6 src/ASF/xmega/drivers/usb/usb_device.o
0x00001f36 udd_getaddress
0x00001f1a 0x6 src/ASF/xmega/drivers/usb/usb_device.o
0x00001f1a udd_getaddress
.text.udd_set_setup_payload
0x00001f3c 0xe src/ASF/xmega/drivers/usb/usb_device.o
0x00001f3c udd_set_setup_payload
0x00001f20 0xe src/ASF/xmega/drivers/usb/usb_device.o
0x00001f20 udd_set_setup_payload
.text.udd_ep_alloc
0x00001f4a 0xa2 src/ASF/xmega/drivers/usb/usb_device.o
0x00001f4a udd_ep_alloc
0x00001f2e 0xa2 src/ASF/xmega/drivers/usb/usb_device.o
0x00001f2e udd_ep_alloc
.text.udd_ep_is_halted
0x00001fec 0xe src/ASF/xmega/drivers/usb/usb_device.o
0x00001fec udd_ep_is_halted
0x00001fd0 0xe src/ASF/xmega/drivers/usb/usb_device.o
0x00001fd0 udd_ep_is_halted
.text.udd_ep_clear_halt
0x00001ffa 0x32 src/ASF/xmega/drivers/usb/usb_device.o
0x00001ffa udd_ep_clear_halt
0x00001fde 0x32 src/ASF/xmega/drivers/usb/usb_device.o
0x00001fde udd_ep_clear_halt
.text.udd_ep_run
0x0000202c 0x118 src/ASF/xmega/drivers/usb/usb_device.o
0x0000202c udd_ep_run
0x00002010 0x118 src/ASF/xmega/drivers/usb/usb_device.o
0x00002010 udd_ep_run
.text.udd_ep_abort
0x00002144 0x60 src/ASF/xmega/drivers/usb/usb_device.o
0x00002144 udd_ep_abort
0x00002128 0x60 src/ASF/xmega/drivers/usb/usb_device.o
0x00002128 udd_ep_abort
.text.udd_ep_free
0x000021a4 0x12 src/ASF/xmega/drivers/usb/usb_device.o
0x000021a4 udd_ep_free
0x00002188 0x12 src/ASF/xmega/drivers/usb/usb_device.o
0x00002188 udd_ep_free
.text.udd_ep_set_halt
0x000021b6 0x20 src/ASF/xmega/drivers/usb/usb_device.o
0x000021b6 udd_ep_set_halt
0x0000219a 0x20 src/ASF/xmega/drivers/usb/usb_device.o
0x0000219a udd_ep_set_halt
.text.__vector_125
0x000021d6 0x16a src/ASF/xmega/drivers/usb/usb_device.o
0x000021d6 __vector_125
0x000021ba 0x16a src/ASF/xmega/drivers/usb/usb_device.o
0x000021ba __vector_125
.text.__vector_126
0x00002340 0x1a4 src/ASF/xmega/drivers/usb/usb_device.o
0x00002340 __vector_126
0x00002324 0x1a4 src/ASF/xmega/drivers/usb/usb_device.o
0x00002324 __vector_126
.text.libgcc.div
0x000024e4 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_udivmodhi4.o)
0x000024e4 __udivmodhi4
.text.libgcc 0x0000250c 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_tablejump2.o)
0x0000250c __tablejump2__
0x000024c8 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_udivmodhi4.o)
0x000024c8 __udivmodhi4
.text.libgcc 0x000024f0 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_tablejump2.o)
0x000024f0 __tablejump2__
.text.avr-libc
0x00002518 0x12 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avrxmega2\libc.a(memcpy.o)
0x00002518 memcpy
0x0000252a . = ALIGN (0x2)
0x000024fc 0x12 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avrxmega2\libc.a(memcpy.o)
0x000024fc memcpy
0x0000250e . = ALIGN (0x2)
*(.fini9)
.fini9 0x0000252a 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_exit.o)
0x0000252a _exit
0x0000252a exit
.fini9 0x0000250e 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_exit.o)
0x0000250e _exit
0x0000250e exit
*(.fini9)
*(.fini8)
*(.fini8)
@ -859,11 +860,11 @@ END GROUP
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x0000252a 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_exit.o)
.fini0 0x0000250e 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.9.2/avrxmega2\libgcc.a(_exit.o)
*(.fini0)
0x0000252e _etext = .
0x00002512 _etext = .
.data 0x00802000 0xc0 load address 0x0000252e
.data 0x00802000 0xc0 load address 0x00002512
0x00802000 PROVIDE (__data_start, .)
*(.data)
*(.data*)
@ -914,7 +915,7 @@ END GROUP
0x008020c0 _edata = .
0x008020c0 PROVIDE (__data_end, .)
.bss 0x008020c0 0xb98
.bss 0x008020c0 0xb9c
0x008020c0 PROVIDE (__bss_start, .)
*(.bss)
*(.bss*)
@ -963,22 +964,23 @@ END GROUP
0x00802264 0x1 src/ASF/xmega/drivers/usb/usb_device.o
*(COMMON)
*fill* 0x00802265 0x1
COMMON 0x00802266 0x9ec src/main.o
0x00802266 dacBuf_CH1
0x00802466 udd_g_ctrlreq
0x00802476 dacBuf_CH2
0x00802676 isoBuf
COMMON 0x00802c52 0x6 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
0x00802c52 sleepmgr_locks
0x00802c58 PROVIDE (__bss_end, .)
0x0000252e __data_load_start = LOADADDR (.data)
0x000025ee __data_load_end = (__data_load_start + SIZEOF (.data))
COMMON 0x00802266 0x9f0 src/main.o
0x00802266 debug_counter
0x0080226a dacBuf_CH1
0x0080246a udd_g_ctrlreq
0x0080247a dacBuf_CH2
0x0080267a isoBuf
COMMON 0x00802c56 0x6 src/ASF/common/services/sleepmgr/xmega/sleepmgr.o
0x00802c56 sleepmgr_locks
0x00802c5c PROVIDE (__bss_end, .)
0x00002512 __data_load_start = LOADADDR (.data)
0x000025d2 __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x00802c58 0x0
.noinit 0x00802c5c 0x0
[!provide] PROVIDE (__noinit_start, .)
*(.noinit*)
[!provide] PROVIDE (__noinit_end, .)
0x00802c58 _end = .
0x00802c5c _end = .
[!provide] PROVIDE (__heap_start, .)
.eeprom 0x00810000 0x0

File diff suppressed because it is too large Load Diff

View File

@ -31,6 +31,8 @@ volatile char PSU_target = 0;
volatile unsigned char test_byte = 123;
uint32_t debug_counter;
int main(void){
irq_initialize_vectors();
cpu_irq_enable();
@ -51,20 +53,11 @@ int main(void){
//asm("nop");
while (true) {
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
debug_counter++;
if(debug_counter > 100000000){
debug_counter = 0;
}
//test_byte = ADCA.CH1.RESH;
//DO NOTHING!
}
@ -139,6 +132,7 @@ bool main_setup_in_received(void)
void iso_callback(udd_ep_status_t status, iram_size_t nb_transfered, udd_ep_id_t ep){
udi_vendor_iso_in_run((uint8_t *)&isoBuf[!b1_state * PACKET_SIZE], PACKET_SIZE, iso_callback);
//if((int8_t) USB.FIFORP > -16) udi_vendor_iso_in_run((uint8_t *)&isoBuf[0], PACKET_SIZE, iso_callback);
return;
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.1.0, 2016-09-28T09:38:08. -->
<!-- Written by QtCreator 4.1.0, 2016-10-05T09:18:57. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@ -2,8 +2,8 @@
//USB iso stuff
int MAX_TRANSFER_SIZE = 1023;
int MAX_PENDING_TRANSFERS = 1048576;
int MAX_PENDING_IO = 64;
int MAX_PENDING_TRANSFERS = 512;
int MAX_PENDING_IO = 16;
//Plot settings
int GRAPH_SAMPLES = 1024;

View File

@ -6,6 +6,7 @@ winUsbDriver::winUsbDriver(QWidget *parent) : QLabel(parent)
this->hide();
//Load stack so that reset signal can be sent
firstConnect = usbInit(0x03eb, 0xa000);
if(firstConnect){
setDeviceMode(deviceMode);
usbSendControl(0x40, 0xa7, 0, 0, 0, NULL);
@ -344,7 +345,7 @@ void winUsbDriver::setBufferPtr(bufferControl *newPtr){
void winUsbDriver::setDeviceMode(int mode){
int oldMode = deviceMode;
deviceMode = mode;
usbSendControl(0x40, 0xa5, mode, gainMask, 0, NULL);
usbSendControl(0x40, 0xa5, (mode == 5 ? 0:mode), gainMask, 0, NULL);
if (fGenPtr_CH1!=NULL) setFunctionGen(0, fGenPtr_CH1);
if (fGenPtr_CH2!=NULL) setFunctionGen(1, fGenPtr_CH2);
@ -414,7 +415,7 @@ void winUsbDriver::psuTick(){
} else dutyTemp = dutyPsu;
}
if ((dutyTemp>113) || (dutyTemp<21)){
if ((dutyTemp>106) || (dutyTemp<21)){
qDebug("PSU DUTY CYCLE TOO LARGE (could underflow on SOF)!!! ABORTING!!!");
}
usbSendControl(0x40, 0xa3, dutyTemp, 0, 0, NULL);
@ -435,16 +436,6 @@ void winUsbDriver::setGain(double newGain){
void winUsbDriver::reinitialise(bool forceAttempt){
/*if (!firstConnect){
firstConnect = usbInit(0x03eb, 0xa000);
setDeviceMode(deviceMode);
usbIsoInit();
//Reset!!
usbSendControl(0x40, 0xa7, 0, 0, 0, NULL);
//Stack will reinitialise TIMER_PERIOD seconds later, after first failed iso request
return;
}*/
if (!forceAttempt){
if(recoveryInProcess == true) {
//qDebug() << "Cancelling reinitialise()";
@ -452,12 +443,6 @@ void winUsbDriver::reinitialise(bool forceAttempt){
}
}
//qDebug() << "reinitialise() entered";
//if(forceAttempt) qFatal("Forcing attempt");
disableWindow(0);
recoveryInProcess = true;
unsigned char success;
@ -474,7 +459,7 @@ void winUsbDriver::reinitialise(bool forceAttempt){
StmK_Free(stm_handle);
stm_handle = NULL;
}
UsbK_ResetDevice(handle);
//UsbK_ResetDevice(handle);
unsigned char initSuccess = usbInit(0x03eb, 0xa000);
//qDebug() << "usbInit(0x03eb, 0xa000) returned" << initSuccess;

View File

@ -0,0 +1,497 @@
#include "winusbdriver.h"
winUsbDriver::winUsbDriver(QWidget *parent) : QLabel(parent)
{
qDebug() << "Making USB Driver invisible!!";
this->hide();
//Load stack so that reset signal can be sent
firstConnect = usbInit(0x03eb, 0xa000);
if(firstConnect){
setDeviceMode(deviceMode);
usbSendControl(0x40, 0xa7, 0, 0, 0, NULL);
//Stack will reinitialise TIMER_PERIOD seconds later, after first failed iso request
}
psuTimer = new QTimer();
psuTimer->setTimerType(Qt::PreciseTimer);
psuTimer->start(PSU_PERIOD);
connect(psuTimer, SIGNAL(timeout()), this, SLOT(psuTick()));
}
unsigned char winUsbDriver::usbInit(ULONG VIDin, ULONG PIDin){
unsigned char success;
//qDebug() << "usbInit() entered";
if (!LstK_Init(&deviceList, (KLST_FLAG) 0)) {
qDebug("Error initializing device list");
return 0;
} //else qDebug() << "Device List initialised!";
LstK_Count(deviceList, &deviceCount);
if (!deviceCount) {
qDebug("Device list empty");
LstK_Free(deviceList); // If LstK_Init returns TRUE, the list must be freed.
return 0;
} //else qDebug() << "Device Count initialised!";
//qDebug("Looking for device VID = %04X, PID = %04X\n", VIDin, PIDin);
LstK_FindByVidPid(deviceList, VIDin, PIDin, &deviceInfo);
LstK_Free(deviceList);
if (deviceInfo){
/*qDebug("Using %04X:%04X (%s): %s - %s\n",
deviceInfo->Common.Vid,
deviceInfo->Common.Pid,
deviceInfo->Common.InstanceID,
deviceInfo->DeviceDesc,
deviceInfo->Mfg);
Causes exceptions in debug mode!!!!*/
}
else {
qDebug("Could not find device VID = %04X, PID = %04X", VIDin, PIDin);
return 0;
}
success = UsbK_Init(&handle, deviceInfo);
if (!success){
ec = GetLastError();
qDebug("UsbK_Init failed. ErrorCode: %08Xh", ec);
} else qDebug("Device opened successfully!");
return success;
}
void winUsbDriver::usbSendControl(int RequestType, int Request, int Value, int Index, int Length, unsigned char *LDATA){
//////////////////////////////////////////////////////////////////////////////////////////
//IF YOU'RE SEEING AN ERROR, CHECK THAT REQUESTTYPE AND REQUEST ARE FORMATTED AS HEX
//////////////////////////////////////////////////////////////////////////////////////////
WINUSB_SETUP_PACKET setupPacket;
unsigned char controlSuccess;
UINT bytesTransferred = 0;
unsigned char *controlBuffer;
if (handle==NULL){
qDebug("Null handle error in usbSendControl");
return;
}
setupPacket.RequestType = (UCHAR) RequestType;
setupPacket.Request = (UCHAR) Request;
setupPacket.Value = (USHORT) Value;
setupPacket.Index = (USHORT) Index;
setupPacket.Length = (USHORT) Length;
//qDebug("RequestType = %x, Request = %x, Value = %u, Index = %u, Length = %u", setupPacket.RequestType, setupPacket.Request, setupPacket.Value, setupPacket.Index, setupPacket.Length);
if (LDATA==NULL){
controlBuffer = (unsigned char *) malloc(256);
}
else controlBuffer = LDATA;
//qDebug() << controlBuffer;
//qDebug() << handle;
//qDebug("SENDING CONTROL PACKET\n");
controlSuccess = UsbK_ControlTransfer(handle, setupPacket, controlBuffer, setupPacket.Length, &bytesTransferred, NULL);
if (controlSuccess) {
qDebug("%d BYTES TRANSFERRED", bytesTransferred);
}
else qDebug("usbSendControl failed");
if(LDATA == NULL){
free(controlBuffer);
}
}
void winUsbDriver::setPsu(double voltage){
qDebug() << "New voltage =" << voltage;
currentPsuVoltage = voltage;
//if(deviceMode > 6) qFatal("setPsu is not configured for mode 7!!!");
double vinp = voltage/11;
double vinn = 0;
//double vref = 1.65;
double gainPsu = 1;
dutyPsu = (int) ((vinp - vinn)/vref * gainPsu * PSU_ADC_TOP);
qDebug() << "Going to send value " << dutyPsu;
}
void winUsbDriver::setFunctionGen(int channel, functionGenControl *fGenControl){
////////////////////////////
////NO RESIZING (YET)!!!////
////////////////////////////
//////////////////////////////////////
//// CH1 is AUX!! CH2 is "MAIN"!!////
//////////////////////////////////////
int length, maxLength, numDivides, maxDivides;
double freq, amplitude, offset;
unsigned char *samples;
//For recalling on crash.
fGenChannel = channel;
if (channel == 0) fGenPtr_CH1 = fGenControl;
else fGenPtr_CH2 = fGenControl;
//Reading in data
if (channel == 0){
length = fGenControl->length_CH1;
freq = fGenControl->freq_CH1;
amplitude = fGenControl->amplitude_CH1;
offset = fGenControl->offset_CH1;
samples = (unsigned char *) malloc(length);
memcpy(samples, fGenControl->samples_CH1, (unsigned int) length);
numDivides = fGenControl->divisibility_CH1;
}
else if(channel == 1){
length = fGenControl->length_CH2;
freq = fGenControl->freq_CH2;
amplitude = fGenControl->amplitude_CH2;
offset = fGenControl->offset_CH2;
samples = (unsigned char *) malloc(length);
memcpy(samples, fGenControl->samples_CH2, (unsigned int) length);
numDivides = fGenControl->divisibility_CH2;
}
//Triple mode
if ((amplitude+offset) > FGEN_LIMIT){
amplitude = amplitude / 3;
offset = offset / 3;
fGenTriple |= ((unsigned char) !channel + 1);
}
else fGenTriple &= ((unsigned char) (254 - !channel));
//qDebug() << "fGenTriple = " << fGenTriple << "fGenControl = " << fGenControl << "length = " << length << "freq = " << freq << "amplitude = " << amplitude << "offset = " << offset << "samples = " << samples;
//Waveform scaling in V
double tempDouble;
amplitude = (amplitude * 255) / FGEN_LIMIT;
offset = (offset * 255) / FGEN_LIMIT;
if (offset<FGEN_OFFSET){
if (amplitude>5)
amplitude -= FGEN_OFFSET;
else
amplitude = 0;
offset = FGEN_OFFSET;
}
#ifdef INVERT_TRIPLE
unsigned char fGenTemp = 0;
fGenTemp |= (fGenTriple & 0x01)<<1;
fGenTemp |= (fGenTriple & 0x02)>>1;
usbSendControl(0x40, 0xa4, fGenTemp, 0, 0, NULL);
#else
usbSendControl(0x40, 0xa4, fGenTriple, 0, 0, NULL);
#endif
//Applying amplitude and offset to all samples.
for (int i=0;i<length;i++){
tempDouble = (double) samples[i];
tempDouble *= amplitude;
tempDouble /= 255;
tempDouble += offset;
samples[i] = (unsigned char) tempDouble;
}
//Need to increase size of wave if its freq too high, or too low!
maxDivides = numDivides;
bool loop_entered = false;
unsigned char *tempSamples = (unsigned char *) malloc(0);
while(length * freq > DAC_SPS){
loop_entered = true;
numDivides--;
if (numDivides==0){
qDebug("numDivides = 0 - in T-stretching of winUsbDriver:: setFunctionGen");
}
int shiftTemp = (maxDivides - numDivides);
length = length >> 1;
free(tempSamples);
tempSamples = (unsigned char *) malloc(length);
for (int i=0; i<length;i++){
tempSamples[i] = samples[i<<shiftTemp];
}
}
if(loop_entered){
samples = tempSamples;
}
//Scaling in t here:
// Something something maxLength something
//Timer Setup
int validClockDivs[7] = {1, 2, 4, 8, 64, 256, 1024};
int clkSetting;
for(clkSetting = 0; clkSetting<7; clkSetting++){
if ( (CLOCK_FREQ / (length * validClockDivs[clkSetting] * freq)) < 65535 )
break;
}
int timerPeriod = CLOCK_FREQ / (length * freq * validClockDivs[clkSetting]);
clkSetting++; // Change from [0:n] to [1:n]
if(deviceMode == 5){
qDebug("DEVICE IS IN MODE 5");
}
//qDebug() << "First three samples:" << samples[0] << samples[1] << samples[2];
if(channel){
usbSendControl(0x40, 0xa1, timerPeriod, clkSetting, length, samples);
}
else usbSendControl(0x40, 0xa2, timerPeriod, clkSetting, length, samples);
free(tempSamples);
return;
}
void winUsbDriver::xmegaBreak(void){
usbSendControl(0x40, 0xa0, 0, 0, 0, NULL);
}
void winUsbDriver::newDig(int digState){
qDebug() << "newDig";
digitalPinState = digState;
usbSendControl(0x40, 0xa6, digState, 0, 0, NULL);
}
unsigned char winUsbDriver::usbIsoInit(void){
unsigned char success;
unsigned int transferred;
DWORD errorCode = ERROR_SUCCESS;
success = StmK_Init(
&stm_handle,
handle,
pipeID,
MAX_TRANSFER_SIZE,
MAX_PENDING_TRANSFERS,
MAX_PENDING_IO,
NULL,
KSTM_FLAG_NONE);
if (!success){
errorCode = GetLastError();
qDebug("StmK_Init failed. ErrorCode: %08Xh\n", errorCode);
return 0;
}
success = StmK_Start(stm_handle);
if (!success){
errorCode = GetLastError();
qDebug("StmK_Start failed. ErrorCode: %08Xh\n", errorCode);
return 0;
}
qDebug("[Start Stream] successful!\n");
return 1;
}
char *winUsbDriver::isoRead(int numSamples){
unsigned char *returnBuffer;
unsigned char success;
DWORD errorCode = ERROR_SUCCESS;
returnBuffer = (unsigned char *) malloc(numSamples + 8); //8-byte header contains (unsigned long) length
success = StmK_Read(stm_handle, returnBuffer+8, 0, numSamples, (PUINT) returnBuffer);
//qDebug("%d bytes copied, out of a possible %d\n", *((PUINT)returnBuffer), numSamples);
if (!success) {
errorCode = GetLastError();
qDebug("StmkK_Read failed. ErrorCode: %08Xh\n", errorCode);
reinitialise(0);
free(returnBuffer);
return (char*) malloc(numSamples + 8);
//printf("No more items = %08Xh\n", ERROR_NO_MORE_ITEMS);
}
return (char*) returnBuffer;
}
winUsbDriver::~winUsbDriver(void){
qDebug() << "\n\nwinUsbDriver destructor ran!";
unsigned char success;
DWORD errorCode = ERROR_SUCCESS;
success = StmK_Stop(stm_handle, 0);
if (!success)
{
errorCode = GetLastError();
qDebug("StmK_Stop failed. ErrorCode: %08Xh\n", errorCode);
}
qDebug("[Stop Stream] successful!\n");
success = StmK_Free(stm_handle);
if (!success)
{
errorCode = GetLastError();
qDebug("StmK_Free failed. ErrorCode: %08Xh\n", errorCode);
}
UsbK_Free(handle);
}
void winUsbDriver::setBufferPtr(bufferControl *newPtr){
bufferPtr = newPtr;
}
void winUsbDriver::setDeviceMode(int mode){
int oldMode = deviceMode;
deviceMode = mode;
usbSendControl(0x40, 0xa5, (mode == 5 ? 0 : mode), gainMask, 0, NULL);
if (fGenPtr_CH1!=NULL) setFunctionGen(0, fGenPtr_CH1);
if (fGenPtr_CH2!=NULL) setFunctionGen(1, fGenPtr_CH2);
//switch on new deviceMode!!
switch(deviceMode){
case 0:
if(oldMode > 2) sendClearBuffer(1,0,0);
setVisible_CH2(0);
checkXY(0);
break;
case 1:
if(oldMode > 2) sendClearBuffer(1,0,0);
sendClearBuffer(0,1,0);
setVisible_CH2(1);
checkXY(0);
break;
case 2:
if(oldMode > 2) sendClearBuffer(1,0,0);
sendClearBuffer(0,1,0);
setVisible_CH2(1);
break;
case 3:
if(oldMode != 4) sendClearBuffer(1,0,0);
sendClearBuffer(0,1,0);
setVisible_CH2(0);
checkXY(0);
break;
case 4:
if(oldMode != 3) sendClearBuffer(1,0,0);
sendClearBuffer(0,1,0);
setVisible_CH2(1);
checkXY(0);
break;
case 5:
setVisible_CH2(0);
checkXY(0);
break;
case 6:
sendClearBuffer(0,0,1);
setVisible_CH2(0);
checkXY(0);
break;
case 7:
sendClearBuffer(1,0,0);
enableMMTimer();
checkXY(0);
break;
default:
qFatal("Error in winUsbDriver::setDeviceMode. Invalid device mode.");
}
}
void winUsbDriver::psuTick(){
if(dutyTemp == dutyPsu) return;
if (dutyTemp > dutyPsu){
if((dutyTemp - dutyPsu)> PSU_STEP){
dutyTemp -= PSU_STEP;
} else dutyTemp = dutyPsu;
}
if (dutyTemp < dutyPsu){
if((dutyPsu - dutyTemp)> PSU_STEP){
dutyTemp += PSU_STEP;
} else dutyTemp = dutyPsu;
}
if ((dutyTemp>106) || (dutyTemp<21)){
qDebug("PSU DUTY CYCLE TOO LARGE (could underflow on SOF)!!! ABORTING!!!");
}
usbSendControl(0x40, 0xa3, dutyTemp, 0, 0, NULL);
}
void winUsbDriver::setGain(double newGain){
if (newGain == scopeGain) return; //No update!
gainBuffers(scopeGain/newGain);
scopeGain = newGain;
if (newGain == 0.5){
gainMask = 7<<2 | 7<<10;
}
else gainMask = (unsigned short)(log2(newGain))<<2 | (unsigned short)(log2(newGain))<<10;
qDebug("newGain = %f", newGain);
qDebug("gainMask = %d", gainMask);
usbSendControl(0x40, 0xa5, deviceMode, gainMask, 0, NULL);
}
void winUsbDriver::reinitialise(bool forceAttempt){
if (!forceAttempt){
if(recoveryInProcess == true) {
//qDebug() << "Cancelling reinitialise()";
return;
}
}
recoveryInProcess = true;
unsigned char success;
DWORD errorCode = ERROR_SUCCESS;
success = UsbK_Free(handle);
if (!success){
errorCode = GetLastError();
qDebug("UsbK_Free (reinit) failed. ErrorCode: %08Xh\n", errorCode);
}
//else qDebug() << "Handle freed successfully!";
if(forceAttempt){
StmK_Free(stm_handle);
stm_handle = NULL;
}
//UsbK_ResetDevice(handle);
unsigned char initSuccess = usbInit(0x03eb, 0xa000);
//qDebug() << "usbInit(0x03eb, 0xa000) returned" << initSuccess;
if (!initSuccess){
recoverySuccess = 0;
return;
}
setDeviceMode(deviceMode);
//qDebug() << "setDeviceMode(deviceMode) returned" << deviceSuccess;
if (fGenPtr_CH1 != NULL) {
//qDebug() << "setFunctionGen(0, fGenPtr_CH1)";
setFunctionGen(0, fGenPtr_CH1);
}
if (fGenPtr_CH2 != NULL){
//qDebug() << "setFunctionGen(1, fGenPtr_CH2)";
setFunctionGen(1, fGenPtr_CH2);
}
newDig(digitalPinState);
unsigned char isoInitSuccess = usbIsoInit();
//qDebug() << "usbIsoInit() returned" << isoInitSuccess;
recoverySuccess = initSuccess && isoInitSuccess;
if(recoverySuccess){
//qDebug() << "reinitialise() completed successfully";
}
//else qDebug() << "reinitialise() completed with errors";
}
void winUsbDriver::avrDebug(void){
usbSendControl(0x40, 0xa0, 0, 0, 0, NULL);
}